The Architecture

solid.

How it's built — one binary, one boundary, one proof.

Reason 01–04  ·  Monitor 05–06  ·  Trust 07–08

Scroll
solid. ONE BINARY
solutions ×8
app — glue
domains 0 slices
access×5
agent×5
data×7
workflow×4
config×6
content×6
infra ×32 — storage · streams · git
workspace
prompts — who I am tools — what I touch skills — how I work
🦆 workspace quack
pip install -r requirements.txt node_modules/ — 1.2 GB venv/bin/activate helm upgrade --install docker-compose.yml webpack.config.js sidecar-proxy npm audit fix --force
$ ./solid serve
nats: embedded jetstream up
domains: 33 registered
workspaces: 4 active
listening on :80
Go · Templ · HTMX · DuckDB · NATS · SQLite · git
{ "REST" : "GraphQL" }the layer that isn't there
<p>finding…</p> <svg>chart</svg> <div>tool call</div>
solidreason.com/chat
query_catalog — 142 rows · 0.3s

domains/credential/

  • types.go the shape
  • store.go persistence
  • handlers.go http
  • views.templ the ui
  • admin.go self-registers

Every slice, in every family, has this same shape. Self-contained, compile-time checked.

query_data use_skill create_artifact comply_query delete_records admin_users other_tenant_db

conversation — append-only

user_question "any anomalies this week?"
tool_call query · 2.1k rows
llm_response 3 findings
tool_call create_artifact
feedback 👍 confirmed
your environmenta server you own and run — your keys, your model
☁ ship to a vendor cloud

Your systems

SAP · billing · CRM
databases & lakes
internal APIs
loaderruns next to the source
you ship, we ingest — signed parquet
stores we query — as you, on your expiring token
APIs we call — MCP · OpenAPI · full guardrails
▦ parquet · signed
data arrives at a server you own and run · queries never leave your environment
quack: embeddedquack://10.0.7.4:4843  ·  moving a layer is a URI change
node 1
node 2
node 3
→ scale sideways
any node serves any workspace — it just dials its quack
🦆 revenueclosed world
🦆 conductclosed world
🦆 ai-actclosed world
→ scale sideways
projection — the only thing that crosses planes
▦ telephonyparquet · signed
▦ crmparquet · signed
▦ billingparquet · signed
→ scale sideways
bare metal or VMs — no Kubernetes, no Docker required · bring them if you insist
open — fork itagent loop · UI · solutions · providers
closed — the notarystores · keys · the chain
partner fork
partner / client-x
your fork
a3f9… 8c41… e07d… 52b8… ⏱ anchored · RFC-3161
git log — config: threshold 0.8 → 0.95 · m.silva · 2026-06-03 14:02

mitigation — rotate exposed keyraised by the agent · evidence attached

agent → ratify no key to stamp with
PROPOSED IN_PROGRESS · m.silva ✓

finds are automatic — decisions are human

feedback skills prompts catalogs roadmap your model · your hardware
Reason01 / 08

One binary.

No dependency tree, no orchestration cluster, no frontend build. You hand IT one Go binary and it runs — agent loop, UI, and storage compiled into a single artifact. Boring technology, deliberately chosen.

Reason02 / 08

The server is truth.

There is no JSON API and no client state — the layer everyone expects simply isn't there. The agent streams HTML fragments over SSE; the browser shows them. The LLM's output is the interface.

Reason03 / 08

Four layers, one shape.

Solutions package. App glues. 33 domain slices in six families do the work, on infra bedrock. Every slice owns its full stack — a new capability is a new directory. Nothing else changes.

Reason04 / 08

The agent lives inside the boundary.

A workspace defines who may act and what exists. The agent gets the same ceiling a user gets — tools outside the boundary aren't refused, they're unreachable. And every step is appended to the record.

Monitor05 / 08

Sovereign by construction.

Solid runs on a server you own and run. Three ways in — data you ship, stores we query, APIs behind full guardrails — and zero ways out. When the agent touches a store it acts as you, on your own expiring token: it can never see more than you can.

Monitor06 / 08

From monolith to three planes.

Everyone starts with one binary on one server. Under load it differentiates — like an amoeba — into compute, one quack per workspace, and a lake of signed data, each scaling sideways on its own. Bare metal or VMs, no Kubernetes required — still inside your boundary, isolation enforced by the wire.

Trust07 / 08

Open agent, closed notary.

Above the line: open — fork it, extend it, resell it. Below: every bit hash-chained and anchored; every config change a git commit. And one thing the agent structurally cannot do: ratify its own decisions. Finds are automatic — decisions are human. Open data, closed proof. Trust compounds.

Trust08 / 08

The flywheel.

Every answer breeds feedback; feedback flows back into skills, prompts, catalogs — and, on the long orbit, into your model, on your hardware. Most agent frameworks are toolkits for developers. Solid is a platform for operators.

See it running.

The architecture is the pitch — but it's better live. One binary, your data, real questions.