Skip to main content
Key0 ships in two deployment modes. Both use the same payment engine, state machine, and security invariants — the difference is how you integrate and where token issuance lives.
Run Key0 as a pre-built Docker container alongside your existing API. No code changes required.
docker compose -f docker/docker-compose.yml --profile full up
  • Published to Docker Hub as key0ai/key0
  • Configure via the browser-based Setup UI at /setup, or through environment variables
  • Token issuance is delegated to your ISSUE_TOKEN_API endpoint — Key0 POSTs to it after a successful payment and forwards the credential back to the agent
  • Docker Compose profiles control which infrastructure is managed for you:
ProfileWhat it includes
(none)BYO Redis and Postgres
redisManaged Redis
postgresManaged Postgres
fullManaged Redis + Postgres (batteries included)
Best for teams that want a quick deploy, prefer Docker-native workflows, or want to avoid touching application code.

Comparison

Standalone (Docker)Embedded (SDK)
Setupdocker compose up then browser Setup UInpm install @key0ai/key0
ConfigurationSetup UI or environment variablesTypeScript SellerConfig object
Token issuanceDelegated to your ISSUE_TOKEN_API endpointYour fetchResourceCredentials callback
InfrastructureDocker Compose manages Redis + PostgresYou provide store instances (Redis, Postgres, or in-memory)
Best forQuick deploy, no code changes, Docker-native workflowsFull control, existing app integration

Which should I choose?

Choose Standalone if you have an existing API and want to add agent payments without modifying your application code. Key0 runs as a sidecar container and calls back to your token endpoint. Choose Embedded if you want the payment flow to live inside your server process. You get direct access to the ChallengeEngine, full control over credential issuance, and no extra container to manage. Both modes support the same transports (REST x402, A2A, MCP), the same on-chain verification, and the same refund logic. You can start with one and switch later.

Next steps