Skip to main content
Self hosted Parmana is the same server as the hosted API, packaged to run on your own infrastructure with one command. Decisions, signatures, the audit trail and the Trust Records stay in your deployment. Nothing is sent to Parmana or to anyone else.

Quickstart

Running, with a policy approved and a first signed decision, in about 15 minutes.

Offline verification

Prove that enforcement works with no internet connection.

When to self host

What runs

docker compose up -d --build --wait starts five services, in this order: The api service starts only after the other four have finished without error. Full details, including every file and setting: Configuration reference.

What stays inside your deployment

  • Decisions. Policy evaluation runs in the api container against policies stored in your Postgres.
  • Signing keys. Two Ed25519 key pairs, generated on your machine, stored in ./parmana-local/keys. Parmana never sees them.
  • Records. Trust Records, Refusal Records, Execution Intents, the caller audit trail and policy approvals are stored in your Postgres.
  • Verification. A record verifies with only your public keys, on any machine, with no network call.
The server makes an outbound call only to a system you configure: a connector such as your Paytm agent, or AWS KMS if you choose it for signing. With none configured it makes none. The offline check proves this by running the whole flow on a Docker network that has no route to the internet.

Production rules are not relaxed

The self hosted server enforces every rule the hosted API enforces:
  • Every request needs an API key, and a key acts only for its own caller ID unless it lists others.
  • A policy authorizes nothing until two different people have approved it, one of them with a signed step up authorization. See Approve a policy.
  • Before an action is released, the server signs and stores an Execution Intent. If it cannot, nothing is released.
  • A connector must be reached over HTTPS.

Requirements

Limits

  • One server, one database. No replicas and no failover are set up.
  • Signing keys are files. They sit in ./parmana-local/keys on the host. Protect and back up that directory. See Operations.
  • Approvers sign on their own machine. With either SDK 1.3.0 (signPolicyChangeStepUp() from npm, sign_policy_change_step_up() from PyPI), or with the repository’s script. See Approve a policy.
  • Where it is verified. On Docker Desktop 29.8.0 on Windows 11, and on every change in CI on Linux (.github/workflows/docker-image.yml, job self-hosted).