Enterprise TypeScript backends.
An open-source framework for backends regulated teams can actually approve. Provider-agnostic by construction. Traceable and auditable end to end. Reviewable by structure — not by archaeology.
A backend with six properties enterprises actually care about.
Every service you build with PURISTA has the same anatomy and the same enterprise guarantees. Typed contracts, explicit owner, IAM at the boundary, automatic tracing, provider-agnostic adapters, and runtime portability — baked into the shape, not bolted on after.
Built into every service .
These are not features your team has to wire up. They are properties of the shape — read the in-depth pillar diagrams on the Enterprise page.
Provider-agnostic
Brokers, secrets, stores and queues plug in through adapters. Swap them by config, never by code.
Traceable & auditable
OpenTelemetry on every command, subscription and stream. Spans emitted by routing — no instrumentation code in your handlers.
Approval-ready by structure
Security, ops, compliance and architecture all review the same artifact — the declared contract.
One shape. Every primitive.
PURISTA organises backend code into services — each one a bounded business context. Inside, you compose primitives: Commands for typed request-reply, Subscriptions for passive event reactions, Streams for long-running flows, Queues for durable work, and AI Agents for orchestrated LLM workflows. The event bridge routes all of them. Your logic never imports the broker.
- Business logic first
Every service is a single business entity. Its primitives — commands, subscriptions, streams, queues, agents — are its only public surface. Infrastructure plugs in at boot, never imported inside your logic.
- Strict separation
The "outside world" is a black box with well-defined interfaces. Every primitive — whether a command, subscription, stream, queue or agent — interacts with other components only through known contracts. No shared state, no tight coupling.
- Stateless by design
Business logic stays stateless. Config, secret and state stores are injected into the handler context — typed and validated, never fetched directly. Scaling is a matter of routing, not coordination.
- Observable by structure
OpenTelemetry spans and error handling happen at the routing layer around your handler. Structured logs carry principalId and tenantId — giving you the foundation for audit logic without writing extra code. Traceability is not an annotation you add — it is a property of the shape.
Four surfaces. One framework .
Each path below leads to the surface built for you — a brief for decision makers, a deep-dive for developers, a standalone package for AI-coding teams, and a step-by-step handbook.
Enterprise
Reviewable by structure. Operable on principle. Approval-ready by design — every data flow, owner, IAM boundary, and audit trail is explicit in code.
- CISO · data flow
- CTO · operability
- CFO · approval ROI
Framework
Services made of commands, subscriptions and streams. Strict separation between business logic, the event bridge, and runtime adapters. TypeScript end-to-end with Zod-validated contracts.
- Commands · subscriptions · streams
- Event bridge · adapters
- Same code, any runtime
AI Harness
An independent TypeScript package for typed, sandboxed, observable LLM agents inside your application boundary. Provider-neutral. Self-hosted. Built for production.
- Models · tools · skills
- Sandbox · MCP · agents
- Eval · audit · checkpoints
Handbook
Step-by-step path from your first service to enterprise patterns. Mental model, building blocks, stores, bridges, deployment, observability, learning paths.
- Mental model · philosophy
- Building blocks · stores
- Enterprise patterns · ops
You own the framework. We just maintain it.
PURISTA and AI Harness are MIT-licensed, published under @puristajs on npm, with public roadmaps on GitHub. Fork the adapters, audit the runtime, contribute upstream.
Build a backend reviewers can read .
Read the handbook, scaffold a service, run it on your laptop, then promote it to wherever it pays — without rewriting business code.