Open source · MIT · TypeScript

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.

No vendor lock-in Provider-agnostic, by config.
Compliance-ready Traceable & auditable always.
Faster signoff Approval-ready by structure.
Scroll
PROVIDER-AGNOSTIC · NO LOCK-INOPENTELEMETRY ON EVERY MESSAGEAUDIT BY ROUTING · NOT BY HANDWORKIAM AT THE CONTRACT BOUNDARYREVIEWABLE BY STRUCTURETYPESCRIPT END-TO-END · MITPROVIDER-AGNOSTIC · NO LOCK-INOPENTELEMETRY ON EVERY MESSAGEAUDIT BY ROUTING · NOT BY HANDWORKIAM AT THE CONTRACT BOUNDARYREVIEWABLE BY STRUCTURETYPESCRIPT END-TO-END · MIT
What is PURISTA?

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.

How it works

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.

Read the full concept in the Handbook →
  • 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.

Choose your path

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.

Open source

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.

Get started

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.