Use Quickstart for the hosted product path. This page is for self-hosted AXON operators deploying their own Decision API and dashboard.
Database (Supabase)
- Ensure Row Level Security (RLS) is enabled on all tables
- Add your production domain under Authentication > URL Configuration
- If you use the kill switch, ensure you have a manual SQL unfreeze path
Platform (Frontend)
The frontend is a Vite + React SPA.Build
Deploy to Vercel / Netlify
- Connect your repository
- Set
Root Directorytoplatform - Add environment variables:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEYVITE_AXON_DECISION_API_URL
Decision Daemon (Backend)
The backend runtime is the Decision daemon. It serves/health, /ready, and /v1/* on port 3030.
Configuration
axon-402-mcp/.env if present. Start from the checked-in example:
Minimum Live Configuration
MASTER_MNEMONIC when AXON_SIGNING_MODE=full. If you need static operator routes such as /v1/metrics, /v1/webhooks/dispatch, or /v1/operator/mcp, also set AXON_DECISION_API_KEY.
Start
Cloud Run
Use the supported deploy script:gcloud run deploy --update-env-vars, not --set-env-vars, so out-of-band tuning and opt-in worker flags survive deploys. For a fresh service, seed required live env vars such as AXON_MCP_PUBLIC_URL before first traffic.
Health Gate
/ready returns 200, checks.auth.ok is true, checks.supabase.ok is true, and config_issues is empty or warn-only.
For a fresh deployment, expect /ready to stay non-ready until the default wallet and mandate exist. The supported path is to bootstrap first, then re-check readiness.
Docker
End-to-End Test Plan
- Create the first operator account in Supabase Auth, or sign in with your configured browser auth flow
- Complete the onboarding wizard at
/onboarding - Verify the vault is created in the Vault page
- Verify the first agent pocket exists in Workforce
- Mint a runtime key or register AXON in your MCP/OpenClaw client
- Run one low-risk governed fetch
- Run one approval-required flow
- Confirm
axon-op auth whoamiworks with an org-wide operator key
Security Checklist
- Verify
user_organizationsisolation with a second test account - Ensure
SUPABASE_SERVICE_KEYis never used in the frontend - Verify the daemon refuses to start when both
AXON_DECISION_API_KEYandAXON_PLATFORM_AUTH_ENABLED=trueare absent - Verify
/readyis green before exposing - Treat server-held mnemonic custody as a high-trust deployment: use a secret manager, isolate the host, and start with low treasury balances until you have exercised approval, freeze, and recovery paths