← Back to the fleetS P A C Y A P P SGROUND-CONTROL
🛰

Ground Control.

MAC · v
IN PRIVATE ALPHA · COMING SOON TO MACOS

Mission control for every agent you're running. AND jump directly to it!

A menu-bar app for anyone running more than one AI agent at once.

Every session gets a row — its name, what it's doing right now, and a dot that turns red the moment it is blocked and needs you.

Click the row and the terminal tab that owns it comes to the front. No hunting through windows.

Built for the AI coding CLIs you already run on your Mac — Claude Code and Grok CLI today.

And it is skinnable, WinAmp-style. Swap the entire look in seconds. A status panel you stare at all day should be a thing you actually want on screen.

I waste time checking if my Session or Agent is done or waiting for me

THE SPACE-STATION THEME, RUNNING LIVE
TAP A ROW, LAND ON ITS TERMINAL
◈ WHY IT EXISTS

The cost was never the waiting. It was the checking.

You start an agent and go somewhere else — email, Slack, a review, a question from the desk behind you. That is the whole point of starting it. The work is supposed to happen while you are not watching.

Then it goes wrong in one of two directions, and they point away from each other.

IF YOU FORGET

An agent sits blocked for twenty minutes, waiting on a one-word answer you would have given instantly.

IF YOU CHECK INSTEAD

You shred the focus you switched away to protect — over and over, mostly to find nothing.

Neither is a discipline problem. You cannot remember what you were never shown, and the only way to find out is to stop what you are doing and go look.

IF YOU FORGET14:02the agent stops.it needs one word from you.39 MINUTESnothing happens.14:41you go back and look.IF YOU CHECK INSTEADeight glances that found nothing.one that did.AN ILLUSTRATION, NOT A MEASUREMENT
WITH THE PANEL OPEN
14:02the agent stops.14:02you already know.0 MINUTES

So the fix is not a faster check. It is a free one — a glance instead of a context switch.

◈ FEATURES

Key original features

I.01

Every agent, one panel

A live row per session — Claude Code and Grok CLI — with what it's doing right now and a red dot the moment it needs you.

I.02

One click to the terminal

Jumps straight to the exact tab or pane that owns the session — whichever terminal or editor you happen to be running it in.

I.03

Skinnable

Drop-in theme folders, WinAmp-style — swap the whole panel's look without touching a line of Swift.

◈ HOW IT WORKS

How it works

Your agent already announces itself as it works — starting, thinking, finishing, stuck. Nobody is usually listening.

Ground Control listens.

  • It does not read your screen
  • It does not poll your terminals to guess at a state

Each session says which tty it is speaking from — the name the system gives that one terminal — and which application owns it. The tty says which session. The application says what can be done about it.

Because a tty is a system-level fact, every session that runs in a terminal identifies itself the same way, editor pane or terminal window alike. What differs is how precisely a click can land: straight to the tab in some terminals, to the application in the rest. And working out which application owns a session was not free — editors bury their terminals inside nested helper bundles, so the obvious answer is a helper rather than the app you can see.

Some agents never run in a terminal at all. An editor's own agent still reports in, and its rows still appear — but today it does not report the one moment you were waiting for, the pause where it needs your answer. That is not silence. It is an agent that tells you everything except the thing you were watching for.

Your agent reports inGround Control listensYOU SEE WHAT ISdonewaitingworking

Research note: We proved we could type into your terminal. Then decided never to.

The question was whether Ground Control could answer an agent for you, from your phone. Approve or deny is the easy half — clean, no tricks needed.

But approve and deny are not what you need to send. You need words: use Postgres, not SQLite. The only route to words was scripting the terminal directly. That was tested, deliberately, to find out whether it could be done. It can.

Which is exactly where it stops. A yes tapped on a lock screen is not the same yes — you cannot see the working directory, or the diff, or what the last three approvals already unlocked. And approvals chain: each one clears the way for the next.

✦ No relay was ever built. Anything that can type into your terminal is a remote execution capability, and putting a relay in that path would have turned one compromised server into every Mac connected to it. Some of that could be mitigated. None of it belongs in an app whose whole job is to tell you something needs you.

It would have been the easiest thing here to sell.

WHAT ARRIVES ON YOUR PHONEGROUND CONTROLA session is waiting on your answer.ApproveDenyWHAT IT WAS ASKINGinstall a packageUNDO IT IN A MINUTEdrop the production tableDO NOTOn a lock screen, these are the same notification.AN ILLUSTRATION · NOT A FEATURE

Finding out you can do something is not the same as finding a reason to.

◈ WHAT CHANGED

Why the notifications were never going to be enough

At work there were eight terminal sessions open on a good day, often more, and not all of them running the same agent.

System notifications helped a little, and then stopped helping.

  • They tell you something happened, not which of eight sessions it was
  • They do not tell you what it wants
  • Arrive together and they stop being information — they become a stack you clear

Underneath that is what AI actually changed about the work. Not that it produces more. Good output comes from a loop: input, review, input, review.

The bottleneck moved to the reviewer.
The reviewer is you, and you are in a meeting.

◈ FUN IS A FEATURE

Fun is a feature

Ground Control is a serious monitor for production coding agents. It can be YOUR jewelled unicorn, if you want.

It has a face

The needs-you avatar state, animatedTHAT REQUESTS YOUR PRESENCE

Every session gets an avatar, and the avatar has moods.

  • Nothing happening — asleep, with little z's
  • Working — working
  • Finished — a thumbs up
  • Needs you! — attention seeking, on purpose

The design brief for that last one: you should notice it from across the room without reading anything. And it stays lit until your click actually lands somewhere — silencing an alarm nobody attended to is the one thing a monitor must not do.

It has your billboard

Across the title strip, a little dot-matrix display — the kind that lived on the front of a 90s hi-fi. When nothing needs you, it scrolls.

  • Bad developer jokes
  • The house name
  • Words pinched from your own agents — file names, tool names, whatever today is full of

A theme brings its own vocabulary, so a theme has a voice. The font knows capitals, digits and little else, so everything it says is short and shouty. That is most of the charm.

It has your unicorns?

THE UNICORN THEME, RUNNING.

WinAmp skins were the last time a mainstream utility assumed you would want to make it yours. Everything since has assumed you want it to look like everything else.

The retro pull is not nostalgia for its own sake. It is nostalgia for a period when software let you fiddle.

So this is not a bonus bolted onto a serious tool. A monitor only works if you keep it open, and you keep open what you like looking at. The skins are load-bearing.

ADDITIONAL THEMES WILL BE AVAILABLE SEPARATELY.

THE SIGN, RECORDED RUNNING. ANALYSER EITHER SIDE, THE HOUSE NAME GOING PAST IN THE MIDDLE.

◈ THE THEME TOOL

A guided brief for your image model

Themes are plain folders — some images and a JSON file. Save the file and the panel re-skins instantly. Let the app walk you through building one.

  • Answer a handful of questions — whether you have a reference picture, the character, what each state is doing, the drawing style. Not the colours: those follow a fixed rule, so the panel always reads at a glance.
  • It turns that into a brief and comes back with the four avatar states drawn as stills. Expect a couple of rounds of notes — that back-and-forth is the tool working, not failing.
  • Only once you sign off does it price and animate. An optional pass adds decorations pinned to the panel's corners.
  • It builds the folder alongside all of this — wired up and waiting for the finished art.

A nine-grid frame, and an easier way in

A theme starts from a nine-grid frame — the picture cut into a three-by-three. The four corners hold their size, the four edges stretch one way, the middle fills the rest. It is the trick behind every resizable window chrome, and the brief walks the model through drawing to it. Most people, or the model working for them, handle the default fine — background transparency and all, like this.

The easier way, if you want it: hand over one picture and let the whole thing scale to fit. Any proportions — the panel takes your picture's shape and the rows scroll inside it. Nothing to measure. A whole theme in an afternoon with no idea how any of it works.

CORNERS HOLD. EDGES STRETCH.

It does not know how to draw. It knows what breaks.

The brief it writes is long. Every file, every size, each state and what it has to communicate, and the drawing rules for whichever route you picked.

Animation has two routes, and it tells you the trade. Frame-by-frame is cheap and jitters a little — right for a small detail, a blink or a glint. Full video holds the subject steady and costs tokens — right for a whole character or object. Either way, nothing animates until you have signed off on it as a still, so a wrong idea costs a picture and not a movie.

Those rules are not style advice. One animation came back with frames varying seventeen pixels in height, which on screen read as the panel resizing while it played — so the brief now says lock the silhouette, and never draw a frame from the previous one, because that drifts. Another grew heavier as it went and then snapped back at the wrap — so it says close the loop. At avatar size an expression is invisible, so a state has to be carried by colour and shape.

Try this in...

The generated theme manifest beside dozens of avatar and frame variations returned by an image model
THE BRIEF ON THE LEFT. WHAT CAME BACK ON THE RIGHT.

This one was made with Grok Imagine, a product of xAI — one of many models the brief works with. No affiliation.

Corner decorations

Small pieces of art pinned to the panel's four corners, independent of the frame — a still, an APNG, a video. You do not have to animate anything yourself; the same brief that drew your avatars will generate these too. The one rule that makes them feel alive: a decoration only moves while one of your sessions is actually working. The rest of the time it holds on its first frame, so a busy panel looks busy from across the room before you have read a word of it.

CORNER ART, RUNNING BECAUSE A SESSION IS.
A GREAT PROMPT SAVES YOU MONEY

What was typed to get the Commander

Roughly the brief behind the walking figure on the left. Every vague word is a regeneration you pay for, so the ask pins the path, the framing and the format — the tool fills in the file list.

Reference: the house avatar. Alpha out the background — real 8-bit transparency, no green screen.

Canvas 500 x 150, APNG.

The subject in her usual outfit, blue visor instead of red.

Starts standing at the far right of the canvas.

Walks to the left.

Motions with both hands — sending work off to the left, then directing it upward.

Floats backward to the starting point at the far right.

15 seconds, looping.

  • Ask for a truly transparent canvas — real alpha, not a keyed-out green or magenta screen. Soft edges, glow and haze then composite cleanly.
  • Compose the subject toward the corner it anchors to: a bottom-right piece sits bottom-right on its own canvas, since that is the point the panel lines up with the window.
  • The file draws at its exact pixel size, never scaled. Pick the size you want on screen, then double it for a sharp Retina render.
  • Keep motion short — 8 to 24 frames near 12fps. It plays only while a session works, and holds on frame one otherwise.
  • Save it as .apng or .png, never .gif. No removeBackground key needed when the alpha is already real.

Bring your own animation — APNG turned out to beat GIF for this, real colour and real transparency, and plain video works too. The whole panel can move, not just the faces, and a model can generate every frame of it. Shapes that are not rectangles. Themes translucent enough to blend into the desktop rather than sit on top of it. A handful exist today — imagine a thousand.

Not a wizard and not a preset library. The app hands the model a detailed list of what to generate, and why.

Still in the hangar

Ground Control is in private alpha — built, working, and flown daily on the machine it was written on. It isn't public yet, so there's nothing to download today.

When it ships the app will be free and open source under AGPL-3.0. The artwork is a separate thing: themes are not derivative works of the program, so they carry their own licence. That split is what lets the app be free forever while a theme is something you can buy — and it means nothing is held back from the free version. The app is whole.

Charge for the artwork. Never for the software.

COMING SOON TO MACOS