A lightweight harness wiring chat channels (Telegram, CLI, more) to Claude with smart model routing.
Many channels in. One brain out. A plexus.
v0.1 — early. Telegram and CLI channels work. Router picks Sonnet by default and Opus for coding tasks.
bun install
cp .env.example .env # fill in keys
bun startSet PLEXUS_CHANNELS=cli to chat locally without Telegram.
channel(s) ── IncomingMessage ──► router ──► agent (Claude Agent SDK) ──► reply
│
└─ picks model per message
src/channels/— adapters implementing theChannelinterfacesrc/router.ts— hybrid: heuristic short-circuit + Haiku classifier fallbacksrc/agent.ts— wraps the Claude Agent SDKquery()loopsrc/state.ts— per-conversation model override and session resume
/model opus|sonnet|haiku— pin a model for this conversation/model auto— let the router decide (default)/reset— drop conversation context/cost— show recent usage
MIT.