sk heavy industries

agent-deck active

tuiai-agentsgodeveloper-tools

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 -C control 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 2s list-windows poll. 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 ProtocolVersion to 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 -C control client per session. The clean in-app quit closed them, but the SIGINT/SIGTERM handler called os.Exit(0) without cleanup and SIGHUP (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. Added SIGHUP handling and an orderly PipeManager teardown 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/openclaw package: a WebSocket JSON-RPC client (challenge/response auth, exponential-backoff reconnect) and a Bubbletea bridge TUI with live Discord chat streaming, plus agent-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.