Works with
Gemini CLI in your MacBook notch
CrewTower shows your Gemini CLI sessions in the notch: what each one is doing, how long it has been at it, and which one is waiting on you. When it stops for a decision, you answer from the notch rather than from the terminal.
A session you do not have to keep in view
A CLI agent is only as unattended as your willingness to keep checking on it. In practice that means a terminal window you leave uncovered on a corner of the display, or a habit of tabbing over every few minutes to see whether anything has happened yet.
CrewTower replaces both. The session lives in the notch, at natural size, doing nothing until there is something to say. When the agent needs you, its card comes forward with the exact call on it.
The call, not the raw JSON
Tool inputs are parsed once when they arrive, and the notch renders that typed shape rather than a blob of JSON. You see the file, the command, the parameters that matter.
A tool with no bespoke card falls back to a generic one carrying the flattened parameter list, so an unfamiliar call still shows what it will do, and still offers the same answer the terminal offers. Destructive shell commands are flagged on the card before you press anything.
Answering over the socket, not the keyboard
The agent's hook blocks on a local Unix socket while it waits for a decision, and CrewTower answers over that same socket. The prompt resolves in place: nothing is focused, nothing is typed. There is deliberately no synthetic-keystroke path anywhere in the app.
What CrewTower can do for a given session depends on what that agent exposes. Gemini CLI is spoken to natively, with full status and decision support where the agent offers the channel for it - but a visible session does not by itself mean every prompt can be answered from the notch. Where no decision channel exists, the fallback is Jump.
Two ways to say yes: once, or every permission request for the rest of the session, a grant CrewTower keeps itself rather than a rule written into Gemini CLI's settings.
Land on the exact tab
Jump focuses the place a session belongs to: the exact tab in Terminal, iTerm2 (down to the split) and Ghostty; the pane in WezTerm, tmux and herdr, and in kitty with its remote control on; Warp's tab through the focus link Warp provides; and the window in Alacritty, which has no tabs. A terminal with no built-in support can be taught with one line containing placeholders, and a custom rule always beats the built-in one. How Jump finds the exact tab is written up terminal by terminal.
macOS Accessibility permission is used for Jump in the terminals that need it, such as Ghostty and Alacritty, and to tell whether you are already looking at a session. Answering from the notch does not.
Setup is one launch
Hooks are configured the first time CrewTower runs, and cleaned up when you remove the app.
# nothing to run. Open CrewTower once, then start Gemini CLI
# the way you always do:
geminiNothing leaves the Mac
Sessions are read from what the agent already writes locally, and decisions travel over a local socket. There are no accounts, nothing to log into, and no analytics in the app. Transcripts, prompts and diffs never leave the machine, and no session is visible from another one.
What it does not do
CrewTower is a status and decision surface. Its usage meter shows how much of your Claude Code or Codex subscription window is left, and how much context each session has left, but it keeps no token or cost history by day, session or model, and shows no cost for Gemini CLI sessions - ccusage is the tool for that. It is not a terminal emulator, not a cloud dashboard, and not a way to run agents. It watches and answers the ones you started yourself.
Questions
Does CrewTower work with Gemini CLI?
Yes. Gemini CLI is one of the agents CrewTower speaks to natively, with full status and decision support wherever the agent exposes a decision channel.
Do I need to write a Gemini CLI config file to use CrewTower?
No. Hooks are configured on first launch and removed again when you delete the app. There is nothing to edit by hand and nothing left behind.
Does it work if I have several sessions open?
Yes. Each gets its own card, and the ones waiting on a human sort to the front.
What happens with a tool CrewTower has no card for?
It falls back to a generic card carrying the flattened parameter list, so the notch still shows what the call will do and still offers the same answer the terminal offers.
Does it show token usage?
Only as context. It shows how much context a session has left, and how much of your Claude Code or Codex subscription window is left, but it keeps no token or cost history and shows no cost for Gemini CLI sessions. For a spending breakdown, ccusage is the tool for that.
Does CrewTower send anything to Google or to a server?
Nothing about your sessions. CrewTower is local-first: sessions are read from what the agent already writes on your Mac, decisions travel over a local Unix socket, and the app has no accounts and no analytics. The only network requests the app makes are the optional usage meter, license activation and update checks, and the privacy page lists all three.
Does it work with other agents too?
Yes. Claude Code, Codex, Cursor, Qwen Code and opencode are spoken natively. The twenty other agents CrewTower recognises get a card you can jump from, and the agents page lists all twenty-six with what it does for each.
Stop checking terminals
One price, one Mac, no subscription. Explore the interactive demo on our homepage, then get a license for your Mac.
Get CrewTower for Mac$9.99 once · macOS 15 or later