Your agents haunt you.
Haunt them back.
Six Claude Code and Codex sessions, and every one of them wants something from you: a permission, an answer, a nudge. bogyman is the thing under your desk that knows which agent has been waiting longest, what it's stuck on, and chases you down to deal with it. It never touches your terminals, tmux, or worktrees. It just stares.
Four hauntings. One list.
Bogyman watches the sessions you already started and answers the questions you keep alt-tabbing to answer yourself.
Triage
Blocked sessions, oldest wait first, with the reason: permission, question, sandbox, expired login. One command to jump there.
Progress
What each session is doing now, turn count, elapsed time, and task progress — 3/7 · write tests — when the vendor emits it.
Cost & quota
The model each session runs, token totals and the last reply for Codex, read from the vendors' own files and CLIs. No scraping, no guessing.
Control
Send a message, raise the right tab, attach to a background job, or resume one that ended — wrapping codex queue and claude attach so you never hunt for a window.
A day haunted by Bogyman
The loop most people settle into once the bogyman moves in. Every step is one command; every command has --json.
-
01 · morning
Start work however you like
Three claude tabs, two Codex sessions, one task in the Desktop Code tab. The bogyman notices each one on its first hook.
claude --bg "fix flaky tests" codex --session-name deps-audit -
02 · glance
Keep the count in your prompt
Put bogyman status in starship, tmux, or your shell prompt. Cache only, under 20 ms. Or start the daemon and get a notification the moment a session blocks.
bogyman status ●2 ▶3 ✓1 bogyman daemon start -
03 · triage
Answer the oldest wait first
bogyman waiting lists blocked sessions by wait age. bogyman focus raises the tab, attaches to a background job, fronts Desktop, or resumes a session that ended.
bogyman waiting bogyman focus flaky -
04 · unblock
Reply without attaching
Send a one-line answer and move on. Or let a supervising Claude session read bogyman ls --json and do the nudging.
bogyman send deps "use pnpm" bogyman ls --json | jq '.data.sessions'
The CLI
Twelve commands. Human tables on a TTY, TSV when piped, JSON when asked. Exit codes you can branch on.
bogyman lsEvery live session, grouped blocked / working / done. --watch redraws each second and polls claude agents too.
bogyman waitingBlocked only, oldest first. Exit 3 when empty, so it works in && chains.
bogyman statusOne line for prompts and status bars. Cache only, <20 ms, templatable.
bogyman focus <id>Raise the tab (Ghostty, iTerm2, Terminal, WezTerm, kitty, tmux), attach a background job, front Desktop, or resume one that ended.
bogyman send <id> "…"Deliver a message. Wraps codex queue and Claude's reply path.
bogyman show <id>Full record plus the last 20 events. --open jumps to the transcript.
bogyman installMerges hooks into Claude and Codex settings. Idempotent, backed up, reversible.
bogyman doctorVendor versions, hooks registered, daemon health, last event per collector.
bogyman daemonOptional poller for claude agents --json and Codex rollouts, plus notifications. install runs it at login via launchd or systemd.
bogyman gcPrune records older than retention_days (default 7).
bogyman uninstallRemoves only bogyman's hook entries. Your other hooks stay untouched.
bogyman … --jsonOne envelope for every command: schema, command, ok, then data or error. Failures are JSON too.
What bogyman can see
Only what's on your disk. A bogyman that can't see under the bed stays quiet about it, so cloud sessions stay out of the list instead of showing a guess.
| Surface | State | Blocked vs done | Detail | Source |
|---|---|---|---|---|
| Claude Code · terminal tab | Full | Correct | turns, tasks, model | hooks + sessions/ |
| Claude Code · agent view / --bg | Full | Correct | exact wait reason, attach id | claude agents --json |
| Claude Desktop · Code tab, local | Full | Correct | model, Desktop's turn summary | hooks + session index |
| Claude Desktop · Code tab, SSH / WSL | Planned | Index only | title | session index |
| Codex CLI | Full | Correct | model, tokens, last message, name | hooks + rollouts |
| Cowork · local | Not shown | — | — | inside Cowork's VM |
| Cloud sessions · Chat tab · Cowork cloud | Not shown | — | — | not on disk |
Install in a minute
One line, no package manager. Verifies the download against the release checksums and installs to ~/.local/bin. Or brew install soleo/tap/bogyman, or cargo install --git https://github.com/soleo/bogyman-cli bogyman-cli.
- Merges into ~/.claude/settings.json and ~/.codex/hooks.json; existing hooks untouched; a .bogyman-bak is written first.
- Nothing leaves your machine. Stores summaries and the first 200 characters of what a session is waiting on — never full prompts.
- Claude Code ≥ 2.1.139 and Codex ≥ 0.130 for full coverage; degrades gracefully below.
How it works
- 1Hooks push events.
bogyman hook runs on PermissionRequest, Notification, Stop, TaskCompleted, SessionEnd. Appends one row to SQLite, exits in <10 ms, never returns a decision.
- 2Pollers fill in detail.
Every query tails Codex rollouts for model, tokens and the last reply. The optional daemon also polls claude agents --json for background sessions and exact wait reasons, and sends the notifications.
- 3One record per session.
Vendor, host, cwd, state, waiting_for, wait age, task progress. The CLI, the JSON, and any future UI read only this.
What it is not
Not a spawner. Not a kanban. Not a tmux layout. Not a cost dashboard. Those exist, a hundred times over. Bogyman is the thin layer that lurks alongside whatever you already use and answers one question well.
Roadmap
| v0.1 | Hook collectors; ls / waiting / status / show / send / --watch / --json | shipped |
| v0.2 | claude agents + Codex rollout pollers, focus, daemon, notifications | shipped |
| v0.3 | Homebrew tap, Claude Desktop session index | shipped |
| v1+ | Web view on the same store, Gemini / OpenCode collectors, cloud sessions, team mode | later |
Let something else do the haunting.
Bogyman is being built in the open. Star the repo to follow, or leave an email and the bogyman will find you when the next release ships.