This is a code-aligned map of the stable HTTP surfaces in ControlKeelWeb.Router.
It is intentionally grouped by boundary instead of being a generated route dump; use
mix phx.routes when you need the full development-only route list.
Public entry points:
GET /— homeGET /docs,GET /docs/getting-started,GET /docs/agents,GET /docs/governance— documentationGET /getting-started— legacy redirect to/docs/getting-startedGET /auth/login— sign-in via configured OAuth providers (Google/GitHub); creates an account on first sign-inGET /auth/logout— logoutGET /auth/complete/:token— auth completionGET /cloud/invitations/:token— invitation acceptance
Cloud-auth gated dashboard routes:
/dashboard/missions,/missions/start,/missions/:id/findings/proofs,/proofs/:id/reviews/:id/:org_slug/workspaces/:ws_slug/benchmarksand/.../benchmarks/runs/:id/cloud/telemetry,/cloud/projects,/cloud/projects/:ws_id/org/:slug/members,/org/:slug/settings/auth,/org/:slug/settings/general/workspaces/:id/repos,/workspaces/:id/service-accounts,/workspaces/:id/webhooks,/workspaces/:id/tool-policy/observabilityand the observability subroutes for loop, costs, evals, imports, memory quality, recommendations, regressions, trends, promotions, sessions, and benchmark history/drafts/scenarios/skills,/deploy(/policiesremoved — policy sets are org-owned and managed under org settings)
The JSON API backs local and hosted automation. The main resource groups are:
- Sessions and tasks:
/sessions,/sessions/:id,/sessions/:id/run,/sessions/:session_id/tasks,/tasks/:id/* - Reviews:
/reviews,/reviews/:id,/reviews/:id/respond,/review/diff,/review/pr - Governance:
/validate,/findings,/findings/:id/action,/release/readiness,/governance/install/github - Proof and memory:
/proofs,/proofs/:id,/proof/:task_id,/memory/search,/memory,/memory/:id - Benchmarks:
/benchmarks,/benchmarks/runs,/benchmarks/runs/:id,/benchmarks/runs/:id/import,/benchmarks/runs/:id/export - Budget and routing:
/budget,/route-agent,/agents - Context and improvement:
/context,/improvement,/sessions/:id/audit-log,/sessions/:id/graph,/sessions/:id/execute - Workspace operations:
/workspaces/:id/service-accounts,/workspaces/:id/policy-sets,/workspaces/:id/webhooks,/workspaces/:id/tool-policy - NHI lifecycle:
/service-accounts/:id/rotate,/service-accounts/:id,/service-accounts/:id/events,/webhooks/:id/replay - Providers:
/providers,/providers/status,/providers/default - Skills:
/skills,/skills/targets,/skills/export,/skills/install,/skills/:name
Hosted protocol endpoints:
GET /.well-known/oauth-protected-resource/mcpGET /.well-known/oauth-protected-resourceGET /.well-known/oauth-authorization-serverGET /.well-known/agent-card.jsonGET /.well-known/agent.jsonPOST /oauth/tokenGET /mcp,POST /mcp,DELETE /mcpPOST /a2a
Provider proxy endpoints:
POST /proxy/openai/:proxy_token/v1/responsesPOST /proxy/openai/:proxy_token/v1/chat/completionsPOST /proxy/openai/:proxy_token/v1/completionsPOST /proxy/openai/:proxy_token/v1/embeddingsGET /proxy/openai/:proxy_token/v1/modelsGET /proxy/openai/:proxy_token/v1/realtimePOST /proxy/anthropic/:proxy_token/v1/messagesPOST /proxy/gemini/:proxy_token/v1beta/chat/completionsGET /proxy/gemini/:proxy_token/v1beta/openai/models
Cloud/self-host sync endpoints:
POST /cloud/v1/telemetryPOST /cloud/v1/runtime/callbacksPOST /cloud/v1/workspaces/registerPOST /cloud/v1/sync/pushPOST /cloud/v1/sync/pullGET /cloud/v1/orgs/:slug/usage
If this file disagrees with lib/controlkeel_web/router.ex, the router wins. Update this
document in the same change that adds or removes a public route group.