Hosted launch posture uses three different trust tiers on purpose: a wallet-scoped runtime key for agents, org-wide operator keys for control-plane automation, and Supabase sessions for human dashboard use. Do not hand
AXON_DECISION_API_KEY to end users or agent runtimes.Static Operator Key
UseAXON_DECISION_API_KEY for static operator access: admin routes, worker triggers, /v1/metrics, and static-key access to /v1/operator/mcp.
Configuration:
Database API Keys (axon_sk_*)
AXON can mint database-backed API keys through /v1/api-keys.
- Wallet-scoped keys: runtime surface for
/v1/mcpand wallet-bound REST calls. - Org-wide keys: operator automation surface for
/v1/operator/mcpand org-scoped REST routes. - Scope enforcement applies only to database-backed keys; static operator keys are unrestricted.
Supabase Session Auth
WhenAXON_PLATFORM_AUTH_ENABLED=true, the daemon also accepts a Supabase user access token on supported platform routes.
The daemon then:
- Validates the Supabase session
- Loads
user_organizations - Grants org-scoped access based on membership
- User must exist in Supabase Auth
- User must belong to the organization in
user_organizations - In production, browser origin must be in
AXON_PLATFORM_ALLOWED_ORIGINSor CORS rejects the request
Route/Auth Matrix
MCP Stdio Auth
The MCP server over stdio does not use HTTP bearer auth. Access control is provided by:- Local process/environment permissions
- Runtime sandbox/tool allowlists in the agent host
SUPABASE_SERVICE_KEYMASTER_MNEMONIC(full-signing mode only)BASE_RPC_URLAGENT_WALLET_ID
OpenClaw Plugin
Dashboard API Keys
The dashboard page at/settings/api-keys is an organization-scoped key registry. It does not replace:
- Daemon
AXON_DECISION_API_KEY - Browser Supabase session auth
- Runtime/operator surface separation
Common Auth Failures
403 Bootstrap requires browser session
403 Bootstrap requires browser session
Calling
POST /v1/orgs/bootstrap with static bearer instead of a Supabase session token. Use the CLI bootstrap for headless setup.Dashboard login works, but org routes fail
Dashboard login works, but org routes fail
- Org was created via CLI and operator is missing a
user_organizationsrow - Dashboard origin is not in
AXON_PLATFORM_ALLOWED_ORIGINS
500 Neither auth mode configured
500 Neither auth mode configured
Daemon started without
AXON_DECISION_API_KEY and without AXON_PLATFORM_AUTH_ENABLED=true.Hardening Checklist
- Keep
AXON_DECISION_API_KEYin a secret manager, never in source control - Keep
SUPABASE_SERVICE_KEYandMASTER_MNEMONICout of browser code and agent transcripts - Restrict daemon network exposure
- Avoid logging full auth headers
- Rotate
AXON_DECISION_API_KEYon compromise or environment changes