Applications decide
- Product UX, routes, and presentation models
- Vertical meaning and domain vocabulary
- Which persistence client binds TDb
- How operators and customers experience the system
Fabric Platform
Governed actions, identity, and an agent-native application runtime. Platform owns the mutation boundary; applications own product UX.
One platform · portable foundations
Zero-dependency runtime contracts that bind to your persistence client, policy engines, and vertical modules without rewriting product UX.
The 30 second answer
People often treat Fabric Platform as another application framework. That is the wrong layer. The product surface stays in your app. Platform is the ontology-native runtime for governed actions, identity into those actions, and agent-safe contracts.
Applications decide
Platform decides
If you need durable agent sessions, sandboxes, and portable runtimes, pair with Fabric Harness. If the work is domain mutation with policy and evidence, start here. Read the architecture concepts.
When the platform earns its keep
Lead with outcomes, not a catalog of packages. Platform differentiates when agents write state, when audit is reconstructed after the fact, or when a vertical forks the core.
A model gets a raw SQL tool or a private API. Mutations skip product policy, leave no audit trail, and nobody can reconstruct what changed.
With Platform. Agents call the same invokeAction surface as the UI. Policy, state machines, and evidence attach before side effects land — no special AI endpoint.
Handlers write state first. Compliance asks for proof. You scrape logs and hope the critical path left a breadcrumb.
With Platform. Policies evaluate at checkpoints. AssetEvents are immutable evidence. Projections rebuild read models; audit is not a retrofit.
Lending vocabulary, Prisma drivers, and product routes entangle the platform. The next vertical rewrites half the core.
With Platform. Platform stays vertical-agnostic and TDb-parameterized. Boundary tests reject domain words and concrete database clients in the core.
The product boundary
Ontology and governed mutation
are the product boundary.
CRUD tables, private agent tools, and request-scoped writes exist everywhere. Platform starts where those patterns stop: one pipeline, shared policy, and evidence that survives the request.
How it works
A coherent contract from a minimal in-memory vertical to production hosts with your store, policy engine, and product UI.
Register object types, actions, policies, and state machines as a FabricModule. The platform owns mechanics; your vertical owns meaning.
Session, signed token, or system/agent path — every mutation enters invokeAction. Policy and transitions run before handlers mutate state.
Handlers emit AssetEvents. Projections build read models. Replay rebuilds views. Product UX stays outside the mutation boundary.
Call paths
Every mutation reaches invokeAction through one of three paths — each with its own auth model, all with the same policy gate.
The Platform difference
Agent loops and CRUD APIs exist in many stacks. Platform differentiates where domain writes must stay policy-bound, agent-safe, vertical-portable, and reconstructable from evidence.
Object types, actions, events, policies, and state machines are first-class. Product screens are projections of that vocabulary.
UI clicks, agent tools, magic links, and scheduled workers share invokeAction. There is no fourth path and no silent write.
Checkpoints evaluate before handlers and adapters run. Outcomes pass, warn, or block with reasons that survive the request.
Immutable AssetEvents record what happened. Projections derive views; replay rebuilds them without losing source truth.
Zero runtime dependencies, no embedded ORM, TDb-parameterized persistence, and CI boundary tests against vertical leakage.
Complete runtime
The differentiators are ontology, one pipeline, and agent-native governance. The package also ships the registries, host contracts, and patterns needed to bind a real vertical.
A single entry point for mutation from trigger to projection.
Structure the domain without burying invariants in handlers.
Treat policy as part of the runtime, not a later compliance layer.
Make agents first-class callers of the same governed surface.
Keep every state change reconstructable and attributable.
Stay portable across persistence clients and verticals.
Workloads
Use the same runtime for product backends, agent-facing domains, vertical modules, compliance planes, and event-sourced read models.
The one-line invariant
UI click, AI agent call, signed-token request, scheduled worker — every domain mutation travels the same path. There are no exceptions and no side doors.
// Every domain mutation — UI, agent, token, or worker —
// enters through the same governed path.
Actor
→ ActionInvocation
→ PolicyEvaluation
→ StateMachine
→ Handler / Saga
→ AdapterInvocation
→ AssetEvent
→ Projection
// Agents and humans both call invokeAction.
// Policy treats them by capability, not by caller type.What @fabricorg/platform is
The package is a set of contracts and a pipeline, not a full-stack product. It stays portable because the boundary is enforced by tests, not convention.
01
The runtime core ships with zero runtime dependencies.
02
No ORM, no driver, no persistence opinion in the core.
03
Domain words never leak into platform contracts.
04
Every contract is parameterised by TDb so you bind your own client.
05
Vertical names, Prisma, and concrete database imports fail CI if they leak in.
FAQ
Use these when someone asks what Platform owns, how agents fit, or how this relates to Harness.
invokeAction, events as evidence, and agent runtime contracts. Your application owns product UX, routing, presentation models, and vertical meaning. See ontology-based design.examples/minimal-vertical to walk one action through policy, state, handler, event, and projection.Define an entity, register an action, and watch the invocation travel policy, state, handler, and projection — with evidence emitted at every step.
Fabric Platform is built and supported by TechFabric.
Contact TechFabric