Repository navigation
v1.7.0: agent status board
Devbox Anywhere v1.7.0 — agent status board
devbox-session status <project> shows every agent on a project at a glance: what each one has done, who holds the turn, and which agents are safe to clean up. It's a native tmux + git implementation, with no external binary.
$ devbox-session status webapp
project=webapp session=webapp base=auto (activity is a heuristic)
webapp-api dirty +3/-0 turn:alice working
webapp-web new +0/-0 turn:free idle
webapp-cli merged +2/-0 turn:free idle (reapable)
What's new
- Git facts you can trust:
new | new+dirty | clean | dirty | merged | merged+dirty,+ahead/-behindagainst the base branch, and thedevbox-turnholder. Uncommitted work is never hidden behind another state. newvsmerged: a just-created agent with no commits isnew, nevermerged.devbox-worktree addnow records the fork point as an optional 4th registry column.(reapable)= merged, clean, turn free, and not currently working. Only then isdevbox-worktree remove <project> <agent>safe. A new or still-working agent is never reapable.- Activity is a labeled HEURISTIC:
working | idle | blocked | unknown, read from the tmux pane.working= any non-shell foreground process. An agent CLI idle at its own prompt readsworking, so treat it as "a CLI is open here", not "busy".blocked= a waiting-for-input prompt (y/n, password, question) stalled pastDEVBOX_STATUS_STALE(default 60s).- An unreadable pane is
unknown, never guessed.
--json: a schema-versioned document, one object per agent,"activity_confidence":"heuristic".- Fails closed: an unknown project errors. A registered worktree that no longer exists shows
MISSING, and the command doesn't crash.
Upgrading from v1.6.x
No migration needed. Existing 3-column registry rows keep working. For agents created before the upgrade, status falls back to the branch reflog to tell new from merged. If that reflog is unreadable, the agent is never marked reapable (fail-safe). New agents get the 4th column automatically.
Scope
Runtime changes are limited to scripts/devbox-session (the new status subcommand) and scripts/devbox-worktree (records the fork point). Every registry reader accepts both 3- and 4-column rows. The installer, harness and other helpers are unchanged.
Testing
- Full canonical suite green, 62/62 named mutation reds, on BOTH a macOS host without tmux and a Linux host with tmux. The activity probe is guarded by a fake-tmux test that runs everywhere, plus a real-tmux test where tmux exists.
- Live test on a real devbox in an isolated tmux server, registry and worktree root, with legacy agents created by the shipped v1.6.1
devbox-worktreeand new agents added after the upgrade into the same registry. All of these read correctly:- y/n prompt →
blocked - fresh agents, idle and busy →
new, not reapable - really merged →
merged (reapable) - legacy agent without a reflog → not reapable
- fresh with uncommitted work →
new+dirty remove/liston mixed rows work
- y/n prompt →
Base: v1.6.1 (d58d3da).