1 needs you · 2 working

A pager for your coding agents. With a duck.

Squeak watches every Claude Code and Codex session on your Mac, tells you which ones need you, and lets you answer from your Mac, your iPhone or Telegram.

See how it works Private for now
needs you working done error idle
The duck's panel open above the menu-bar duck: orchard · checkout-retries needs an answer, lighthouse · rate-limiter is done, two sessions working and one idle. The duck wears a red badge with a 1.

The problem

Six agents running. One has been waiting on you for forty minutes.

Agents stop for you all the time: a permission prompt, a question with three options, a turn that quietly finished. They stop silently, in a tab you aren't looking at.

So you check. Conductor, then each terminal tab, then the Claude app, then Codex. Most of it is fine, and the one that wasn't has been stuck since lunch.

How it works

It watches, it ranks, it lets you answer.

A small daemon on your Mac does the watching. Every surface (the duck, the window, the phone and Telegram) reads the same state from it, so no two can disagree.

1

Watches every session

Conductor's chats, claude and codex in Terminal, the Claude app's Code tab and Cowork, and the Codex app. It reads their transcripts and Conductor's own database, and takes hooks for the moments a file can't record, like a permission prompt.

2

Ranks by what needs you

Needs you, then done, then working, then idle. Only the sessions that matter right now reach a screen: on a real Mac that is 4 of 26.

"Done" means the turn really ended, not that a row was touched. It also notices a session that has stopped answering and says it seems stuck.

3

Lets you answer

When an agent ends on lettered options, each one is a button. Tap B and Squeak types B into that chat's own Conductor window, or into the Terminal tab it runs in, so you watch the reply stream as if you had typed it.

Squeak for Mac

Every session, grouped by what it needs from you.

The window is the whole picture: what each agent said, what changed on disk, roughly what it cost, and a place to answer it.

The Squeak window. On the left, sessions grouped as Needs you, Done, Working and Idle. On the right, orchard · checkout-retries asks what happens when a card is declined twice, with options A, B and C as buttons, A marked recommended, and a message box with a yellow Send button.

The agent's own wordsIts last message in full, not a summary we wrote for it.

One tap per optionThe recommended one is marked, never pre-selected. The choice stays yours.

A receipt, not a guessA sent reply is checked against the chat before Squeak says it went.

The Squeak window showing atlas · search-index, a Codex session at work. Under What it's doing: reading how documents are tokenised, ran rg, edited src/index/builder.ts, a note about stemming, ran npm test.

What it's doing, step by step.

While a session works, the window follows its current turn: Claude's thinking summaries, its notes between steps, and each command or edit as a plain label.

Type into the box and the message is queued in that chat, which is how you steer an agent without waiting for it to stop.

The duck

The duck carries the mood. The list carries the facts.

A rubber duck sits in the corner of your screen and in the menu bar. You can tell how things are going without reading anything. Click it for the list.

Needs you

Wide eyes and a red badge. Something is blocked until you act.

Done

A hop, for 45 seconds after a turn really ends.

Working

A quick bob while any agent is mid-turn.

Asleep

Nothing running. The duck is resting.

Squeak for iPhone showing a session at work: what it's doing, step by step, with a message box at the bottom.

Away from the desk

Answer from your phone. Your Mac stays in charge.

Squeak for iPhone shows the same list and lets you reply. Telegram gets a card the moment something needs you: three short lines and a button per option.

  • ✓Paired on the Mac. A phone joins only after you approve it on your Mac.
  • ✓The Mac trusts a key, not a server. Every reply is signed by the paired phone, expires in ten minutes, and can only answer the chat's current turn.
  • ✓Quiet by default. Blocked agents push wherever they run. A finish pushes only for a Conductor chat, so a day of terminal work doesn't become a day of notifications.

Careful by design

It types into other apps, so it proves everything first.

Answering an agent means pressing keys in someone else's window. Every check below exists because the shortcut failed on a real screen.

The right chat, proven

Squeak reads which chat is on screen from Conductor's own route, never from a tab label. Two chats can share a title.

Never into a shell

In Terminal, the agent must own the tab and show its own empty prompt. If it exited, the text would have run as a command, so Squeak refuses.

Never over your draft

Anything already typed in the box is yours. Squeak won't paste over it, and won't answer a permission prompt with a stray digit.

Confirmed, never retyped

A reply that may have gone is checked against the chat's history. It is never sent twice, and Squeak says plainly when it couldn't confirm.

One helper holds the keys

A tiny signed helper alone holds the Accessibility grant. A grant to Node would be a grant to every Node tool on your Mac.

Hooks never block

Squeak's hooks run inside your agents, so they background their request, give up after two seconds, and always exit cleanly.

Works with

Wherever your agents already run.

Nothing to change in how you work. Squeak reads what your tools already write.

Claude CodeCodexConductorTerminalClaude app: Code and CoworkCodex appTelegramZoho CliqiPhone

Quiet until it matters.

Squeak is private for now. It runs on macOS, with an iPhone app alongside.