When you’re running several agents, the hardest part isn’t the work, it’s knowing which one needs you. Termic reads real signals from each CLI to tell you when an agent has finished a turn or is stuck waiting, so you don’t have to watch them.
The two indicators
- Blue dot. Appears on a tab when its agent finishes a turn and you’re looking at something else. It’s sticky: it stays until you focus that tab or type into it, so a turn that finished while you were away doesn’t get missed.
- Orange bell. Appears when an agent is blocked on input, waiting for you to answer a question or approve something. This is the “come here now” signal, distinct from “done”.
Crucially, Termic never marks the tab you’re actively looking at. If you’re watching an agent work, you don’t get a dot for the thing right in front of you. The indicators are about the tasks you aren’t watching.
How detection works
This is the part most tools get wrong by guessing from idle time. Termic uses the signals the CLIs actually emit:
- Per-CLI title classifier. Each agent advertises its state in the terminal title. Claude has its spinner glyph, Gemini cycles through
◇/✦/✋, Codex showsWorking/Ready/Waiting. Termic reads those. - OSC 9;4 progress sequences, where the CLI emits them.
- Gating. A static “thinking” title shouldn’t read as “done”, so the classifier is gated by byte-quiet checks (has output actually stopped?), a content hash of the visible terminal, and scrollback state. The combination is what makes it reliable across Claude, Gemini and Codex rather than firing on every pause.
For a custom CLI that emits no status signals, finished and waiting-for-input are indistinguishable, so Termic shows the attention bell instead of a done dot. And because some custom CLIs produce output that trips a false positive, there’s a per-agent Work-done detection toggle in Settings → Agents to turn it off for that agent.
Desktop notifications
Beyond the in-app indicators, Termic can fire a macOS desktop notification when an agent finishes, so you can switch to another app and still get pulled back. They’re off by default; turn them on in Settings → General.
Two things make them pleasant rather than noisy:
- They fire only for agents in tasks you’re not currently viewing. The agent you’re watching never notifies you, and neither does any tab in the task you’re focused on.
- They’re focus-routed. Clicking a notification drops you on the exact task and tab that fired it, wired through the CLI’s OSC 9 / OSC 777 sequences.
A note on accuracy
Work-done detection is the kind of feature that’s easy to ship badly. Termic’s took a few iterations to get reliable, and the byte-quiet and content-hash gates exist specifically to kill the false “done” that idle-timer approaches produce. If you do hit a false positive on a custom agent, the per-agent toggle is the escape hatch.
Related
- Parallel agents: where these indicators earn their keep.
- Scheduled messages & Ralph-style loops: the queue advances on this same signal.
- Agents & the registry: the per-agent detection toggle.
- Settings reference: turning notifications on.