Skip to content

Architecture

Suggest Edits

Bakin runs as one Bun process — host, plugins, MCP server, file watcher, runtime adapter, all in the same binary. Single executable, no SaaS dependencies. Your Mac mini, your data, your network.

INTERFACE
Bakin Interface
Discord
Telegram
ACCESS
API
CLI
MCP
RUNTIME ADAPTER
OpenClaw
Hermes
Others…
SEARCH ADAPTER
Antfly
Others…
AGENT KITS
Development
BizDev
Support
Others…
INGREDIENTS
Workflows
Health Checks
Skills
Hooks
Lessons
Etc.
PLUGINS
Tasks
Workflows
Etc.

Plugins ship code. They contribute nav, routes, hooks, exec tools, search content types — whatever surface they need. The host owns the parts that should never fragment: permissions, routing, lifecycle, audit, search provisioning. That split keeps the product coherent no matter how many plugins land.

Adapter boundaries for the parts that change

Section titled “Adapter boundaries for the parts that change”

The agent runtime and search engine are the components most likely to swap. They live behind contracts. The rest of Bakin talks to those interfaces — not OpenClaw or Antfly directly. Replacing a provider means writing an adapter, not refactoring the app.

Tasks, assets, plugin storage, audit, agent memory — markdown, JSON sidecars, JSONL logs, all in ~/.bakin/. Readable by humans. Version-controllable. Backups are a cp -r. There’s no opaque database to reason about.

State changes push over SSE. The UI doesn’t poll — it observes. File watcher events feed indexing. Audit feeds search. The system stays in sync without a separate coordination layer.

Plugins reshape the product without forking it. Runtime providers are interchangeable. Every change is a git diff against a flat tree. And because everything happens in one process on your hardware, the whole thing is debuggable end-to-end with the tools you already know.