neuron-explorer
Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results
Every coding agent that needs you, in one window. For Claude Code, Codex and Pi on the Mac.
Developer toolsRust · JavaScriptGitHub @spacegrowthOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
One window for every coding agent that needs you: Claude Code, Codex and Pi. A Mac app.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Every coding agent that needs you, in one window.
Website ·
Download for Mac
One window for every coding agent that needs you. When a Claude Code, Codex or Pi session finishes
its turn, asks permission, or asks a question, it shows up in Cue — so you stop cycling through
tabs to find who's waiting. A Mac app (macOS 13 or later, Apple silicon and Intel).Read the full README ↗One window for every coding agent that needs you. When a Claude Code, Codex or Pi session finishes its turn, asks permission, or asks a question, it shows up in Cue — so you stop cycling through tabs to find who's waiting. A Mac app (macOS 13 or later, Apple silicon and Intel).
The terminal keeps working too: answer there or in Cue, whichever is first wins, and Cue clears the card either way.
Cue-<version>.dmg from the latest release,
open it, and drag Cue to Applications. It's signed and notarized by Apple.~/.claude/settings.json; the file is backed up first and your other settings stay.
In a session that was already open, type /hooks once (or restart it; claude --resume keeps the
conversation).Cue updates itself: it checks for a new version now and then, and the menu bar icon's menu has Check for Updates….
From source instead: ./install.sh builds the app and connects Claude Code, Codex and Pi;
./install.sh --uninstall removes it all again.
Behind a proxy or on a team budget? Keep a small CSV up to date (a cron job, a script, whatever you
like) and Cue shows it in the usage pill, beside Claude Code's own limits. The default path is
~/.cue/usage.csv (Settings → Usage file changes it):
label,spent,limit,unit,resets_at
Team,42.60,50,$,2026-10-12T00:00:00Z
Credits,1200,,credits,
Only spent is required. An empty limit shows the amount without a bar; unit defaults to $;
resets_at is an ISO date-time or Unix milliseconds. Up to 3 rows. Cue only reads the file, whenever
it changes, and never runs anything. If it doesn't match this format, the pill says what's wrong.
An extension brings a page of its own, as a tab beside a session's chat or in the Extensions panel (the button beside the terminal's). Cue comes with one, Diff: what the session changed this turn, the whole session, or everything not committed. Switch it on in the Extensions panel (the button beside the terminal's in the top bar); it updates with Cue. To add another, copy its folder in from there (Open the folder). Nothing in an extension runs until you switch it on. To make one, see docs/extensions.md.
Cue collects nothing and sends nothing anywhere. Everything it keeps (what's waiting, history, drafts, settings) stays on your Mac, in the folder below. It talks to your agents through a local socket that only processes on your Mac can reach, and it reads their transcripts on your disk. The one time it goes online is to check GitHub for a newer version of Cue, and, only when you pick them, to download a voice model once (a natural voice for Listen, or NVIDIA's listening model for talking to it); after that they run on your Mac, and what you say never leaves it.
An extension you switch on can't reach the network. It can have Cue read git, read-only, in the open session's folder. It can run programs only if it asks to and you approve it: then only the installed programs it lists, never one it brings, a shell, or a script interpreter. Settings shows what each one may do and every command it ran.
| Key | |
|---|---|
A / D | allow / deny |
1–4 | pick an answer |
R | reply / redirect (type, then Enter) |
G | go to the session's tab |
← → | flip through what's waiting |
H | history |
Everything Cue keeps is in ~/Library/Application Support/dev.spacegrowth.cue/ (the standard place
for a Mac app's data; CUE_HOME overrides it), in one SQLite file, cue.db, so a restart or crash
loses nothing:
| Table | What |
|---|---|
items | decisions and finished turns, pending and answered (the history) |
sessions | every session, live or ended, with who drives it (driven_by) |
exchanges | each session's full back-and-forth, append-only |
drafts | what you typed and haven't sent, per session |
Images you send stay as files in uploads/ there (rows hold their paths).
Settings stay in config.json there (the Pi extension reads it). How much history to keep is
set in Settings or there:
{ "history": { "keep": 300 }, "pi": { "gate": "dangerous" } }
Pi has no permission prompts of its own; Cue's extension adds them for risky commands —
pi.gate is "dangerous" (default), "all" (every bash/write/edit), or "off".
If a tool starts agent sessions on behalf of another agent (a lead handing work to helpers), it can
set CUE_DRIVEN_BY in each helper's environment, e.g. CUE_DRIVEN_BY="its lead (billing)". Cue
then keeps that helper out of Waiting: its finished turns are the lead's to handle, so it shows as
idle, "waiting on its lead", with no notification. (Settings can show them anyway.)
Claude Code ──hook──┐ ┌── window (spotlight card)
├──► cue.sock ─────────► Cue ──┤
Pi ──extension──────┘ (one JSON line) └── notification
Each harness has a hook that waits for an answer: Claude's PermissionRequest, Pi's tool_call.
The hook asks Cue over a local Unix socket and waits. Turn-end events (Stop, agent_end) put a
"finished" card up; the next prompt (UserPromptSubmit, agent_start) takes it down.
The hook is built into Cue itself (cue hook <event> <harness>, see src-tauri/src/hook.rs), so
it needs nothing installed: no Python, no Node. Adding another harness means one small hook that
speaks the same socket protocol.
npm install
npm run dev # run the app
./tests/run.sh # all tests, against a private silent Cue (yours keeps running)
python3 -m http.server 8765 # then open /tests/preview.html — the real UI with sample data
hooks/cue-ctl list # poke a running Cue from the shell (needs python3)
MIT. See LICENSE.