Answering an agent shouldn't cost you your focus.

Check what your agents are doing without leaving what you are doing. Status, progress and how much context each one has left, live in the notch.

Run as many coding agents as you like. Approve a command, pick an option, or land on the exact terminal tab. The agent gets its answer straight back down the channel it asked on, so nothing is ever typed into a window you cannot see.

macOS 15 or later. No notch required.

An agent that is blocked is silent.
So is one that finished.

That is what running more than one actually costs. Nothing announces itself, so the watching falls to you: which one stopped, what it is asking, how much room it has left, whether it is still going at all. Crew Tower does the watching, at the top of the screen you are already looking at.

Right now

checkout-api checkout-api api-gateway storefront
~/checkout-api $ claude · Editing src/routes/checkout.ts · Running tests

Four tabs, two of them the same project. You can read exactly one of them at a time, and the one that has been waiting six minutes for you is not it. So you go looking, and lose what you were doing.

With Crew Tower

checkout-api
Bash · rm -rf build/
6m

It leans out of the notch instead, names the session, shows what it is asking for and how long it has been asking, and goes back up. You answer it there or you do not, and either way you knew.

  • You cannot see which one is stuck.
  • A ping is a doorbell, not an answer.
  • A finished run is one nobody is watching.
  • Context runs out with no warning at all.
  • An alert that keeps firing is one you stop reading.
  • Two agents in one folder look like one agent.

Features

Everything it does.

checkout-api 12m 42%
Bash · rm -rf build/
rm -rf build/
Deny Allow Jump

Approve without touching the terminal. The agent's hook blocks on a local socket and your decision travels back down it, resolving the prompt in place - there is no keystroke path in the app at all.

checkout-api
Bash · rm -rf build/
Deletes files recursively
rm -rf build/

It flags the dangerous ones. A destructive shell command is called out on the card before you press anything, so a fast Allow stays a safe Allow.

Deny Allow
Allow for this session
Always allow

Three ways to say yes. The button itself allows once; the menu beside it allows for the rest of that session without writing anything to disk, or always, which writes a durable rule into the project's own settings.

storefront
Which queue should the worker use?
1Use the existing jobs queue
2Create a dedicated checkout queue
3Ask me again after the spike test

Answer questions, not just permissions. When an agent asks you to choose, the options render as buttons, and your pick goes back verbatim in the shape the agent expects.

checkout-api
Plan · Rate limiting for /checkout
Steps 1.Add a token bucket keyed by IP and session 2.Read the limits from config, not constants 3.Return 429 with Retry-After when it is empty 4.Cover the refusal path in the route tests Files ·src/routes/checkout.ts ·src/lib/limiter.ts
Feedback Approve plan

Read the plan before it runs. The whole thing scrolls inside the notch. Approve it - which can drop the session straight into accept-edits mode - or type a note back for a revision, without the notch ever taking focus from the window you are in.

api-gateway 41m
Running tests · 128 passed
checkout-api api-gateway storefront dotfiles
~/checkout-api $ claude ~/api-gateway $ codex

Jump to the exact tab. Click a session and the right terminal tab comes forward - not the app, the tab - matched by the title the agent wrote for itself, so it lands correctly even when several share one directory.

checkout-api 12m 42%
Editing src/routes/checkout.ts
api-gateway 41m 88%
Running tests · 128 passed
dotfiles 2h 3m 94%
Searching for "export PATH"

Context window at a glance. A ring on every card shows how full that session's context is - amber past 70%, red past 90% - and it knows a 200k window from a 1M one, so the number is the truth rather than a guess.

checkout-api 18m
Editing src/routes/checkout.ts
storefront 6m
Done · 3 files changed
5h 41% week 78%

How much of your week is left. Your Claude or Codex subscription quota sits under the crew, named by account. It reads Claude's numbers from Claude Code's own login - no second sign-in, no password prompt.

Normally
checkout-api · Bash
Privacy mode
nothing opens, nothing plays

One switch before you share your screen. Privacy mode keeps the panel shut and every sound off; the crew keeps running and stays answerable in the terminal. It is in the menu bar, and mirroring flips it for you.

Waiting sessions rise to the top

A session waiting on you sits above every session still working. Collapsed, the bar carries one mark per agent wearing a count of that brand's sessions that want something - three Claude runs are one mark and one number, not three identical dots.

It tells you when one finishes

The minutes between an agent going quiet and you noticing are pure waste. When a working session ends its turn the notch leans out by itself, says so, and collapses again - you find out because it told you, not because you went to check.

It nudges, then it stops

A waiting session announces for eight seconds, settles into a quiet mark, re-nudges at one, five and fifteen minutes, then goes quiet for good. Never while its own terminal is frontmost, you are away, or the screen is locked - and the sounds are its own, synthesised for the app, with per-event control.

Subagents, counted

When a session fans work out, the card names the subagents it started and keeps the tally - "2 of 5 done" - so a long silence reads as progress instead of as a session that died.

Local by construction

Your code and your transcripts never leave your Mac. Sessions are read from what your agent already writes locally, and decisions travel over a unix socket restricted to your user. No account, no analytics.

Notch or no notch

On the built-in screen it hugs the physical notch. On an external monitor it becomes a floating pill with identical geometry, so both screens look like the same machine.

A character in the notch

Optional, and off if you want it off. A pixel-art crew member lives in the bar and reacts to what the sessions are doing: running while they work, alert when one needs you, pleased when the last one lands.

Survives restarts

Sessions persist. Quit mid-run and relaunch, and the crew is still there in the right state instead of a wall of stale cards.

Native, and quiet about it

Swift and SwiftUI, no Electron, no web view. Animation pauses when the bar is covered, and a mark only redraws while its session is actually working. It is meant to run all day.

Works with

Your agents, and your terminal.

Speaks natively to

Claude Code Codex Cursor Gemini CLI Qwen Code opencode

Any other agent CLI is detected while it runs and gets a card you can jump from.

Lands on the exact tab in

Terminal iTerm2 Ghostty Kitty Alacritty WezTerm Warp tmux panes

Using something else? One line with placeholders teaches it a terminal it has no built-in code for, and your rule always beats the built-in one.

Pricing

One price, one Mac, no subscription.

Crew Tower

Early bird

Bought once, yours for good.

$9.99 was $14.99

One time, not a subscription

Included

  • Every feature, nothing held back
  • License for one Mac
  • Updates included, no upgrade fee
  • 30 days, money back

Download it first. It asks for a key when you are ready.

macOS 15 or later. Terms and Privacy.

Questions

What people ask first.

Do I need a Mac with a notch?

No. On a display without one - an external monitor, or an older MacBook - Crew Tower draws a floating pill at the top centre with exactly the same geometry, so it behaves identically everywhere.

Does it send keystrokes to my terminal?

Never. There is no keystroke path in the app at all. Decisions travel back over the same local socket the agent's hook is waiting on. If a prompt has no decision channel, the only fallback offered is jumping you to the terminal.

What happens if Crew Tower is not running?

For Claude Code, Codex and Cursor, exactly as they did before. Every failure path in the hook exits cleanly meaning "no decision", so the terminal's own prompt stands and a session can never hang waiting on an app that is not there.

Gemini CLI and Qwen Code are treated differently, on purpose. Both read an empty hook response as approval, so a silent Crew Tower would auto-approve every command they ran. Instead the hook returns an explicit denial that names the reason, so nothing runs unreviewed.

Can I try it first?

Not with a trial, and that is on purpose. A tool like this only shows its worth after a few days of your own agents doing your own work, and no seven day countdown fits that honestly.

So the money back is the trial instead, and it is a long one. Buy it, use it properly, and if it is not for you write to us any time in the first 30 days and you get the whole $9.99 back. No reason needed. The refund policy is one short page.

Does any of my code leave the machine?

No. Crew Tower reads what your agent already writes locally and talks to it over a unix socket restricted to your user account. Your code, your prompts and your transcripts are never sent anywhere.

Crew Tower does make a few network calls, and none of them carry your work. It looks for a new version once a day. It checks your licence is still valid at most once a day. And if the usage strip is switched on, it asks Anthropic how much of your own subscription quota is left, using the credentials Claude Code has already stored on your Mac.

That is the complete list. No account, no analytics, and nothing about what you are building. The privacy page names every file it reads and every endpoint it calls.

What does it change on my machine?

One thing. Activating writes the observation hooks into your agent's own config - ~/.claude/settings.json, ~/.codex/hooks.json, ~/.cursor/hooks.json and the equivalents. Only the agents you actually have are touched, a backup is written next to each file first, and Crew Tower repairs anything that drifts on every launch.

Nothing is written before you activate, so an unlicensed copy leaves no trace in anyone's config. Remove the app and the hooks take themselves out again, leaving hooks you added yourself exactly as they were. There is no installer, no background daemon and no login item you did not ask for.

Why does it want Accessibility permission?

Only to bring the correct terminal tab forward when you click a session. Approving, denying and answering need no permissions at all - decline it and everything except jumping still works.

Can I run more than one agent in the same project?

Yes, and that is the case it was built for. Sessions are identified by the title the agent writes for itself, so several agents sharing one directory stay distinguishable and jumping still lands on the right tab.

Put the crew where you are already looking.

Under 5 MB, signed and notarised by Apple. It opens straight away and asks for a key when you are ready.

One time, not a subscription. 30 days, money back, no reason needed.