I built an agent “backplane”: one router, pluggable agents, hardened sandbox — works with the OpenAI API

Backplaned — a backplane for your agents

Most agent frameworks are libraries you wire together in one process. Backplaned is the opposite idea: a small, self-hosted router that sits in the middle like a message bus, and every agent — first-party or your own — plugs into it over a single WebSocket protocol. The router owns task routing, access control, file transfer, and agent identity, so agents stay tiny and composable.

It’s provider-agnostic — point it at OpenAI (GPT models + text-embedding-3-small), Anthropic, Gemini, or any OpenAI-compatible/self-hosted endpoint, with per-tier model presets (lite / balanced / pro / embedding) and fallback chains, all managed from an admin UI.

Repo: https://github.com/SJK-py/backplaned-agents

License: MIT

Why it’s different

  • :satellite: Router-as-ESB. Agents run anywhere and connect over WS. Task lifecycle, group-based ACL, and proxy file storage are handled centrally.
  • :locked_with_key: Invitation-based onboarding + self-healing auth. Agents onboard with single-use tokens and JWT-signed sessions; they re-onboard automatically if their credential is rotated out from under them.
  • :toolbox: A full assistant suite out of the box: long-term memory + knowledge base (LanceDB vector + FTS), web research (SearXNG / Brave / Kagi), document → Markdown conversion, scheduled/cron tasks, and an MCP bridge (connect external MCP servers and expose router agents as MCP tools).
  • :test_tube: Genuinely hardened code sandbox. Untrusted code runs as root-dropped-to-per-user-uid, cap_drop: ALL + only SETUID/SETGID/CHOWN, no-new-privileges — not just “we ran it in a container.”
  • :globe_with_meridians: Channels: a browser web app (multi-session chat, file inbox), plus Telegram and KakaoTalk bridges.
  • :ship: Production Docker, not a toy compose. Caddy edge with multi-identity TLS (public domain via tunnel and bare-LAN-IP at once), Postgres, Redis, SeaweedFS (S3), one-command launcher that generates your env + Caddyfile.

Build your own agent in a few lines

The SDK (bp_sdk) handles onboarding, reconnects, and the protocol — you write handlers.

Quick start

git clone https://github.com/SJK-py/backplaned-agents
cd backplaned-agents
scripts/prod.sh   # prompts for your LLM provider + key, generates everything

:folded_hands: Looking for feedback

I’d love thoughts on the router/protocol design, the sandbox model, and where the SDK ergonomics could be better. Happy to answer anything about the architecture.