The Fabric
What every thread inherits
An agent joining the fabric writes one handler. Everything else — identity, delivery, retries, audit, cost — is woven in underneath it.
Every message signed, addressed and deadlined
All fabric traffic moves over four topic exchanges — messages out to actors, results back, a control channel for registration and heartbeats, and an audit stream every action is published to. Every message is a signed envelope carrying a correlation id, a deadline, the sending service's identity and the requesting user.
Actions are point-to-point: one capability, one competing-consumer queue, one handler. Events fan out: anything on the mesh may subscribe. Capabilities are namespaced, so the portal asks for fabric.ai.classify without knowing — or caring — which agent replica answers.
capability: fabric.ai.classify
correlation_id: c1f7…
deadline_at: +30s
service_id: portal # HMAC-signed
requesting_user: user:1042 # identity travels
payload: { … }
Bus integrity
Per-service HMAC signatures on every envelope — a message claiming to be from the portal has to prove it. Scheduled work carries synthetic system principals, so even cron has a name in the audit log.
Callback auth
When an agent calls back into an upstream application it presents OAuth2 bearer tokens — the same authorisation path a human client would use, never a shared backdoor.
Delivery, guaranteed
Three retries on an escalating ladder — 5s, 30s, 2m — then the dead-letter queue with operator replay. Idempotency by request id, deadlines enforced, graceful drain and a 30‑second heartbeat.
Workflows that are data, not deployments
A transducer is a named, versioned graph — agent calls, sub-transducers, transforms and control flow — authored visually and executed by a runtime. Publishing one is saving it, not shipping code.
Six ways to fire
Manual, cron schedule, inbound webhook, queue listener — the primary reactive mode — the result of another actor, or a pattern matched in the audit stream. The same graph can carry any of them.
Typed at the ports
Ports derive from each agent's declared input and output schemas. Connections are JSON‑Schema validated at authoring time — an edge between incompatible shapes is refused before the workflow can ever run, not discovered in production.
You start from a growing catalogue of ready-made workflows rather than a blank page — and every graph you publish teaches the planner to draft the next one.
Metered at the moment it happens
Metered at source
Cost events land in time-series hypertables as work happens — queryable by tenant, by transducer, by trigger, with continuous aggregates keeping year-scale queries fast.
Operator-tunable rules
Pricing rules live in an editor, not a deploy: adjust a model's rates and the meter reflects it — no release, no restart.
Chargeback-ready
Tenants bring their own provider keys or pay platform rates — a per-tenant billing mode the vault resolves per request. Either way, the spend report writes itself.
Any model, resolved per request
Whatever lives inside an agent, its model calls travel one supply chain — resolved, priced and audited by the fabric.
Tenancy Vault
Provider, model routing and billing mode resolved per tenant, per request — API keys AES‑GCM‑encrypted and never leaving the vault. Agents hold an OpenAI‑compatible client and nothing else: swap the provider, not the code.
Inference Specialist
Curated open models behind the same OpenAI‑compatible surface, dispatched by opaque model name — embeddings and small specialised tasks at fabric quality without cloud-provider rates.
House style
Guidance, not law: deterministic code where it can do the job, targeted model calls for the genuinely fuzzy steps, full LLM orchestration reserved for problems that justify the cost — which is also where MCP belongs.
For agent-to-fabric paths the envelope protocol already carries identity, schemas and audit — adding MCP there would add cost and complexity with no benefit.
See a thread run end to end
A briefing walks a real workflow through the fabric — envelope to result, with the cost meter running.