agent-deck active
Agent Deck is a terminal dashboard for managing multiple concurrent AI coding-agent sessions (Claude Code, OpenCode, …), with session forking, MCP server toggling, skills management, and fast keyboard switching. Built in Go with Bubbletea. I contribute from my fork, mr-sk/agent-deck.
Contributions
-
Keep live tmux control pipes only for active sessions · merged 2026-06-17 agent-deck opens one
tmux -Ccontrol client per session, so running several decks across many shared sessions piles up N×M clients on tmux's single-threaded server, causing an attach-storm at launch and steady-state backpressure that can wedge it. Now each instance keeps a live pipe only for the sessions it needs (the focused one, the attached one, and a small LRU of recently viewed); everything else rides the existing 2slist-windowspoll. A local soak test with two instances over 17 shared sessions held 5 total control clients instead of ~34, with no orphans or freezes, and background sessions still updated on the poll. Backward compatible: a nil predicate means "want everything". -
Match the OpenClaw gateway's protocol version · merged 2026-06-09 The OpenClaw gateway advanced to protocol 4, but the bridge still advertised 3, so every connect was rejected as a protocol mismatch and it looped reconnecting every ~3s. Bumped the bridge's
ProtocolVersionto 4. The connect-frame schema is unchanged between 3 and 4, so it's purely the version number. A small fix, but it brought the integration back online against the current gateway. -
Close tmux control pipes on signal exit · merged 2026-06-09 agent-deck spawns one
tmux -Ccontrol client per session. The clean in-app quit closed them, but theSIGINT/SIGTERMhandler calledos.Exit(0)without cleanup andSIGHUP(closing the terminal) wasn't handled at all, so clients leaked, reparented to launchd, and piled up against the single-threaded tmux server until it wedged. AddedSIGHUPhandling and an orderlyPipeManagerteardown on the signal path, so closing the window detaches clients cleanly. -
Prevent UI freeze when the tmux server is dead · merged 2026-04-06 A crashed tmux server that left a stale socket made every tmux subprocess call hang ~3s; the background status worker fires dozens per tick, causing 30–50s UI freezes. Added an
IsServerAlive()health check (1s probe, cached 5s) that short-circuits the status worker, and added missing timeouts to several tmux cache/environment calls. -
Fix permission prompt showing as idle after prior acknowledgment · submitted 2026-03-23 A session that hit a permission prompt mid-task stayed grey/idle instead of going orange if it had been attached and acknowledged earlier. Resets acknowledgment when new permission-hook events arrive, and taught the tmux detector the current Claude Code numbered-menu permission-dialog format.
-
OpenClaw gateway integration · merged 2026-03-06 First-class support for OpenClaw agents as agent-deck sessions via a tmux-bridge pattern. Added an
internal/openclawpackage: a WebSocket JSON-RPC client (challenge/response auth, exponential-backoff reconnect) and a Bubbletea bridge TUI with live Discord chat streaming, plusagent-deck openclaw(oc) CLI commands (sync,bridge,status,list,send). Fully additive, no changes to the core session model.
Stack: Go, Bubble Tea / Lip Gloss (TUI), TOML config, WebSocket.