How it works
Request → response, 10,000 ft
Every board exposes the same REST surface under /api/srv/<board>/: tables, records (CRUD + query + aggregate + search), auth, files, recipes, jobs, keys, realtime events. One process serves all boards; a tenant key scopes every node in storage, so isolation is structural, not conventional.
Storage: three layers
HelixDB holds records as graph nodes with routing properties (table, seq, board_id) plus the JSON payload; queries push predicates down and filter the rest in Rust. SlateDB gives Helix an LSM key-value layer, MinIO/S3 holds the actual bytes. The engine only knows the Database trait — swap any layer by config.
Caching + singleflight
CachedDatabase fronts everything with a 30s result cache. Identical concurrent misses share one backend query (singleflight) instead of stampeding. Writes invalidate per-table. Warm reads cost zero network round-trips.
Automations without infrastructure
Recipes trigger on record events or cron and run sandboxed actions: HTTP $call with secret substitution, $set/$merge field writes, $create_user, $transaction patches. Webhooks are a separate signed delivery queue with exponential backoff — never inline, never blocking the write path's lock.
Agent-first operations
Everything is also an MCP tool: apps.create, tables.create, records.bulk, recipes.add, graph.sync, secrets.set... An AI agent can scaffold and operate a full app (schema, data, automation, frontend upload) through one JSON-RPC endpoint.
Embeddable by construction
The engine crate compiles with zero external I/O dependencies for tests (in-memory adapters) and speaks two traits — Database + ObjectStore. serverless- engine-rs drops the whole platform into any Rust binary as a library; the daemon you deploy is just a thin host around it.
The diagram
clients (SPA / curl / agents)
│ REST /api/srv/<board>/… MCP /mcp (JSON-RPC tools)
▼
srv daemon ── static files /srv/<board>/ (object store)
│ admission permits · result cache · singleflight
▼
engine core (Rust) ── recipes · webhooks · cron · auth · audit
│ Database trait
▼
HelixDB (graph nodes, tenants)
▼ SlateDB (LSM) ──► MinIO / S3 (durable bytes)Deep dives live in the posts — start withthe write path.