Skip to main content
On-premise deployment is currently in development. The Docker Compose stack and licence activation are available now for early adopters. Contact us to register interest ahead of general availability.
The AlgoVoi on-premise stack lets regulated, enterprise, or high-volume deployments run the full payment gateway locally. After a one-time licence activation, the stack operates independently — no API calls back to AlgoVoi during payment flows.

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

Call POST /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.
Response:
Save 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:
Save this value as 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.
Open .env.local and fill in the required values. Generate the cryptographic keys:
Generate your ATB bench Falcon-1024 keypair:
Set your facilitator wallet addresses for the chains you want to support:
Set the licence fields:
Set your gateway’s public URL (used in hosted checkout links):

Step 3 — Run migrations

This applies all 118 database migrations to a fresh postgres instance. Safe to run again — all migrations are idempotent.

Step 4 — Start the stack

Check all services are healthy:
Expected output:

Step 5 — Verify

Create your first tenant via the admin API:

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 validates ATB_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/activate with your API key before expiry; update ATB_LICENSE_TOKEN in .env.local and 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. The atb-zkp-service and bench are standard services in the stack. Once the stack is running, agents can:
  1. Complete ATB evaluation at http://localhost:8090
  2. Receive a Falcon-1024 signed ZKP cert
  3. Exchange the cert for a session JWT at POST http://localhost:8080/auth/token
  4. Use the session JWT on all payment routes with the configured spend cap
See Agent Session Authentication for the full flow and request/response shapes.

Stopping the stack

Updates

Pull the latest images and restart:
To pin to a specific version rather than latest, set ALGOVOI_VERSION in your .env.local:

Security hardening

The default configuration binds the gateway to 127.0.0.1 only and includes no TLS. You must add TLS termination before handling real payments. Plain HTTP connections expose API keys, session tokens, and payment receipts.

TLS termination (required for production)

Front the gateway with nginx. A reference config is included in docs/nginx.local.conf.
Set in .env.local:
For internal deployments without a public domain, use a self-signed certificate:

Protect .env.local

The .env.local file contains all cryptographic keys. Restrict access immediately after creation:
For production deployments, use a secrets manager rather than a flat file:
  • HashiCorp Vault — inject secrets via vault agent or envconsul
  • AWS Secrets Manager — use aws secretsmanager get-secret-value in an entrypoint script
  • Docker Secrets (Swarm mode) — use the secrets: block in docker-compose

Licence revocation

The gateway checks ATB_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 return 503
  • Licence token expired → restricted mode on next startup
Renew your licence token before expiry:

Admin API key

The ADMIN_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

The on-premise audit chain does not have the same tamper-evidence guarantees as the hosted platform.
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’s content_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-verifier package 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
AlgoVoi’s role shifts from data controller to data processor (or is eliminated entirely if you hold no data on our systems). You are responsible for:
  • Retaining payment records for the statutory period (MiCA Art. 80: 5 years; UK FCA: 6 years)
  • Implementing a GDPR deletion path for REFER screening records
  • Notifying your DPA of the deployment if required under GDPR Art. 30
The algovoi-audit-verifier package assists with statutory retention verification.

Supply chain integrity

The deployment uses pre-built images from ghcr.io/chopmob-cloud. Source code is not distributed with the on-premise package. To verify image integrity:
Image signing via Sigstore / Cosign is on the roadmap for the GA release. Signed manifests will allow cryptographic verification without trusting the registry.

See also