| title | About deployment options |
|---|---|
| description | Compare the ways you can host the Central Agentic Ops dashboard, and choose the option that fits your data, audience, and infrastructure. |
Warning
Experimental: All deployment options are experimental. Interfaces, configuration names, infrastructure templates, and procedures can change between releases without a migration path. No option is certified for production use. Before you expose a deployment to real users or data, complete your own security, compliance, privacy, network, monitoring, incident-response, and rollback reviews.
The control plane and dashboard are deployed separately. The control plane runs in GitHub Actions; this guide compares where to serve the dashboard and run its queries.
Choosing a deployment option never changes campaign policy, rollout mode, credentials, or target authority. Those settings stay in the reviewed .github/workflows/cao.json file in your control repository. For more information, see Control policy and Roll out a campaign.
Dashboard hosting and collection credentials are separate choices. Pages can use the built-in workflow token for bounded monitoring, or Apps/PATs when required. Server-backed deployments use PostgreSQL for dashboard entities, queries, and operational state by default. Azure still pairs PostgreSQL with Azure Managed Redis for operational state; other hosts can explicitly select a compatible Redis provider such as Upstash.
| Option | Dashboard host | Where queries run | Who can sign in | Infrastructure you operate |
|---|---|---|---|---|
| GitHub Actions only | GitHub Pages | In each viewer's browser | Anyone who can read the Pages site | No application server; collection credentials depend on the exact scope |
| Azure | Azure Functions | On the server, over PostgreSQL | Members of allowed GitHub organizations or teams | Function App, PostgreSQL, Key Vault, Azure Managed Redis, storage account, and Application Insights |
- Start with GitHub Actions only. It needs no infrastructure beyond your control repository and is what the supported CAO installer configures by default. If you don't have a control repository yet, follow Set Up CAO first.
- Choose collection credentials for the scope. Monitoring the control repository and confirmed public targets needs no App/PAT setup. Prefer private GitHub Apps for durable cross-repository access; use fine-grained PATs only when eligible and explicitly accepted. See Choosing a credential profile.
- Move to a server-backed option only when you need to. Choose Azure when your data is too large to query in a browser, when you need per-user sign-in instead of Pages visibility, or when you need webhook-driven refresh.
Azure runs the host-neutral Go service from the server/ directory, with authentication, authorization, cross-site request forgery (CSRF), webhook, rate-limit, and logging protections. You can also deploy that service on your own container platform; you are responsible for secret management, ingress, and delivery.
Server-backed means the Go server serves the dashboard itself. Built HTML and assets, GitHub sign-in, query APIs, and revision events use the same hosted origin. Forward the entire application to the Go handler, not just API paths. Do not publish a separate Pages or static-hosted frontend for hosted mode. The browser uses server-side PostgreSQL queries; a hosted failure does not switch to browser storage or the Pages deployment.
Use the one-minute managed Redis guide to connect
AWS ElastiCache, Redis Cloud, GCP Memorystore, Railway, Render, or DigitalOcean.
The same provider-neutral cao.json host contract also defines the local Redis,
Azure, and Upstash examples.
Upstash Redis is a managed Redis option for the host-neutral Go server. Upstash doesn't host the CAO application. Run the container on your application platform, provide its verified artifact there, and configure the server to use the Upstash TLS Redis endpoint.
Note
Your credential profile still matters for server-backed deployments. The CAO Activity workflow collects their evidence in GitHub Actions, using the profile that you configure. Dashboard users sign in separately, through a GitHub OAuth app. The optional Azure collection profile requires a GitHub App and doesn't support PATs.
Every option uses the canonical evidence model, not a separate dashboard data format. Data ingestion owns the collection, verified payload, retention, and backend-processing details; Data model owns entities and identities. The optional Azure collection profile uses server-side workers driven by GitHub App webhooks instead of relying only on scheduled Activity snapshots.
- Evidence is not authority. Viewing a result grants no execution or write permission. Pages is read-only; optional canvas commands and hosted CLI actions have separate authorization and approval requirements. See Know the boundary.
- Rebuildable dashboard data. Browser IndexedDB and canonical PostgreSQL hold derived evidence projections. Protected operational state such as audit history, queues, and revocation records is separate and must not be treated as a disposable cache. See the operational-storage contract.
- Verified payloads. Each payload file is checked against
payload-hashes.jsonbefore it is parsed. A missing manifest, a hash mismatch, an unsafe path, or a malformed record stops ingestion. - No exposed secrets. Secrets never appear in the dashboard site, API responses, URLs, or logs.
- Live data. The dashboard is not a live feed. Its data is only as fresh as the last Activity run and the last dashboard rebuild or ingestion.
- Availability. CAO adds no availability service-level agreement (SLA), backup service, or disaster-recovery objective beyond what the underlying platform provides.
- Compliance records. The dashboard is not a compliance record. For compliance evidence, use GitHub Actions run history, your checked-in policy, your infrastructure definitions, and platform audit logs.
- Automatic workflow control. Evidence and recommendations do not stop or govern workflows. To stop campaigns, follow Emergency stop.
- To deploy the default option, see Deploying the dashboard with GitHub Actions.
- To plan your control repository's topology, ownership, and enrollment, see Deployment and governance.
- Dashboard
- Monitor and recover, including Publishing Pages reports and Incident response
- Optional observability for the agentic workflows
- Glossary
server/README.mdandserver/SECURITY.md, the detailed references for the Go server