Applications decide
- Product UX, routes, and presentation models
- Vertical meaning and domain vocabulary
- Which capabilities an organisation publishes, and when
- Which persistence client binds TDb
An enterprise composable architecture says a capability is built once and reused everywhere. TechFabric Platform is what makes that stick: capabilities publish contracts, every write passes one governed pipeline, and surfaces render from view contracts they cannot write behind.
ACTOR
Session, signed token, system or agent: one caller model
ACTION
Every mutation enters through invokeAction
POLICY GATE
Checkpoints pass, warn, or block with reasons
HANDLER
State machines constrain transitions before side effects
EVENT
AssetEvents feed projections and the audit trail
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 reach for TechFabric Platform as another application framework, which is the wrong layer to put it at. Your product surface stays yours. What Platform owns is the kernel the composable planes sit on: governed actions, the identity that reaches them, and the contracts a capability or a screen is held to.
Applications decide
Platform decides
If you need durable agent sessions, sandboxes, and portable runtimes, pair with TechFabric Harness. If the work is domain mutation with policy and evidence, start here. Read the architecture concepts.
Enterprise composable architecture
Composable is an operating decision before it is an architecture: the parts every line of business needs get built once and reused, and everything above them is configuration. The decision is only real if something enforces it, because a framework that relies on discipline forks the first time a deadline is tight.
How a surface is assembled. Promotion, scoped plans, cached templates, design tokens, renderers.
Can a business unit change it alone? Freely, within the view contract it was given.
Industry meaning. Origination, refinance, collections, encounters, repair orders.
Can a business unit change it alone? Freely, and without a second write path or a forked kernel.
The FabricModules an organisation publishes once. Party, offering, agreement, settlement, compliance.
Can a business unit change it alone? By publishing a new contract version, never by editing the old one.
Mechanism. Actions, policy, state machines, events, projections, tenancy, durable hosts.
Can a business unit change it alone? No. This is the part that has to be the same everywhere.
The bar the design has to clear is that two unlike verticals compose and render with no kernel change and no compositor change. The long version, with the certification fixtures that hold it to that, is on the framework page.
The seam
A plane boundary that is only a diagram is a boundary that moves. These two are data, they are versioned, and CI fails when one drifts.
When the platform earns its keep
Every one of these starts as a reasonable local decision under time pressure. None of them announces itself, and all four are only preventable by something that fails a build rather than by something written down.
Three business units each hold their own idea of what a customer is. The shared capability was a slide, nothing enforced it, and the second deadline forked it.
With Platform. A capability publishes a versioned contract that CI checks. A consumer depends on the contract rather than the source, and a change ships as a new version instead of an edit to a live one.
Authorization drifts into the compositor. A new surface gets a slightly different rule, and now the answer to who may do this depends on which screen you came from.
With Platform. The experience tier talks in JSON contracts. An intent resolves to an action the policy already gates, so no authorization decision lives above the seam.
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, with 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
Composable is a promise.
A kernel is what keeps it.
Reference architectures, capability catalogues and shared-service mandates all describe the same intent, and they hold for about as long as the next deadline. Platform starts where the intent stops being enough, with one pipeline, versioned contracts, and evidence that survives the request.
How it works
The same shape holds from a minimal in-memory vertical to production hosts running your store, your policy engine and your own product UI.
Register object types, actions, policies and state machines as a FabricModule. The platform owns mechanics, and your vertical owns meaning.
The module ships a versioned contract. Every vertical that needs a customer, an agreement or a settlement consumes that rather than writing its own.
A session, a signed token or a system path: every mutation enters invokeAction, and policy and transitions run before a handler touches state.
Handlers emit AssetEvents and projections build read models. The experience tier reads those through a view contract and raises intents back through the same gate.
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
A UI click, an AI agent call, a signed-token request, a scheduled worker: every domain mutation travels the same path. There are no exceptions and no side doors.
// Every domain mutation, from a UI, an agent, a token or a 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.
The runtime core ships with zero runtime dependencies.
No ORM, no driver, no persistence opinion in the core.
Domain words never leak into platform contracts.
Every contract is parameterised by TDb so you bind your own client.
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.Contact
Evaluating Platform for a regulated vertical, or looking for a governed mutation boundary underneath your agents? Send a note and an engineer replies.
Define an entity, register an action, and watch the invocation travel policy, state, handler and projection, with evidence emitted at every step.
Enterprise Composable Framework →Questions? Talk to the team →
TechFabric Platform is built and supported by TechFabric.
Contact the team