Mission control for your AI coding agents.

Run Claude Code, Codex, OpenCode, or any CLI you bring, side by side in real terminals. Anacrux tells you, deterministically, which agent is working, which is waiting on you, and which just finished.

macOS 14+ · Free & open source · Your CLIs, your PATH, untouched

Anacrux
Claude Code
Codex
OpenCode
Cursor
Pi
$_

Orchestrates the agents & tools you already use

Claude Code Codex CLI OpenCode Cursor Agent Pi Gemini CLI Copilot CLI ElevenLabs voice Git context MCPModel Context Protocol $_Any CLI you bring

Running six agents is easy.
Knowing which one is stuck waiting for you. That's the hard part.

Terminal tabs and tmux panes show you scrollback, not state. An agent that hit a permission prompt forty minutes ago looks exactly like one that's deep in a refactor. Anacrux was built around that one problem: visibility when you have 4–6 agents running at once.

The grid

Every agent. One glance.

Real embedded terminals, not previews, tiled in a mission-control grid or one big focus view. Switching never kills a session or loses scrollback.

Anacrux Focus ⌘⇧1Grid ⌘⇧2
Fix auth bugWorking

              
Review PR #142Working

              
MigrationsWaiting for you

                
Bash npx prisma migrate deploy Approve esc Deny
Write e2e testsIdle

              

The status engine

No guesswork. Hooks.

Most tools scrape terminal output and guess. Anacrux launches Claude Code with a --settings overlay that injects lifecycle hooks. Every event lands in a per-session NDJSON stream that Anacrux tails live. Status isn't inferred. It's reported.

claude --settings overlay

Hooks injected at launch, merged with your settings. Nothing on disk is modified.

{ }

Lifecycle events

UserPromptSubmit · PreToolUse · Notification · Stop, appended to a per-session NDJSON file.

tail -f

Live tailer

Anacrux tails the stream and maps every event to an exact state transition, in real time.

Deterministic status

Working · Waiting for you · Idle · Exited, plus the attention queue, dock badge and notifications.

01

Hooks · authoritative

Claude Code sessions report their own lifecycle. Stop means idle. AskUserQuestion means waiting. Exact, every time.

Claude
02

Screen-state · per-agent regex

Codex, OpenCode and Cursor status is read from spinner and prompt patterns in the rendered viewport, with idle debounce.

CodexOpenCodeCursor
03

Activity · last resort

Plain shells and unknown CLIs fall back to output-activity heuristics: recent output means working; sustained work going quiet flags attention.

$_

MCP observability

See every MCP call your agents make.

Hook events on mcp__* tools feed a live per-session inspector: server chips with call and error counts, and a feed of every tool call with arguments, responses and latency. When an MCP server misbehaves, you see it, highlighted in red, with the payload that caused it.

  • Per-server call & error counters
  • Arguments and responses, pretty-printed
  • Latency on every call
  • Error highlighting the moment it happens
MCP Inspector Fix auth bug
github 14 postgres 6 sentry 3 1 err

Everything else

Built for the way you actually run agents.

Needs-attention queue

Agents that go quiet or hit a prompt while you're elsewhere get pinned to the sidebar, counted on the dock badge and the menu-bar extra. ⌘⇧J jumps to the next one.

Two-tier notifications

"Needs your input" notifies immediately. "Turn finished" only when it ran ≥30s and you're unfocused. Click to jump to the session.

Resume sessions

Discovers recent Claude Code sessions per directory from ~/.claude/projects and relaunches them with --resume.

Claude usage meter

Opt-in 5-hour and weekly rate-limit bars, straight from the same endpoint Claude Code's statusline uses.

5-hour

Auto-continue runs

Per-session unattended loop: keep prompting "continue" until the agent reports DONE or the iteration budget runs out.

Bootstrap commands

Per-project setup (npm install, Docker, env vars) runs before the agent launches. Failures drop you into a shell.

Voice announcements

Optional spoken turn completions, "Hey, Fix auth bug just finished", powered by ElevenLabs with a system-voice fallback.

ElevenLabsElevenLabs

Persistent terminals, real PTYs

Each session is the actual CLI in a SwiftTerm PTY through your login shell. Terminals are persistent native views; switching focus/grid never kills a process or loses scrollback. Quit and relaunch: sessions restore and Claude conversations resume.

$_new session · custom agent

        

Bring your own CLI

If it runs in a terminal, Anacrux can run it.

Agents launch through zsh -l, so whatever's on your PATH just works. Save profiles for the variants you use, like claude --model opus, codex --full-auto, or your own Python harness, and launch them as one-click chips. Every session gets its own port, session ID and events stream via environment variables.

ANACRUX_SESSION_IDANACRUX_EVENTSANACRUX_PORTTERM_PROGRAM=Anacrux
T

New session

1–9

Jump to session

J

Next needing attention

1

Focus view

2

Grid view

Stop babysitting terminals.

Download Anacrux, open it next to your repos, and give every agent a name, a color and a status you can trust.

macOS 14+ · Apple Silicon & Intel · ~10 MB