Complete architecture
Layer responsibilities
How capability comparison works
When a Foundation device starts a generator, the client and server exchange hardware information so the system can pick the right side to run on:- Client collects local capabilities. GPU/CPU info, available memory, model metadata (layers, embedding size, KV cache requirements).
- Client sends capabilities to the server along with the model identifier and requested context size.
- Server evaluates both sides by running the same guardrails code on the client’s reported caps and on its own. Each side gets a 0-100 performance score and a memory-fit verdict.
- Server returns a recommendation —
local,buttress, oreither. - Client decides based on its strategy (
prefer-local,prefer-buttress,prefer-best) and the recommendation. See Use Buttress from Foundation.
Implemented vs planned
Implemented
- Workspace JWT authentication — Ed25519 issuer per workspace, short-lived
{ k:'ba', w_id, … }access tokens. See Workspace binding. - UDP autodiscovery with signed announcements —
ANNOUNCE/QUERY/RESPONSEon UDP8089, with per-backend hardware caps in the announcement. Each bound server signs every packet with its registered Ed25519 announce key; launchers verify the signature with a 30-second replay window. Protocol version is2.0. See LAN auto-discovery. - Generator registry with reference counting — multiple clients can share a loaded model, and the server cleans up automatically when refcount hits zero.
- Queue management — hardware-aware request queuing for STT, with parallel-slot tracking visible on the
/statusdashboard. - GGML LLM, MLX LLM, GGML STT, GGML TTS, ONNX STT, and ONNX TTS backends — GGML TTS pairs a GGUF backbone with its codec / vocoder GGUF and detects the model family natively. The ONNX backends run on ONNX Runtime (Whisper for STT; Kokoro, VITS, Bert-VITS2, and SpeechT5 for TTS).
- Capability detection and scoring — same guardrails code on both sides.
- File transfer for STT — devices upload audio to
POST /buttress/upload. - Local functions (experimental) — operator-authored
.ts/.jsfiles exposed as MCP tools and HTTP endpoints, so agents can run work on the server host. Imports are limited to Node builtins, sibling files, and an allowlist ofsqlite3andsqlite-vec. Unlike every other surface, functions are fail-closed on an unbound server. See Local functions.
Planned
- Docker distribution — pre-built images with CUDA / Vulkan support.
- Multi-server pool selection — caps-aware ranking when multiple bound servers are present in the same workspace (currently last-seen wins).
- Thermal printer backend — additional offload target beyond LLM/STT.
Related
Workspace binding
How JWT auth fits into the architecture.
LAN auto-discovery
The UDP transport, announcement payload, and capability scoring.