Compare · last checked October 2026
Portia vs Claude Squad
Claude Squad keeps several agent sessions apart with a tmux session and a worktree each, behind one TUI. It is the lightest tool in this list, and it does nothing else on purpose.
Claude Squad is an open-source TUI (AGPL-3.0). Each agent gets a tmux session and a git worktree; the interface lists them and switches between them. It works with Claude Code, Codex, Aider, OpenCode and Amp, on macOS and Linux.
That is the whole product, by design. Planning, testing, gating and merging are yours.
Portia also lives in the terminal and also uses a worktree per worker, but it is the orchestrator rather than the multiplexer: it decides what runs when, gates each child, and lands them. portia view is read-only; it shows the run rather than driving the sessions.
| Portia | Claude Squad | |
|---|---|---|
| Who proves the work is right, and when | The tests, written first and signed off by a person before any wave; then the gate on each child's rebased head; then you, at the one PR. | You, after each session, by reading the branch. |
| Where rework shows up | At the gate, per child, before it lands: a failed exit gate retries with the failure in its brief. Siblings never touch the same file, so there is nothing to reconcile at the end. | In review, and when parallel branches conflict at merge. |
| Unit of work | An epic, or a story big enough to split into children. | A session per task. |
| What you get back | One reviewed pull request for the whole feature, with a ledger of every child and the evidence for each scenario in its description. | A branch per session. You open the PRs. |
| Where the agents run | Your machine, or a build box you open over SSH. One git worktree per child. | Your machine, in tmux. |
| Which agents | Claude Code, on your own subscription. Workers follow the target repo's CLAUDE.md, skills and settings. | Claude Code, Codex, Aider, OpenCode, Amp. |
| Planning | A wave table drawn from the tickets and shown to you first. Written back into the tickets, with each dependency as a blocker link. | Yours. |
| Tests before features | The spine writes every acceptance scenario as a failing spec. You sign off before any wave starts. | If you ask for them. |
| Isolation between tasks | A worktree, branch, port and database per child. No two children in a wave touch the same file. | A tmux session and a worktree per agent. |
| Gates before landing | Task gate; exit gate, run again on the rebased head; CI; an optional review of each child; the epic gate. | None. |
| Who merges | You. Children squash-merge into an integration branch, pinned to the commit their gate passed. Portia never merges to main. | You. |
| Tracker | Jira or GitHub Issues. | None. |
| Model choice | Per child, from its tier: a cheaper model for routine children, a stronger one for the hard ones. | Per agent. |
| Spend and capacity | Caps per worker, per wave and per epic. Waves are sized from free memory and the other runs on the machine. | Your subscriptions. |
| Unattended, and resuming | Parks with one question instead of guessing. Detached workers outlive the session, with a stall detector; portia resume picks a run back up. | Sessions live as long as tmux does. |
| Licence and price | Free. Source on GitHub. | Open source, AGPL-3.0. Free. |
What Claude Squad does that Portia doesn't
- Minimal: a TUI over tmux and worktrees, nothing to configure.
- Several agent families.
- Stays in the terminal.
Choose Claude Squad when
You want a light way to keep several agent sessions apart in the terminal and do everything else yourself.
Choose Portia when
You want the sessions planned, gated and landed for you, and the run visible in portia view.
Questions
- Is portia view the same kind of tool?
- No. portia view is a read-only browser of runs: what is running, what waits on you, what landed, and each worker's transcript. It does not drive sessions; the orchestrator does.
Sources
Claude Squad's column comes from the pages below, read in October 2026. Portia's comes from its README and reference. If a cell is wrong, open an issue.