BotMux bridges instant-messaging platforms and AI coding command-line tools. A resident daemon watches Feishu and Lark messages, spawns a separate session process for each new topic, and streams that CLI's output back as a live-updating Feishu card, with an interactive web terminal alongside it. One topic maps to one CLI session, kept in sync across phone, desktop, and terminal, so you can check on a run, ask a follow-up, or interrupt it from anywhere.
The design bridges whole CLI processes rather than rebuilding agent capabilities on a software development kit (SDK). Memory, context management, tool calls, permission handling, plan mode, slash commands, and MCP support come from the CLI itself and usually carry over when the CLI is upgraded; adapters need updating when a CLI changes its interface, arguments, output format, or resume semantics. The daemon wraps your plain-language message into a structured prompt before handing it to the CLI.
More than 20 adapters are registered, chosen per bot with a cliId in bots.json and switchable for a session with /cli before it starts, after which the choice is frozen for that session. They cover local CLIs run as isolated processes you can reach with tmux attach — among them claude-code, codex, gemini, cursor, opencode, antigravity, copilot, grok, kiro-cli, dsh, and hermes — as well as API-driven and cloud agents. Several bots backed by different CLIs can share one group and be addressed by @mention, so two agents can review the same merge request independently and disagree.
Sessions are portable. /adopt takes over a CLI already running in a local tmux session, and /relay moves an entire session — original process and memory — into another group. Beyond that, the daemon supports scheduled tasks described in natural language, webhook and API task triggers, an oncall mode anchored to a project directory, a file sandbox that requires bubblewrap on Linux and refuses to start when isolation fails, a management dashboard, and optional text-to-speech summaries on each card. Per-bot response feedback with three fixed states can be enabled, stored locally in SQLite and optionally forwarded through a durable webhook outbox.
BotMux runs as a self-contained single-file binary on Linux and macOS for x64 and arm64, with musl variants selected automatically; on Windows it needs WSL 2, because the daemon depends on PTY, tmux, and Unix signals.
Features
- Live streaming cards: each turn renders as a Feishu card that refreshes in place, with show/hide, paging, restart, close, and takeover controls
- Interactive web terminal: operate the CLI from a browser or phone, with a floating shortcut bar for Esc, Ctrl+C, and arrow keys on mobile
- 20+ CLI adapters: switch with a cliId in bots.json, or per session with /cli before the session starts
- Multi-bot routing: several bots running different CLIs share a group and are addressed by @mention
- Multi-topic orchestration: an orchestrator seeds topics, starts one session per bot, and tracks subtasks on a Feishu task panel
- Session adoption and relay: /adopt takes over a running local tmux session, /relay moves a session into another group intact
- Scheduled and triggered runs: natural-language recurring tasks plus webhook and API task triggers
- Oncall mode: anchor a group to a project directory so any member can investigate by @mentioning a bot
- File sandbox: bubblewrap-backed isolation on Linux that refuses to start a session when isolation cannot be established
- Response feedback: optional three-state feedback buttons per bot, stored locally with an optional webhook outbox
- Self-contained binary: the daemon embeds its own runtime and PTY support, with no Node runtime required for BotMux itself
Integrates with
Claude Code
Terminal-based agentic coding tool that reads your codebase and runs tasks through natural-language commands
Codex
Lightweight coding agent that runs in your terminal
Hermes
Self-improving AI agent with a learning loop that creates and refines skills, recalls past sessions, and runs across chat platforms
OpenCode
Open-source AI coding agent that runs in the terminal, an IDE, or a desktop app
