Your Claude Code agents, living on the floors of a terminal office building.
Find a file
Mateo Greil 55637c247c render face + label + status per agent (M1)
Also adds unicode-width dep (Task 2 missed it): needed by column_widths.
2026-05-21 13:08:52 +02:00
docs/superpowers 📝 plan: M1 — static faces per status 2026-05-21 12:38:33 +02:00
src render face + label + status per agent (M1) 2026-05-21 13:08:52 +02:00
tests 🏗️ rename crate agents-room → sidequest, bump v0.3.0 2026-05-20 18:19:39 +02:00
.gitignore 🎉 scaffold agents-room with ratatui/crossterm stack 2026-05-20 17:16:37 +02:00
Cargo.lock render face + label + status per agent (M1) 2026-05-21 13:08:52 +02:00
Cargo.toml render face + label + status per agent (M1) 2026-05-21 13:08:52 +02:00
CLAUDE.md 📝 add CLAUDE.md with project guidance for future sessions 2026-05-20 18:29:04 +02:00
README.md 🔀 merge PID-liveness stale detection 2026-05-20 18:40:33 +02:00

sidequest

A terminal UI that shows your running Claude Code agents — live and recently completed — as little characters living on per-project "floors" of a single building.

No tmux. Read-only. Reads Claude Code's own state files (~/.claude/sessions/, ~/.claude/jobs/) so it just works alongside your existing workflow.

+- sidequest — 8 agents · 3 projects ----------------+
| Floor: ~/tui-agents-room                           |
|   [tu]  [tu2] [tu3]                                |
|   work  idle  done                                 |
|                                                    |
| Floor: ~/tofu-maison                               |
|   [tm]                                             |
|   idle                                             |
|                                                    |
| Floor: ~/electra                                   |
|   [el]  [el2] [el3]                                |
|   work  work  work                                 |
|                                                    |
|   refresh 1.5s · q to quit                         |
+----------------------------------------------------+

Install

cargo install --path .

Usage

sidequest                            # default: poll ~/.claude/sessions every 1.5 s
sidequest --refresh 500              # faster polling
sidequest --sessions-dir /custom/path
sidequest --jobs-dir /custom/jobs    # override completed-jobs dir

Press q, Esc, or Ctrl-C to quit.

What it shows

  • work — Claude is actively running a tool / waiting on the model.
  • idle — Claude is idle (waiting for your next message).
  • wait — Claude is paused on a permission/approval prompt.
  • stale — the process is gone but its session file is still on disk. Probably crashed.
  • done — the agent finished. Read from ~/.claude/jobs/<jobId>/state.json (override with --jobs-dir); completed agents persist after the process exits so you can still see what ran where. They render dimmed and sort after live agents on the same floor.

Staleness is decided by probing the PID with kill(pid, 0), not by the file's updatedAt — Claude Code only updates that on state transitions, so a busy agent on a long tool call can easily go minutes between writes.

Subagents (Task-tool helpers) are hidden in v1.

Status

Pre-release. Tags so far:

  • v0.1.0 — minimum floor view of live agents (Claude Code, polling ~/.claude/sessions/)
  • v0.2.0 — adds completed agents from ~/.claude/jobs/*/state.json, dimmed at the bottom of each floor
  • v0.3.0 — rename to sidequest, label truncation, alignment polish

See docs/superpowers/specs/ and docs/superpowers/plans/ for the design and implementation history.

Inspiration

  • pixel-agents — VS Code extension with pixel-art office characters
  • agentroom — Tauri desktop app, multi-CLI rooms

sidequest is the TUI take on the same idea: see your agents the way you already see your code — in a terminal.

Roadmap

  • v0.x: Claude Code only
  • v1: feature branch merged to main, binary renamed to sidequest, install via cargo
  • Later: support other agent CLIs (Codex, Aider, Gemini, Cursor)

License

MIT.