Technology · Architecture

The full system, end to end.

A hybrid, event-driven design. FlashBrain is the single orchestrator — it answers in real time and launches and tracks longer jobs; each of those is carried out by a Brain Worker with its own memory and tools. Solid lines are direct calls (hot path); dashed lines are events on the shared bus.

Zaelar's own code — voice, FlashBrain, Brain Workers, connectors Local, on disk — memory (SQLite + vector + graph) Pluggable executor — Claude Code · Codex Cloud APIs — models, embeddings, web search
Fullscreen
View full diagram →

Everything runs as a single local process — a self-hosted install has nothing running anywhere you don't control. Above the bus sit the senses and reflexes: the UI, voice, stateless connectors and the orchestrator loop. Below it are the slower organs: widgets, Brain Workers and the central memory. Outside the process boundary: a pluggable code executor and cloud model APIs.

Hot path vs. the nervous system

Every voice turn is answered by the FlashBrain over a direct, synchronous call — no event bus in the loop, because that path has to stay under a second. Everything else — a connector message arriving, a widget finishing a background refresh, memory being updated, a Brain Worker reporting progress — travels as an event on an in-process pub/sub bus: no external broker, just async fan-out plus a durable log and a live stream to the UI.

Where work escalates

The FlashBrain resolves the moment-to-moment on its own — conversation, controlling what's on screen, a quick factual lookup. When a request needs real reasoning, multiple steps, or tool use, it hands off to a Brain Worker: a live session that plans and executes with its own memory access, then reports back through the same bus. See the FlashBrain and Brain Workers pages for the detail.

Models are sensible defaults — you choose

No model is hardcoded. Each layer — the sub-second reflex model, the Brain Worker executor, the memory distiller, the embeddings — ships with a sensible default and is picked per invocation, never by one global switch. You change any of them from the config UI, and a built-in benchmarks panel shows why each default was chosen and what you trade off by swapping it. Bring your own keys — it's all self-hosted, so which models ever see your data stays your call.

Staying healthy on its own

Think of it as three layers, and only two of them think. The FlashBrain is the mind — it decides and talks. The self-audit layer is a conscience — it reviews whether a conversation is going well. The third is an autonomic layer: like a heartbeat, it isn't a decision — it just runs, keeping the machine itself healthy so nothing degrades over time. It uses no model at all. If the real-time voice engine wedges, it recycles it — but only when you're not in the middle of talking; otherwise it just tells you. It rotates its own logs and trims stale state so a system left running for weeks stays as responsive as one just started. It lives beside the brain, never inside it, so the intelligence stays simple.