What runs locally
ATB and ZKP are standard services. They enable agent session authentication — the mechanism by which agents authenticate once with a ZKP cert and receive a session JWT with a spend cap, without repeated API key exposure.
The on-premise stack includes Substrate 2, the commercial evidence layer, with post-quantum signatures, zero-knowledge reputation, cross-issuer federation, and self-verifiable retention chains as standard. There is no separate Substrate 2 purchase; it ships as part of the Enterprise and On-premise plans.
Prerequisites
- Docker Engine 24+ and Docker Compose v2
- An AlgoVoi account with an active API key — sign up
- A wallet address on at least one supported chain (Algorand, VOI, Solana, Base, Stellar, Hedera)
- An AlgoVoi licence token (see Step 1 below)
Quickstart
Step 1 — Activate your licence
CallPOST /atb/license/activate on the AlgoVoi gateway with your API key. This issues a Falcon-1024 signed licence token that your local gateway validates on startup.
licence_token — you will need it in Step 3. The token is valid for one year and must be renewed before expiry.
Fetch the AlgoVoi public key for licence verification:
ATB_LICENSE_PK_B64 in your .env.local.
Step 2 — Download the deployment files
You receive two files with your licence —docker-compose.local.images.yml and env.local.template. No source code is required or provided.
.env.local and fill in the required values. Generate the cryptographic keys:
Step 3 — Run migrations
Step 4 — Start the stack
Step 5 — Verify
Chain support
The stack ships with free-tier public node defaults for all 7 chains. For production workloads, replace with dedicated node endpoints in.env.local:
Unsupported chains (no wallet address set) are silently disabled — payment requests on those chains return a clear error rather than failing silently.
Licence mechanics
The local gateway validatesATB_LICENSE_TOKEN on startup using the embedded ATB_LICENSE_PK_B64 public key. Verification is fully offline — no network call required.
- Token lifetime: 1 year from issuance
- Renewal: call
POST /atb/license/activatewith your API key before expiry; updateATB_LICENSE_TOKENin.env.localand restart the gateway - Failure mode: if the token is absent, expired, or invalid the gateway starts in restricted mode — health check passes but payment routes return
503
Agent session auth
Agent session authentication is enabled by default. Theatb-zkp-service and bench are standard services in the stack.
Once the stack is running, agents can:
- Complete ATB evaluation at
http://localhost:8090 - Receive a Falcon-1024 signed ZKP cert
- Exchange the cert for a session JWT at
POST http://localhost:8080/auth/token - Use the session JWT on all payment routes with the configured spend cap
Stopping the stack
Updates
Pull the latest images and restart:latest, set ALGOVOI_VERSION in your .env.local:
Security hardening
TLS termination (required for production)
Front the gateway with nginx. A reference config is included indocs/nginx.local.conf.
.env.local:
Protect .env.local
The .env.local file contains all cryptographic keys. Restrict access immediately after creation:
- HashiCorp Vault — inject secrets via
vault agentorenvconsul - AWS Secrets Manager — use
aws secretsmanager get-secret-valuein an entrypoint script - Docker Secrets (Swarm mode) — use the
secrets:block in docker-compose
Licence revocation
The gateway checksATB_LICENSE_REVOCATION_URL on startup and every ATB_LICENSE_REVOCATION_INTERVAL_SECS (default 24 h):
- Network unreachable → fail-open, gateway continues operating
{"revoked": true}→ gateway enters restricted mode, payment routes return503- Licence token expired → restricted mode on next startup
Admin API key
TheADMIN_API_KEY grants full tenant provisioning access. Treat it as a break-glass credential:
- Use a strong random value (48+ hex chars):
python3 -c "import secrets; print('admin_' + secrets.token_hex(24))" - Do not embed it in automation scripts
- Rotate it after any suspected exposure via the admin API
Resource limits
The compose file sets CPU and memory limits per service. Adjust for your hardware:Audit chain trust model
On the hosted AlgoVoi platform, the audit chain (SHA-256 JCS hash-chained rows) is stored in Backblaze B2 with Object Lock COMPLIANCE mode — making it immutable for the statutory 7-year retention period and independently verifiable by a third party. On an on-premise deployment, the operator controls the database. The hash chain is technically correct (each row’scontent_hash and prev_hash are cryptographically linked), but a database administrator with write access could truncate or modify rows.
Mitigations available:
- Enable periodic export of the audit chain to an immutable external store (S3 Object Lock, Backblaze B2 COMPLIANCE, Azure Immutable Blob)
- Use the
algovoi-audit-verifierpackage to run independent chain verification on a schedule - For MiCA / PSD2 compliance, document your immutability controls in your DPIA
GDPR / data controller responsibility
When you run the stack on your own infrastructure, you become the data controller for:- Tenant account data and API keys
- Payer references (content-addressed
sha256:{hex}— not raw wallet addresses) - Compliance screen results (ALLOW / REFER / DENY) and their timestamps
- Webhook delivery logs
- Retaining payment records for the statutory period (MiCA Art. 80: 5 years; UK FCA: 6 years)
- Implementing a GDPR deletion path for
REFERscreening records - Notifying your DPA of the deployment if required under GDPR Art. 30
algovoi-audit-verifier package assists with statutory retention verification.
Supply chain integrity
The deployment uses pre-built images fromghcr.io/chopmob-cloud. Source code is not distributed with the on-premise package.
To verify image integrity:
See also
- Agent Session Authentication — session tokens and spend caps
- ATB Pass Certificate — reputation-gated pricing
- Canonicalisation substrate — the JCS discipline underlying all receipts
- Substrate authorship and provenance — AlgoVoi authorship record