Conduct a fleet of AI coding agents

Maestro is a native macOS terminal multiplexer built for parallelism: run many Claude Code and Codex sessions at once, see every agent's status at a glance, and dispatch new work in plain language — without ever blocking. Spend your time building, not managing terminals.

curl -fsSL https://maestroterminal.com/install.sh | sh

One command installs the app + CLI — signed, notarized, no Gatekeeper dialog. macOS · Apple Silicon · free

Maestro — ~/dev/api
~/dev/api on master
claude "make the retry test deterministic"
● Reading test/retry.spec.ts
● Patching backoff to injectable clock
● Running tests…
✓ 214 passed in 3.9s
Committed 3f2a9c1 · opening PR #482
⌘ maestro ›fix the flaky test in ci and open a PR…run #3 · workingrun #2 · done

Sound familiar?

Running a fleet of AI agents shouldn't feel like this.

You quit the terminal — or it crashed, or auto-updated, or the machine rebooted — and every running Claude and Codex session vanishes. Now it's a stressful scramble to track them all down and pick up where you left off.

A dozen agents across five projects, and you can't remember which one is doing what — or which tab it's buried in.

Still working? Wedged? Finished ten minutes ago? You're clicking tab to tab just to find out each one's status.

One agent has been waiting on your answer the whole time — and you never noticed, so it sat idle instead of shipping.

Maestro solves all of it. Sessions survive any restart and truly resume, every agent's status is one glance away, and the ones that need you come find you. Stop babysitting terminals — focus on the important work, run more tasks in parallel, and get the most out of your AI.

Continuity

Quit without fear. It keeps going.

Relaunch and everything is back: windows, the session tree, scrollback, and true Claude/Codex resume. Better still, agents carry on by themselves — with auto-continue, an interrupted session resumes and keeps working after a restart, no prompt needed. Even usage limits don't stop you: Maestro flags a rate-limited agent, counts down to its reset, and continues the instant your quota is back — so long-running work finishes while you're away. ⌘⇧T reopens closed tabs, and the terminal keeps up with WebGL rendering, ⌘F find, ⌘P palette, font zoom, split panes, and light/dark themes — signed, notarized, and self-updating.

refactor billing
rate limit · resumes in 2:14:00
limited2:14:00opus 4.8 · 71k
migrate schema
claude · master · paused
paused1:20sonnet 5 · 38k
write integration tests
codex · master · working
working0:12gpt-5 · 22k
↩ auto-continues on restart & at limit reset
Shelves

Put work aside — bring it right back.

Not every session needs to be in your face. Stash the ones you're pausing onto a visible shelf; archive the finished ones into closed history to clear the sidebar. Bring any of them back — with the agent, resumed — in one click or a single CLI verb. Closing a tab archives it by default behind an undo countdown, and fuzzy search finds anything you've shelved.

Stashed
spike: websocket transportunstash ↩
old migration attemptunstash ↩
Archived · closed history
fix flaky ci test ✓restore ↩
bump deps to latest ✓restore ↩
Situational awareness

Every agent, one glance.

Projects group sessions into a lineage tree of status cards — working, waiting, background — each with a live timer. When an agent needs an answer (prompt) or has work ready to check (review), the card flips state, an unread dot lights up, a live terminal popup appears, and a native macOS notification takes you straight to the right tab. A notification center keeps the history. Tabs show the model and context size at a glance.

fix flaky ci test
claude · master · working
working2:14opus 4.8 · 82k
refactor auth
Approve the schema migration?
prompt0:47opus 4.8 · 61k
migration plan
Ready for you to review
review1:05sonnet 5 · 44k
docs sweep
waiting on your input
waiting0:32gpt-5 · 18k
The vocabulary

Every state has a color.

One glance at a card's pill tells you exactly what an agent is doing — and whether it needs you.

workingactively building
backgroundrunning a background task
promptneeds your answer to continue
reviewwork is ready for you to check
waitingblocked, waiting to continue
donefinished its turn
pausedinterrupted — resumes on demand
limitedhit a usage limit; counting down to reset
needs you to sign in
idlequiet — nothing running
Notifications

The ones that need you come find you.

The instant an agent wants your input or finishes, Maestro fires a native macOS notification — click it and you land on the exact tab. A live terminal popup mirrors the session so you can answer without hunting for it. Nothing slips through: a built-in notification center keeps the full history with one-click restore and mark-as-read, unread tabs light up in the sidebar, and ⌘U jumps to the next thing waiting on you. Choose exactly which states notify you in settings.

MAESTRO · now
refactor auth
Agent needs your answer · prompt
MAESTRO · 1m ago
fix flaky ci test
Run finished · done ✓
🔔 notification center keeps the history · ⌘U next unread
Task structure

Big tasks become trees, not tab soup.

Every session can have children: spawn a child agent for a subtask, a sibling for parallel work — ⌘T and ⌥⌘T from the keyboard, or --child and --sibling from the CLI. The explorer shows the whole lineage per project, and closing a parent can cascade through its finished subtree in one stroke. Agents structure their own work the same way: a session fans its subtasks out into child sessions and reports back up the tree.

build auth feature
claude · master · working
working4:02opus 4.8 · 96k
write unit tests
claude · master · working
working1:12sonnet 5 · 27k
fix fixtures
Overwrite snapshot?
prompt0:09sonnet 5 · 9k
api docs
Ready for you to review
review0:41gpt-5 · 33k
Orchestration

Type it. It's already running.

An always-on natural-language field sits at the bottom of every window. Each query dispatches a non-blocking orchestration run to a warm-pooled agent — the field is ready again the instant you hit Enter. Runs stream live status chips and report back when they finish.

⌘ maestro › add rate limiting to the login route…
run #7 · working 0m48 run #6 · done
One control plane

The UI, the CLI, and the agents share one language.

A single maestro binary over a unix socket drives everything from the terminal — open, focus, move, split, stash, and close sessions, swap an agent's model, even read and change settings. No reaching for the mouse. Everything the app can do, a script can do — and the agents can too: they spawn siblings, fan out subtasks, and manage their own sessions.

maestro list                        # every session as JSON
maestro open --kind claude --child  # nest an agent under this one
maestro send "api tests" "npm test"
maestro swap "api tests" --to codex # switch the agent, keep the tab
maestro settings set terminal.fontSize 14

Read the CLI docs →

Get Maestro

macOS on Apple Silicon · v0.2.3

curl -fsSL https://maestroterminal.com/install.sh | sh
Download Maestro-arm64.dmg

Signed & notarized — launches straight from the dmg, no Gatekeeper prompt, and auto-updates itself after that. all releases