Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Why JJ?

Isolate uses JJ (Jujutsu) because it’s fundamentally better for multi-agent workflows.

The Problem with Git at Scale

Running 8-12 agents in parallel with Git:

  • Detached HEAD — constant broken states at 4+ agents
  • Branch pollution — 8-12 branches to manage
  • Lost code — changes overwritten
  • No undo — destructive operations are permanent
  • Blocking merges — conflicts block until resolved

Git Worktrees work at 1-3 agents. They break at 4+.

Why JJ Works

FeatureGitJJ
ConcurrencyLocking required, can corruptLock-free — runs in parallel safely
UndoDestructive — reset is permanentOperation log — undo ANY operation
ConflictsBlock merges until resolvedFirst-class — commit and resolve later
BranchesRequired for everythingAnonymous — no branch names needed
StateIndex/staging is confusingWorking copy auto-committed
RebasingManual, can lose workAuto-rebase — descendants follow

Key Benefits for Multi-Agent

1. Lock-Free Concurrency

Multiple agents can run jj commands in parallel without repo corruption.

# Agent 1 and Agent 2 run simultaneously:
# Agent 1
jj describe -m "feat: part one"

# Agent 2
jj describe -m "feat: part two"

# Later, both sync without corruption
jj git fetch --all-remotes

2. Operation Log

Every operation is logged. You can undo anything.

# See operation history
jj op log

# Undo the last operation
jj undo

# Undo a specific operation
jj undo <operation-id>

3. Anonymous Workspaces

No branch names required.

# Create workspace - no branch name needed
jj workspace add feature-123

# Work normally
jj describe -m "feat: something"

# Push - bookmarks created automatically
jj git push

4. First-Class Conflicts

Conflicts can be committed and resolved later. No blocking.

# Sync - conflicts recorded, not blocking
jj git fetch --all-remotes

# Check for conflicts
jj status

# Resolve when ready
vim conflicted_file.rs
jj describe -m "resolve: merge conflict"

Why Not Git Worktrees?

ProblemWhat Happens
Detached HEADAt 4+ agents, constant broken states
Branch pollution8-12 agents = 8-12 branches
No concurrencyConcurrent worktrees corrupt repo
No operation logMistake = permanent loss

Why Not File Locking?

File locking treats symptoms, not causes:

  • Doesn’t prevent duplicate work
  • Doesn’t prevent logical conflicts
  • Doesn’t help when things go wrong
  • Doesn’t scale

We tried Agentail/MCP. It didn’t work.


Summary

JJ enables:

  • Running 8-12 agents in parallel
  • Safe auto-rebase on sync
  • Recovery from any mistake via operation log
  • Clean workspaces without branch pollution

Git at that scale:

  • Constant broken states
  • Lost code
  • Merge conflicts
  • No recovery

That’s why Isolate is built on JJ.