Skip to main content
[AVAILABLE]. One correction to this page’s own prior claim is called out below.
Parmana is an npm/TypeScript monorepo (packages/*) plus two SDKs (typescript/, python/). Every package is independently testable; packages/api is the only one that runs as a long-lived process.

The real request path today

HTTP request


packages/api (Express server, packages/api/src/app.ts)


packages/runtime (ExecutionTrustApplication → Runtime → RuntimeEngine)

     ├─► packages/policy            (deterministic rule evaluation)
     ├─► packages/crypto            (signing, hashing)
     ├─► packages/execution-gateway (independent re-verification, connector routing)
     ├─► packages/execution-control (session credential issuance)
     └─► packages/storage           (append-only persistence)


ExecutionTrustRecord (returned to caller)
Updated 2026-07-12: this section is stale and describes an old code path. As of commit 651497a, packages/api/src/bootstrap/createExecutionSystem.ts unconditionally returns createExecutionGateway(), there is no longer an optional-gateway code path, and packages/api/src/application.ts’s createApplication() requires an executionSystem argument (server.ts always supplies one). packages/execution-gateway and packages/execution-control are in the default request path today. Every POST /execute against the stock local server gets independent content-binding re-verification, and an action with no registered connector fails closed rather than skipping the check. See Quickstart step 3 for a verified live run, and Content Binding & TOCTOU, which still describes the old gateway-optional world and needs its own rewrite (tracked for the Core Concepts pass).

Package map

See Packages for the full table with status and evidence per package. Grouped by role: Trust core: shared, policy, runtime, crypto, storage (all [AVAILABLE]); receipt and replay are [PARTIAL], real and tested but disconnected from runtime/api, see @parmana/receipt and @parmana/replay. HTTP surface: api ([AVAILABLE]) is the only long-running server. execution-system ([AVAILABLE]) is the interface createExecutionSystem() implements; today that implementation is always a full ExecutionGateway, not a bypass. Content-binding / release control: envelope-verifier ([AVAILABLE] library), execution-gateway ([AVAILABLE], wired unconditionally into the default server as of commit 651497a), execution-control ([PARTIAL], real, tested, and in the default request path for the one connector currently registered; not yet the finished cross-system claim for arbitrary connectors; see Roadmap). SDKs: python/ ([AVAILABLE]), typescript/ ([PARTIAL], real client code, but its entire test suite is currently empty and its HTTP transport does not raise on 4xx/5xx responses, see TypeScript SDK).

Why this split exists

The gateway and execution-control remain separate packages from runtime so a consuming service that embeds only the trust core (no HTTP server, no connectors) doesn’t have to pay for a Connector, NonceStore, and public key it doesn’t need. The default packages/api server is not that minimal case: it always builds the full gateway, as shown above. The Content Binding & TOCTOU page still documents the older, gateway-optional world and needs its own rewrite, tracked for the Core Concepts pass, before it can be trusted as current.