Skip to content

Ground Control 0.8.0

Choose a tag to compare

@spacyapps spacyapps released this 22 Sep 06:42
· 37 commits to main since this release

Ground Control puts one row per AI coding agent above every Desktop, turns it red when an agent is waiting on you, and takes you to the exact terminal tab when you click it.

The first public release.

Install

Download GroundControl-0.8.0.dmg, drag the app to Applications, and open it. Signed with a Developer ID and notarised, so it opens on an ordinary double-click — macOS asks "are you sure you want to open it?" the first time, as it does for anything downloaded from the internet.

Then click the menu-bar icon and choose Set Up Hooks…. It registers with the agents you already have and merges with hooks you already use, backing up every file first.

The .zip is the same app, for anyone who would rather not mount a disk image. It carries INSTALL.txt beside it.

What it works with

Rows Turns red
Claude Code yes, subagents grouped yes
OpenAI Codex yes, sub-agents grouped yes — needs a one-time trust prompt
opencode yes yes
Grok CLI yes, subagents grouped yes, for its input prompts
Claude for Desktop (Code tab) yes yes — a click opens that conversation
Cursor's own agent (Composer) yes no — it fires no hook while it waits
Grok Bot yes, bots grouped no on its current cache format

Rows appear for all of them. Not all of them can say when they are stuck, and nothing on this side can invent that. The README carries the full table with the date and version each was tested against, and docs/LIMITATIONS.md says what is measured versus merely believed.

What it does with your machine

  • No network code at all. No account, no telemetry, no update check.
  • It reads a folder of text files your agent already writes, in your temp directory, deleted 24 hours after a session goes quiet.
  • macOS asks once for permission to control your terminal. That is how a click reaches the right tab — a short script that selects a tab and raises a window. It cannot type.
  • Settings → About lists exactly what is stored and everything the app can reach.

Themes

The app ships with one. Themes are plain folders of JSON and images, so they cost nothing to try and nothing to remove — Settings has a Create a Theme… flow that writes a starter for you.

Feel free to open a theme's theme.json and change things to see what happens — back it up first, and the app reloads as you save. Every setting is documented in two places: docs/THEMING.md is the guide, and the bundled default theme's own theme.json lists every key that exists, annotated, at its built-in value. Delete any key you do not want and the app fills it back in — an empty { } is a valid theme.

Known rough edges

  • If you run your agent with permissions on auto, it never stops to ask, so you will never see a row turn red. Worth testing once with the default permission mode.
  • Sessions in tmux, over ssh, or from a launchd job have no app to jump to; clicking reveals the folder instead.
  • Cursor's own agent and Grok Bot appear but cannot raise the alarm, as above.

Licence

AGPL-3.0-or-later. The artwork and the names are not covered by it — see TRADEMARK.md.

Bug reports and feature requests are very welcome. Code contributions are not accepted, and the pull request template explains why.