By flyingImer
Multi-channel, multi-agent room multiplexer for Claude Code and Codex. Supports shared Slack/Telegram rooms, lazy agent slots, visible agent identity, and Agent SPI routing.
Manage Slack channel access — approve pairings, edit allowlists, set DM/channel policy. Use when the user asks to pair, approve someone, check who's allowed, or change policy for the Slack channel.
Use when an independent CCM worker must audit implementation, reports, source material, claims, security impact, user impact, or stage acceptance evidence.
Use when starting or adopting a CCM Git-backed orchestration initiative, setting up docs/orchestration state, GitHub repo policy, coordination branch, or durable intake.
Set up the Slack channel — save bot/app tokens and review access policy. Use when the user pastes a Slack bot token, asks to configure Slack, or wants to check channel status.
Use when ChatGPT or a Guiding Principal must export advisory CCM orchestration judgment as a standardized packet for an Orchestrator to import later.
Admin access level
Server config contains admin-level keywords
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Multi-channel, multi-agent session multiplexer for Claude Code and Codex. One lightweight daemon routes Slack + Telegram conversations to CCM rooms; each room owns a cwd, a default agent, and lazily-created agent sessions.
Talk to Claude Code or Codex from your phone. Let multiple agents coexist in one Slack/Telegram thread, with visible agent identity headers and on-demand context fetching instead of daemon-side conversation memory.
Slack / Telegram
│
▼
ChannelAdapter (platform send/receive, files, reactions, buttons)
│
▼
daemon.ts
- lightweight room router: cwd, default agent, lazy slots
- no daemon conversation memory or unread peer inbox
- visible identity headers for shared transcript UX
│
▼
AgentRegistry / AgentDriver SPI
├─ ClaudeChannelAgentDriver
│ wraps the existing Claude Code channel/MCP notification bridge
│ because Claude Code has no Codex-style app-server inbound API
└─ CodexAppServerAgentDriver
owns `codex app-server --listen stdio://`, sends `turn/start`,
receives app-server events, and injects the CCM MCP server
| File | Role |
|---|---|
daemon.ts | Core orchestrator: room commands, bindings, lazy session lifecycle, Agent SPI routing |
agents/types.ts | Shared Agent SPI types: sessions, turns, capabilities, events |
agents/registry.ts | Runtime registry for current and future agent drivers |
agents/claude/channel-driver.ts | Claude driver that encapsulates current channel notification transport |
agents/codex/app-server-driver.ts | Codex driver that uses Codex App Server for inbound/session/events |
agents/codex/app-server-client.ts | Minimal stdio JSON client for codex app-server |
server.ts | Per-agent MCP bridge and tools: reply, react, edit, attachment, fetch_thread |
adapters/types.ts | ChannelAdapter interface |
adapters/slack.ts | Slack Socket Mode + Web API + slash commands + modal search |
adapters/telegram.ts | Telegram Bot API long poll + force_reply search + bot commands |
escort.ts / zellij-plugin/ | Claude UI support: zellij helpers and optional pane watcher |
Claude and Codex intentionally share the same high-level SPI, not the same low-level transport. Codex can be cleanly app-server driven. Claude is encapsulated behind ClaudeChannelAgentDriver, but internally still needs channel notification support from server.ts; a plugin/MCP tool alone is not enough to deliver inbound user turns to Claude Code.
ccm /repo binds the room; claude: or codex: starts that agent only when cued🟣 Claude, 🟢 Codex) so users and peer agents can see who said what/ccm, /cc, and /cx commands (Slack + Telegram)Type in any connected Slack channel or Telegram chat (plain text or /ccm slash command):
| Command | Action |
|---|---|
ccm | Directory picker for the room |
ccm /path/to/dir | Bind this room to a cwd; does not start agents |
claude: ... / @claude ... | Send a turn to Claude, lazy-starting its slot if needed |
codex: ... / @codex ... | Send a turn to Codex, lazy-starting its slot if needed |
| `ccm default claude | codex` |
@agents ... / agents: ... | Fan out one turn to all agent slots, without recursive auto-rounds |
ccm agents | Show room cwd, default agent, and agent slot status |
ccm route | Explain how the next plain message routes |
ccm new [agent] / ccm start [agent] | Start a fresh agent slot session in this room |
ccm resume [agent|id] | Interactive session picker, or resume a specific session into this room |
ccm stop [agent|id] | Stop one agent slot session; if other rooms reference it, unbind those rooms first |
ccm find <query> | Fuzzy search directories |
ccm help | Status + commands + action buttons |
Claude Code terminal commands (forwarded only to the Claude slot):
npx claudepluginhub flyingimer/claude-channel-mux --plugin claude-channel-muxMemory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Streamline people operations — recruiting, onboarding, performance reviews, compensation analysis, and policy guidance. Maintain compliance and keep your team running smoothly.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.
Create content, plan campaigns, and analyze performance across marketing channels. Maintain brand voice consistency, track competitors, and report on what's working.
Prospect, craft outreach, and build deal strategy faster. Prep for calls, manage your pipeline, and write personalized messaging that moves deals forward.