Self-hosting Authpermit
Authpermit runs as a single node. The umbrella is a modularity boundary for the code, not a deployment boundary, so hosting it yourself does not mean orchestrating a fleet of services.
What you need
- PostgreSQL 17 with the
pgvectorextension. - The Authpermit container.
- Optionally the sidecar container, for document, face and liveness work.
cp .env.example .env && docker compose up --build
Secrets
Three are required and have no defaults: SECRET_KEY_BASE, AUTHPERMIT_VAULT_KEY and AUTHPERMIT_AUDIT_ANCHOR_KEY. In production the platform refuses to start on a development key, on a key shorter than 32 bytes, or with the demo seeds enabled. A production Authpermit holds other people's identity documents; booting on a key that shipped with the source would make every tenant's data readable by anyone with a copy.
The sidecar
Native document and biometric work runs in a separate process that holds no database credentials and no tenant data. It receives bytes, answers, and forgets — it never persists an image and never logs one. Without it, verification uses the deterministic stub engine and says so rather than pretending to have looked.
Nothing phones home
An air-gapped Authpermit is fully functional. The AI gateway falls back to an offline model, every external provider is optional, and no telemetry leaves the deployment.