Multiple AI Agents, One Repo
You start a few agents on different tasks. As they work, you want to know: what has each one done so far? When one finishes, is the result good enough to ship? Does it conflict with what the others are working on?
Running agents in parallel is the easy part — most tools now support isolated folders. Keeping up with what they produce is harder. VisualJJ's change tree shows all workspace activity in one view: what each agent has changed, and when it's done — the edits ready to review, shape, and ship.
Setting Up Workspaces
JJ workspaces are lightweight working copies that share the same repository. In VisualJJ, open the Command Palette and run Add Workspace. Give it a short name — one, two, three. VisualJJ creates each workspace as a sibling folder: if your repo is at ~/projects/myapp, the workspace appears at ~/projects/myapp.one.
Each workspace shows up in the change tree with a label showing its name. These workspaces can be long-lived — you don't need to recreate them for every task. When one task is done, start the next one in the same workspace.
Running Agents
Open a terminal tab for each workspace folder and start your AI agent. You can right-click a workspace label in VisualJJ and use Copy Workspace Path to get the path quickly:
cd ~/projects/myapp.one
claudeFor unattended execution, consider running agents in a sandbox. A sandbox lets the agent run for long stretches without needing you to approve each action, while ensuring it can only write to its own workspace folder.
For each agent, describe the task and discuss the plan. Once the approach looks right, let it execute — running tests, iterating on the implementation, and fixing issues on its own. Once you've reviewed and shipped the work (see below), run /clear in the agent's terminal and start the next task in the same workspace.
Seeing What's Happening
With Keep all workspaces updated enabled in Project Info, VisualJJ periodically snapshots every workspace so you can see what each agent has done. Enable Auto-describe changes to have VisualJJ generate descriptions from the diffs automatically. The tree updates as agents work:
Click any workspace's change to see the edits, browse the file list, or open the diff view — without interrupting the agent or switching terminals.
Reviewing and Shaping
When an agent finishes, its output is usually a single change with everything bundled together. Before shipping, you'll often want to shape it into clean, reviewable pieces.
For example: an agent added OAuth token refresh logic but also reformatted three unrelated files. Right-click the change, click Split, select the formatting lines, and move them to a separate change. Now you have two focused changes instead of one messy one — one for the feature, one for formatting. Describe each, and they're ready for review.
The full workflow:
- Inspect the edits — click the workspace's change to see what was modified
- Jump there to test — click the location button to jump on top of the agent's change, then run the app and verify
- Shape as needed — split, combine, reorder, describe. Move changes anywhere in the tree with drag & drop
- Create a request — submit for review on GitHub
- Ship — land it on main
If a change isn't useful, abandon it. The workspace stays — just start the next task. You can also drag a workspace to a different point in the tree — for example, rebase it on top of another agent's completed work.
Tip: Alt+click on a workspace label to start a new change in that workspace. This is useful when you want to split an agent's work — for example, once the first part is done, start a new change and give instructions for the second part. You can squash the changes together later or keep them separate.
Why JJ Makes This Work
With Git, running parallel agents means managing separate clones or juggling worktrees with branches. Each worktree is isolated — you can't see what's happening in another one without switching to it. Rebasing between them is manual and error-prone. Discarding failed work means deleting branches and cleaning up.
With JJ, workspaces share the same commit graph. Creating one is a single command. All agent work is visible in one unified tree. Moving changes between workspaces is drag & drop in VisualJJ. Discarding is instant. There's nothing to clean up.
The combination of JJ's lightweight workspaces and sandboxing gives you parallelism with safety — multiple agents working simultaneously, each isolated, all visible from one place.
Getting Started
- Install VisualJJ if you haven't already
- Create a workspace: Command Palette → Add Workspace
- Open the workspace folder in a terminal and start your agent
- Enable Keep all workspaces updated and Auto-describe changes in Project Info
Once you get used to this workflow, going back to running one agent at a time feels slow.