Skip to content

v1.4.0: multi-channel sessions with multiple agents

Choose a tag to compare

@hubbvee hubbvee released this 02 Sep 00:01
59365c7

Devbox Anywhere v1.4.0 — Multi-channel sessions with multiple agents

Any channel Hermes is connected to (a terminal over SSH, a Telegram topic, a Slack channel) can drive the same project work, and multiple agents can work one project in parallel without colliding. The box, not any single chat, is the source of truth.

Model

project   -> one tmux session            shared "room"; every channel resolves to it
agent     -> one window + one worktree    own checkout + branch = real parallel isolation
channel   -> project:window | session     a control surface (channels live in Hermes config)
turn-lock -> per worktree                 one writer per checkout (advisory coordination)

What's new

  • devbox-session — resolve project → tmux session and project:agent → session/window/worktree/branch. Fails closed on unknown/off-convention/duplicate/malformed/traversal input.
  • devbox-turn — per-worktree one-writer lock. Atomic acquire, explicit take/release, holder-only release, stale-lock reclaim past DEVBOX_TURN_TTL, and refuses a nonexistent worktree. Advisory coordination, not a security boundary.
  • devbox-worktree — add/list/remove an agent's git worktree + agent/<agent> branch + tmux window. add rolls back atomically on failure; remove refuses a dirty worktree without --force.
  • Installer + harness integration — install-devbox copies the three helpers into the container ~/.local/bin (persistent mount); the harness verify reports helper.devbox-{session,turn,worktree}.
  • Docs + skill — docs/13-multi-channel-multi-agent.md, an 8th skill reference, README v1.4.0 section.

Design boundaries

  • Channels are Hermes configuration, not part of this repo — no channel adapters or per-channel auth code here.
  • Agent ids must be <project>-<suffix>; worktrees live under ~/project/.worktrees/<agent> (persistent).
  • Chat surfaces show snapshots/streams, not a live TUI mirror.
  • Every wired channel carries the devbox account's full terminal authority — not a sandbox.

Also fixed

  • Default install on Docker Compose v2.40+ — DEVBOX_BROWSER_PASSWORD is now generated unconditionally, so compose build no longer fails interpolating the profile-gated browser service on a default (no-browser) install. (Latent since v1.3.0.)

Testing

  • Full canonical suite; 38/38 named mutation reds.
  • 10/10 live smoke PASS on Ubuntu 24.04 x86_64 / Docker 29.1.3 / Compose v2.40.3: default install, harness verify with the three new helper checks, two agents with independent worktrees/branches, resolver, turn-lock refusing a second writer, dirty-remove refused + forced teardown, loopback-only bindings.

No known blockers within the reviewed and tested scope. Base: v1.3.0 (028b3cb).