DEV Community

Cover image for I Run 15 AI Clones of Myself in Parallel — And It’s Not Even My Final Form
Phil Rentier Digital
Phil Rentier Digital

Posted on • Originally published at rentierdigital.xyz

I Run 15 AI Clones of Myself in Parallel — And It’s Not Even My Final Form


TL;DR: Boris Cherny runs 15 AI clones simultaneously across terminal, web, and mobile using separate git checkouts to avoid conflicts. He uses session teleportation to seamlessly move tasks between devices and platforms based on optimal use cases. This parallel AI workflow lets him conduct an orchestra of code-writing agents while maintaining organization through smart file system architecture.

The Creator of Claude Code Just Dropped His Workflow, and Developers Are Losing Their Collective Minds

If you’ve ever felt productive running two terminal windows at once, I have some news for you: you’re playing checkers while Boris Cherny is playing 4D chess with 15 AI agents running simultaneously across three different devices.

Boris is the creator of Claude Code at Anthropic — yes, the guy who built the tool. And when he casually dropped a Twitter thread explaining his workflow, the developer community collectively spat out their artisanal coffee and started taking notes.

What follows is a complete breakdown of his setup. Prepare to feel both inspired and personally attacked by your own inefficiency.


The Setup: One Man, Fifteen Claudes, Zero Chill

Let’s start with the numbers that broke Twitter:

  • 5 Claude instances running in terminal (numbered tabs 1–5, like a proper psychopath)
  • 5–10 Claude sessions on claude.ai/code in the browser
  • Multiple sessions spawned from his iPhone throughout the day

That’s 15+ parallel AI sessions. Across three platforms. At the same time.

“But wait,” you say, “won’t they conflict? Won’t chaos ensue?”

Oh, sweet summer child.

Boris has built an entire operating system around this chaos. Each Claude session handles different tasks, and he uses system notifications to know when one needs input. Crucial detail from the comments: Boris uses 5 separate git checkouts of the same repo. Each Claude works on its own copy, avoiding merge conflicts entirely. No magic — just smart file system architecture.

It’s like being a conductor of a 15-piece AI orchestra, except the orchestra writes production code.

Boris uses 5 separate git checkouts of the same repo. Each Claude works on its own copy, avoiding merge conflicts entirely. No magic — just smart file system architecture.

This invite link gives you one Week of Claude https://claude.ai/referral/eTWMC0AWNg
(only 2 remaining, as writing

The Platform Strategy

Platform Best For
Terminal Active coding, file edits, commands
Web Code review, documentation, visual diffs
iOS Starting tasks on the go, checking progress

The secret sauce? Teleportation. Not the Star Trek kind — the --teleport flag that lets you move a session between devices seamlessly. Start a task on your phone during your morning coffee, teleport it to your terminal when you sit down, then background it to the web when you need to focus on something else.

> analyze this entire codebase and generate documentation &

claude --teleport <session-id>
Enter fullscreen mode Exit fullscreen mode

This is the developer equivalent of passing a basketball to yourself through a portal.


Model Choice: Bigger Is Actually Faster (Wait, What?)

Here’s where Boris drops some counterintuitive wisdom that will make your optimization instincts weep:

He uses Opus 4.5 with extended thinking for everything.

“But Opus is slower!” screams the inner voice of every developer who has ever benchmarked response times.

Boris’s argument? The math works out differently when you factor in human time:

Sonnet (faster model):
  Request: 30 seconds
  × 5 iterations (steering, correcting)
  = 2.5 minutes + your sanity

Opus (slower model):
  Request: 2 minutes
  × 1 iteration (gets it right first time)
  = 2 minutes + your sanity intact
Enter fullscreen mode Exit fullscreen mode

The key insight: the bottleneck isn’t AI processing time — it’s human time spent steering and correcting. Opus requires less hand-holding, makes better tool use decisions, and generally doesn’t need you to say “no, not like that” seventeen times per task.

It’s like the difference between a junior developer who’s fast but needs constant code review, versus a senior who’s slower but ships production-ready code. Except the senior is an AI and you can run fifteen of them in parallel.


CLAUDE.md: Your Codebase’s Collective Memory

This is where it gets genuinely brilliant.

The Claude Code team maintains a single CLAUDE.md file, checked into git, that the entire team contributes to multiple times per week. Think of it as a living document that captures every "don't do that" lesson Claude learns.

Claude makes mistake →
  Developer notices →
    Add pattern to CLAUDE.md →
      Commit to git →
        Claude reads it next session →
          Claude never makes that mistake again
Enter fullscreen mode Exit fullscreen mode

It’s like having a new developer who never forgets anything you tell them and shares that knowledge with every other instance of themselves across time and space.

What Goes In CLAUDE.md?

Boris revealed the actual specs: their CLAUDE.md is 2.5k tokens and covers:

  • Common bash commands
  • Code style conventions
  • UI and content design guidelines
  • How to do state management, logging, error handling, gating, and debugging
  • Pull request template

That's it. Not a novel — a focused reference document.

## Project Structure
- /src contains application code
- /tests mirrors /src structure

## Common Commands
- npm run build: Build the project
- npm run test: Run test suite
- npm run lint: Run linter with auto-fix

## Our Conventions
- We use TypeScript strict mode everywhere
- Prefer const over let, always
- Function names should be verbs

## Things Claude Has Done Wrong Before
- Don't use deprecated APIs (here's the list...)
- Never modify the .claude/ directory directly
- Always run tests before suggesting a commit
Enter fullscreen mode Exit fullscreen mode

The team even uses a GitHub Action to automatically tag @.claude during code reviews, asking it to update the CLAUDE.md based on patterns found in PRs. Every code review becomes a learning opportunity that compounds over time.

As one observer noted: “Every mistake becomes a rule. The longer the team works together, the smarter the agent becomes.”

It’s basically RLHF, but conducted by your entire engineering team through code reviews.


The Two-Phase Workflow: Think First, Ship Later

Boris doesn’t just yolo his way through prompts. He’s developed a disciplined two-phase approach:

Phase 1: Plan Mode (Interactive)

[Shift+Tab][Shift+Tab] — enters Plan mode

You: "I need to add OAuth authentication"

Claude: "Here's my plan:
1. Install passport-oauth2
2. Create OAuth config file
3. Add /auth/login and /auth/callback routes
4. Update user model for OAuth data
5. Create auth middleware
6. Update frontend with login button
7. Add tests"

You: "Looks good, but add refresh tokens too"

Claude: *updates plan*
Enter fullscreen mode Exit fullscreen mode

Phase 2: Execute Mode (Autonomous)

Once the plan is approved, Boris switches to auto-accept mode. Claude then executes the entire plan, often in one shot.

The philosophy is simple: invest time upfront in planning, save way more time in execution. It’s the AI-powered version of the carpenter’s adage: measure twice, cut once. Except here it’s: plan interactively, code autonomously.

A good plan is really important, Boris emphasizes. And he’s right — a well-structured plan means Claude can chain together dozens of file edits without needing human intervention at every step.


Slash Commands: Because Typing Is For People With Time

Boris clarified in the comments: “Skills = slash commands, I use them interchangeably.” Same thing, different names.

Boris has automated every “inner loop” workflow into slash commands that live in .claude/commands/:

<!-- .claude/commands/commit-push-pr.md -->
---
description: Commit changes, push to remote, and create PR
---

!`git status --short`

!`git branch --show-current`

# Recent Commits
!`git log -5 --oneline`

Based on git status above:
1. Stage and commit changes with descriptive message
2. Push to remote
3. Create PR with clear title and description
4. Request review from appropriate team members
Enter fullscreen mode Exit fullscreen mode

The inline bash (those ! commands) pre-computes context so Claude doesn't need to ask. It sees the git status, knows the current branch, understands the recent history — and can make intelligent decisions immediately.

Boris uses /commit-push-pr dozens of times every day. That's dozens of multi-step git workflows reduced to seven keystrokes.

Other commands from his setup:

  • /quick-commit — Stage all and commit with auto-generated message
  • /test-and-fix — Run tests, fix failures, repeat until green
  • /review-changes — Review uncommitted changes and suggest improvements
  • /first-principles — Deconstruct problems to fundamental truths

These are checked into git and shared across the team. Everyone benefits from everyone’s workflow optimizations.


ghostty in action

Subagents: Specialized AI Colleagues

Beyond slash commands, Boris uses subagents — specialized AI assistants with their own system prompts, tool access, and separate context windows.

Agent Purpose
code-simplifier Simplifies code after Claude is done working
verify-app Thoroughly tests the application works correctly
code-architect Design reviews and architectural decisions
build-validator Ensures project builds correctly for deployment
oncall-guide Helps diagnose and resolve production issues

Think of them as specialized experts you can call in for specific tasks. The code-simplifier runs after every feature to reduce complexity. The verify-app agent has detailed instructions for testing Claude Code end-to-end.

The key difference from slash commands: subagents have their own context window, so they don’t pollute your main conversation. They’re truly separate workers handling specific jobs.


Hooks: The Ultimate Automation Layer

Claude Code supports hooks — automated actions that run at specific points in the workflow. Boris uses a PostToolUse hook to auto-format code:

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit|Write",
      "hooks": [{
        "type": "command",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
      }]
    }]
  }
}
Enter fullscreen mode Exit fullscreen mode

Every time Claude edits or writes a file, Prettier automatically formats it. This catches the last 10% of formatting issues, preventing CI failures without any human intervention.

Without hook:

Claude writes code → Push to PR → CI fails on formatting →
  Fix formatting → Push again → CI passes
Enter fullscreen mode Exit fullscreen mode

With hook:

Claude writes code → Hook formats → Push to PR → CI passes ✓
Enter fullscreen mode Exit fullscreen mode

It’s the difference between cleaning up after your robot vacuum and having a robot that cleans up after itself.


The Permission System: Security Without Friction

Boris explicitly avoids --dangerously-skip-permissions. Instead, he uses /permissions to pre-allow specific safe commands:

{
  "permissions": {
    "allowedTools": {
      "Bash": {
        "allowedCommands": [
          "git status",
          "git diff",
          "git commit",
          "npm test",
          "npm run build",
          "npm run lint"
        ]
      },
      "Edit": { "allowed": true },
      "Read": { "allowed": true }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

This gives you the convenience of auto-approval for operations you know are safe, while still requiring explicit permission for anything unusual. It’s like giving your AI a set of house keys instead of the nuclear launch codes.


MCP Integration: Claude’s Connection to Everything

Claude Code uses MCP (Model Context Protocol) to connect to external tools. Boris’s setup includes:

  • Slack — Post updates, notifications, search conversations
  • BigQuery — Run analytics queries via bq CLI
  • Sentry — Fetch error logs directly
  • iOS/Android simulators — for mobile app verification (yes, there are MCPs for that)
{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-...",
        "SLACK_TEAM_ID": "T..."
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Now Claude can do things like:

> Deploy to staging and notify the team in #deployments

Claude: [Runs deployment]
Claude: [Uses Slack MCP server]
Claude: [Posts to #deployments channel]
✓ Deployment complete, team notified
Enter fullscreen mode Exit fullscreen mode

The .mcp.json file is checked into git. The entire team gets these integrations automatically.


The Ralph Wiggum Method: For When You Need AI That Just Won’t Quit

For very long-running tasks, Boris uses something called the Ralph Wiggum plugin. Named after the Simpsons character who cheerfully persists despite all obstacles, it creates an iterative loop that keeps Claude going until a task is actually complete.

The concept:

Iteration 1:
  Claude: [Implements basic API]
  Claude: [Tries to exit]
  Stop Hook: [Tests failing - block exit]
  Stop Hook: [Feed same prompt back]

Iteration 2:
  Claude: [Sees test failures]
  Claude: [Fixes bugs]
  Claude: [Tries to exit]
  Stop Hook: [Some tests still failing - block exit]

Iteration 3:
  Claude: [Fixes remaining bugs]
  Claude: [All tests passing]
  Claude: [Outputs <promise>COMPLETE</promise>]
  Stop Hook: [Completion promise detected - allow exit]
✓ Done!
Enter fullscreen mode Exit fullscreen mode

For these long-running autonomous sessions, Boris uses either --permission-mode=dontAsk or --dangerously-skip-permissions — but only in sandboxed, isolated environments.


The Golden Rule: Give Claude a Verification Loop

Here’s Boris’s most important tip, and he saved it for last:

Give Claude a way to verify its work. If Claude has that feedback loop, it will 2–3x the quality of the final result.

This is the secret sauce that makes everything else work.

Without verification:

Claude writes code → Pushes to PR →
  CI fails → Bugs in production →
    Manual debugging required
Enter fullscreen mode Exit fullscreen mode

With verification:

Claude writes code → Tests it →
  Sees failures → Fixes them →
    Retests → Iterates until passing →
      High-quality code
Enter fullscreen mode Exit fullscreen mode

Verification looks different for each domain:

  • CLI tools: Run the command, check output
  • APIs: Make requests, verify responses
  • UI: Use Claude’s Chrome extension to visually test
  • Backend: Run test suite, check coverage
  • Mobile apps: Use iOS/Android simulator MCPs to test on device iterates until the code works and the UX feels good.

Invest in making verification rock-solid. It’s the single highest-leverage improvement you can make to AI-assisted development.


The Full Stack: Everything Together

Here’s Boris’s complete setup in one view:

  1. 15+ Parallel Sessions — Terminal, web, iOS
  2. Opus 4.5 + Extended Thinking — Best model, faster overall
  3. Team CLAUDE.md — Shared knowledge base, version controlled
  4. GitHub Action — Auto-update CLAUDE.md from PRs
  5. Plan Mode → Auto-Accept — Two-phase workflow
  6. Slash Commands — Automate repeated workflows
  7. Subagents — Specialized AI assistants
  8. PostToolUse Hook — Auto-format code
  9. Smart Permissions — Pre-allow safe commands
  10. MCP Integration — Connect to Slack, BigQuery, Sentry
  11. Ralph Wiggum — Iterative loops for long tasks
  12. Verification — Most important: feedback loops everywhere

What This Means for the Rest of Us

The reaction to Boris’s thread has been… intense.

“If you’re not reading the Claude Code best practices straight from its creator, you’re behind as a programmer,” wrote one industry observer.

“This is potentially their ChatGPT moment,” declared another.

The excitement stems from a paradox: Boris’s workflow is surprisingly simple, yet it allows a single human to operate with the output capacity of a small engineering department.

In the last thirty days, Boris landed 259 PRs — 497 commits, 40k lines added, 38k lines removed. Every single line was written by Claude Code + Opus 4.5.

That’s not a workflow. That’s a force multiplier.


Getting Started (Without Burning Down Your House)

You don’t need to implement everything at once. Start small:

  1. Create a CLAUDE.md — Document your project’s conventions
  2. Set up one slash command — Automate something you do daily
  3. Add verification — Give Claude a way to test its work
  4. Configure permissions — Pre-allow safe commands
  5. Add a hook — Auto-format code on save

Then iterate. Add more slash commands as patterns emerge. Create subagents for specialized tasks. Expand your MCP integrations.

The goal isn’t to match Boris’s setup — it’s to build your own compound learning machine that gets better every day.


The Failure Rate Nobody Talks About

When asked what percentage of sessions he abandons, Boris replied: “Maybe like 10–20%?”

Even the creator of Claude Code doesn’t have a 100% success rate. Some sessions just don’t work out. That’s normal. The productivity gains come from the 80% that do.

Final Thoughts

What Boris has demonstrated isn’t just a productivity hack. It’s a glimpse into a different model of software development entirely.

For years, “AI coding” meant autocomplete — a faster way to type. What Boris shows is that AI can now function as an operating system for labor itself.

“Read this if you’re already an engineer and want more power,” summarized one commenter.

The tools to multiply human output by 5x are here. They require only a willingness to stop thinking of AI as an assistant and start treating it as a workforce.

The programmers who make that mental leap first won’t just be more productive. They’ll be playing an entirely different game.

And everyone else will still be typing.


Originally based on Boris Cherny’s Twitter thread. Boris is the creator and head of Claude Code at Anthropic.


Resources

Top comments (0)