Run agents in parallel. Know which ones got it right.

A terminal ADE for parallel Claude Code sessions, across every repository you work in.

omatty runs your project's own check line inside each session's worktree and puts the verdict on the session's card.

brew install WilsonSousajr/tap/omatty
Read the source

v0.6.0, pre-1.0, for macOS and Linux.

A real omatty session
 projects · 2              │ parser ▎ quoted fields · quoted-fields · ✓ done <1m    │ gate · 1 failing · 2 passed · 3/3
───────────────────────────┼────────────────────────────────────────────────────────┼─ gate ───────────────────────────×
 ledger                    │stand-in agent, scripted for this demo                  │  ✓ fmt      0.0s $ test -z "$(gofm
 ✓ round to cents      <1m │                                                        │  ✓ vet      0.1s $ go vet ./...
   round-to-cents   +11 −2 │task: a comma inside double quotes belongs to the field │  ✗ test     0.3s $ go test ./...
   ✓✓✓  READY              │tracking whether the scanner is inside quotes           │      --- FAIL:
 parser                    │adding a test for a,"b,c",d                             │      TestFieldsQuotedComma (0.00s)
▎✓ quoted fields       <1m │  wrote fields_test.go fields.go                        │          fields_test.go:18: Fields
▎  quoted-fields    +21 −4 │                                                        │      = ["a" "\"b,c\"" "d"], want
▎  ✓✓✗  test               │                                                        │      ["a" "b,c" "d"]
                           │                                                        │      FAIL
                           │                                                        │      FAIL    example.com/parser
                           │                                                        │      0.182s
                           │                                                        │      FAIL
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
                           │                                                        │
 j/k move  enter output  S send  r rerun  / search  esc back  ctrl+o ? keys                                   2 sessions

Real omatty v0.6.0 running a real gate on two Go repositories: one session's tests fail, the failure goes back, and the fix goes green. The agent in each session is a scripted stand-in, so the recording is the same every time.

Starting three sessions is easy. Knowing which one to trust is not.

Three sessions in three worktrees means three terminals, three diffs and three test runs, each started by hand after remembering which directory you are in.

The slow part is not the agents. It is finding out whether what came back is any good, and most tools for running agents in parallel are built to put more work in flight, not to help you judge it.

What happens when a turn ends

  1. Claude works in its own worktree

    Each session is the real claude binary in a pane you type into, in a directory of its own. Sessions from several repositories sit side by side in one window, and every key goes to Claude except the ctrl+o leader.

  2. Your gate runs there

    The fmt, vet, lint, test and coverage line your project already uses, run in that session's worktree: on one key, or on its own when a turn ends if you turn that on. omatty proposes the line from your repository, and nothing runs until you confirm it.

  3. The verdict lands on the card

    One mark per step, and the name of the first step that did not pass. A step passes when its process exits 0; omatty never reads the output to decide.

  4. The failure goes back with one key

    S sends the failing output into the session that caused it. Read the diff, comment on the lines you disagree with, and send every comment back as one message. Comments anchor to a line's content, not its number, so they stay put while Claude edits the file.

The rest of it, by the key you press

Every keystroke goes to Claude except ctrl+o. These are the keys and commands that do the rest.

ctrl+o g
Open the gate pane and run the gate for the session you are in.
ctrl+o d
Everything the session changed, syntax-highlighted, with the lines it added that no test covers marked.
ctrl+o u
Put the session's worktree back to where its last turn began.
ctrl+o p
Push and open the pull request, or merge it when your gate and the forge's checks are both already green.
omatty discover
Pick from the repositories Claude Code already knows you use.
omatty adopt
Bring in the Claude sessions you already have in a repository.
ssh -t box omatty
It is a terminal program, so it works over SSH on a headless machine. With dtach installed, quitting detaches instead of ending your sessions.
omatty gate
Shows a project's gate, or proposes one from the repository and runs nothing until you confirm. It also reports lead time and how often the gate passes first time, and those numbers never leave your machine.

It never writes your ~/.claude/settings.json. Hooks are passed to each session it starts, and status comes from those hooks and Claude's transcripts, never from reading the screen.

What it will not do

omatty does not delegate, plan, schedule or decide for you. There is no coordinator, no agent-to-agent messaging, no unattended queue and no cloud. You stay the part of the loop that catches things; omatty's job is to get you there sooner.

Why, feature by feature

Where it stands

Everything omatty does apart from the gate, someone else also does. Here is where others are ahead of it.

WhoWhat omatty lacks
ccmanager, claude‑squadMore agents. omatty runs Claude Code today; a second agent, Codex, is in progress.
ccmanagerWindows. omatty builds for macOS and Linux only.
claude‑squadA one-line installer. omatty has Homebrew, release archives and go install, but no install script and no apt, AUR or nix package.
OrcaScrollback after a reattach. omatty repaints the pane, and the history before it is lost.
lazygit, delta, difftasticDiff rendering. They are better at it, by a wide margin.

Claude Code's own claude agents gives you one screen for your background sessions, free and in the box. If a session list is what you want, use it. Come to omatty for interactive panes, several repositories, a review loop, and a gate in each session's directory.

For one session in one repository, Claude in one pane and lazygit in another is largely enough. The case for omatty is several sessions across several repositories.

The full comparison, with its sources

Before you install

  • Pre-1.0: keys, config and the state file can still change between minor releases.
  • macOS and Linux only. No Windows.
  • Claude Code only, today. A second agent, Codex, is in progress.
  • Needs git and claude. dtach and gh are optional: without dtach, quitting ends your sessions, and without gh the pull request and issue views are off.

Questions

What is a terminal ADE?

An agent development environment that lives in your terminal: the agents run in panes, and the tools for judging their work (the diff, the review, the gate) sit around them. omatty runs the real claude binary; it does not reimplement Claude's interface.

How is this different from claude agents?

claude agents lists your background sessions, each in a worktree, and it is free and in the box. omatty's panes are interactive, span several repositories, and add a review loop and a gate that runs in each session's directory.

Does it send anything anywhere?

No. omatty talks to git, to claude and, if you install it, to gh. The two numbers it keeps about itself stay in ~/.omatty.

What does it cost?

Nothing. omatty is free and MIT-licensed. Claude Code is billed by Anthropic as usual.

Does it change my Claude Code setup?

No. It never writes ~/.claude/settings.json. Its hooks are handed to each session it starts, on that session's command line, so running omatty leaves no trace in your Claude configuration.

What if my project has no gate yet?

omatty gate <project> reads the repository and proposes the line it already uses: gofmt, go vet and go test; cargo fmt, clippy and test; ruff and pytest; or the lint and test scripts in package.json. Nothing is written or run until you confirm it.

How do I install it without Homebrew?

Download a release archive for macOS or Linux (amd64 or arm64) and check it against checksums.txt, or build it with go install github.com/WilsonSousajr/omatty/cmd/omatty@latest.

Run it, and tell us what broke.

omatty is young, and the fastest way it gets better is someone other than its author using it. Install it, point it at a repository you work in, and open an issue for anything that surprised you.

brew install WilsonSousajr/tap/omatty
Open an issue