tmux and SQLite as a Surprisingly Practical Multi-Agent Control Plane
Maps directly to joelclaw’s gateway + loop architecture: steal `team visualize`-style observability and workspace isolation patterns for multi-agent runs.
TinyClaw from TinyAGI is a 24/7 multi-agent system that runs isolated agents and teams across Discord, WhatsApp, and Telegram. The core idea is simple: treat agents like always-on workers with handoffs, fan-out, and persistent sessions, instead of treating everything like a single chat thread.
The clever part is how un-fancy the stack is. It leans on Bash, tmux, and an SQLite queue with retries and dead-letter handling, then adds two operator surfaces: a live TUI via tinyclaw team visualize and a browser control plane in TinyOffice built with Next.js. It’s a full agent ops layer built from boring parts that are easy to run and reason about.
For joelclaw, this is a useful reference because the shape matches what we care about: durable orchestration, multi-channel ingress, and human-visible operations. We already have Inngest + Redis + gateway plumbing; TinyClaw is a reminder that operator UX (team visualization, explicit workspace boundaries, fast local setup) is a feature, not garnish. Also notable: provider routing through Claude Code CLI and Codex CLI using existing subscriptions.
Key Ideas
- One daemonized CLI can unify multi-channel bot operations across Discord, WhatsApp, and Telegram.
- Team-level execution patterns (chain + fan-out) become much easier to debug when there is a first-class visualizer (
team visualize) and log surfaces. - A local SQLite queue with atomic writes, retries, and dead-letter semantics is still a strong reliability baseline for agent pipelines.
- A lightweight web portal (TinyOffice) gives non-terminal operators a practical control surface for tasks, logs, and settings.
- Subscription-aware provider adapters (Anthropic via Claude Code CLI, OpenAI via Codex CLI) are a pragmatic way to avoid bespoke auth complexity.
- The install path (remote-install.sh + setup wizard) is optimized for “running tonight,” which is often the difference between experimentation and abandonment.