# API surface
<!-- generated by `orchestrator understand`; the PKG is source of truth, edits here are advisory -->

**71 endpoints** exposed by this service, each with the code that serves it.

| Route | Handler | Declared at |
|---|---|---|
| `DELETE /v1/connections/servers/{name}` | [`remove_server`](../src/orchestrator/registry/api/connections.py#L221) | [`src/orchestrator/registry/api/connections.py:220`](../src/orchestrator/registry/api/connections.py#L220) |
| `GET /` | [`index`](../src/orchestrator/intake/web/app.py#L140), [`list_entities`](../src/orchestrator/registry/api/routes.py#L156), [`root`](../src/orchestrator/registry/api/web/home.py#L23) | [`src/orchestrator/intake/web/app.py:139`](../src/orchestrator/intake/web/app.py#L139) |
| `GET /app` | [`home`](../src/orchestrator/registry/api/web/home.py#L125) | [`src/orchestrator/registry/api/web/home.py:124`](../src/orchestrator/registry/api/web/home.py#L124) |
| `GET /app/advanced` | [`advanced_page`](../src/orchestrator/registry/api/web/advanced.py#L22) | [`src/orchestrator/registry/api/web/advanced.py:21`](../src/orchestrator/registry/api/web/advanced.py#L21) |
| `GET /app/audit` | [`audit_page`](../src/orchestrator/registry/api/web/governance.py#L21) | [`src/orchestrator/registry/api/web/governance.py:20`](../src/orchestrator/registry/api/web/governance.py#L20) |
| `GET /app/backlog` | [`backlog_page`](../src/orchestrator/registry/api/backlog.py#L43) | [`src/orchestrator/registry/api/backlog.py:42`](../src/orchestrator/registry/api/backlog.py#L42) |
| `GET /app/catalog` | [`catalog_page`](../src/orchestrator/registry/api/web/intelligence.py#L137) | [`src/orchestrator/registry/api/web/intelligence.py:136`](../src/orchestrator/registry/api/web/intelligence.py#L136) |
| `GET /app/connections` | [`connections_page`](../src/orchestrator/registry/api/web/connections.py#L21) | [`src/orchestrator/registry/api/web/connections.py:20`](../src/orchestrator/registry/api/web/connections.py#L20) |
| `GET /app/evals` | [`evals_page`](../src/orchestrator/registry/api/web/evals.py#L22) | [`src/orchestrator/registry/api/web/evals.py:21`](../src/orchestrator/registry/api/web/evals.py#L21) |
| `GET /app/governance` | [`governance_page`](../src/orchestrator/registry/api/web/governance.py#L49) | [`src/orchestrator/registry/api/web/governance.py:48`](../src/orchestrator/registry/api/web/governance.py#L48) |
| `GET /app/graph` | [`graph_page`](../src/orchestrator/registry/api/web/intelligence.py#L122) | [`src/orchestrator/registry/api/web/intelligence.py:121`](../src/orchestrator/registry/api/web/intelligence.py#L121) |
| `GET /app/inbox` | [`inbox_page`](../src/orchestrator/registry/api/inbox.py#L108) | [`src/orchestrator/registry/api/inbox.py:107`](../src/orchestrator/registry/api/inbox.py#L107) |
| `GET /app/intake` | [`intake_studio_page`](../src/orchestrator/registry/api/web/intake_studio.py#L58) | [`src/orchestrator/registry/api/web/intake_studio.py:57`](../src/orchestrator/registry/api/web/intake_studio.py#L57) |
| `GET /app/memory` | [`memory_page`](../src/orchestrator/registry/api/web/memory.py#L20) | [`src/orchestrator/registry/api/web/memory.py:19`](../src/orchestrator/registry/api/web/memory.py#L19) |
| `GET /app/memory-bank` | [`memory_bank_page`](../src/orchestrator/registry/api/web/intelligence.py#L103) | [`src/orchestrator/registry/api/web/intelligence.py:102`](../src/orchestrator/registry/api/web/intelligence.py#L102) |
| `GET /app/personas` | [`personas_page`](../src/orchestrator/registry/api/web/home.py#L138) | [`src/orchestrator/registry/api/web/home.py:137`](../src/orchestrator/registry/api/web/home.py#L137) |
| `GET /app/registry` | [`registry_page`](../src/orchestrator/registry/api/web/registry.py#L22) | [`src/orchestrator/registry/api/web/registry.py:21`](../src/orchestrator/registry/api/web/registry.py#L21) |
| `GET /app/state` | [`state_page`](../src/orchestrator/registry/api/web/intelligence.py#L81) | [`src/orchestrator/registry/api/web/intelligence.py:80`](../src/orchestrator/registry/api/web/intelligence.py#L80) |
| `GET /app/system` | [`system_page`](../src/orchestrator/registry/api/web/system.py#L20) | [`src/orchestrator/registry/api/web/system.py:19`](../src/orchestrator/registry/api/web/system.py#L19) |
| `GET /app/understand` | [`understand_page`](../src/orchestrator/registry/api/web/intelligence.py#L65) | [`src/orchestrator/registry/api/web/intelligence.py:64`](../src/orchestrator/registry/api/web/intelligence.py#L64) |
| `GET /console` | [`console`](../src/orchestrator/registry/api/console.py#L60) | [`src/orchestrator/registry/api/console.py:59`](../src/orchestrator/registry/api/console.py#L59) |
| `GET /favicon.ico` | [`favicon`](../src/orchestrator/registry/api/web/home.py#L29) | [`src/orchestrator/registry/api/web/home.py:28`](../src/orchestrator/registry/api/web/home.py#L28) |
| `GET /healthz` | [`healthz`](../src/orchestrator/gateway/api/app.py#L83), [`healthz`](../src/orchestrator/intake/web/app.py#L136), [`healthz`](../src/orchestrator/registry/api/app.py#L111) | [`src/orchestrator/gateway/api/app.py:82`](../src/orchestrator/gateway/api/app.py#L82) |
| `GET /login` | [`login_page`](../src/orchestrator/registry/api/web/auth.py#L100) | [`src/orchestrator/registry/api/web/auth.py:99`](../src/orchestrator/registry/api/web/auth.py#L99) |
| `GET /logout` | [`logout`](../src/orchestrator/registry/api/web/auth.py#L121) | [`src/orchestrator/registry/api/web/auth.py:120`](../src/orchestrator/registry/api/web/auth.py#L120) |
| `GET /readyz` | [`readyz`](../src/orchestrator/gateway/api/app.py#L87), [`readyz`](../src/orchestrator/registry/api/app.py#L115) | [`src/orchestrator/gateway/api/app.py:86`](../src/orchestrator/gateway/api/app.py#L86) |
| `GET /trace/{task_id}` | [`task_trace_html`](../src/orchestrator/registry/api/trace.py#L69) | [`src/orchestrator/registry/api/trace.py:68`](../src/orchestrator/registry/api/trace.py#L68) |
| `GET /v1/approvals` | [`list_pending_approvals`](../src/orchestrator/registry/api/approvals.py#L38) | [`src/orchestrator/registry/api/approvals.py:37`](../src/orchestrator/registry/api/approvals.py#L37) |
| `GET /v1/approvals/{approval_id}` | [`get_approval`](../src/orchestrator/registry/api/approvals.py#L53) | [`src/orchestrator/registry/api/approvals.py:52`](../src/orchestrator/registry/api/approvals.py#L52) |
| `GET /v1/audit` | [`query_audit`](../src/orchestrator/registry/api/audit.py#L96) | [`src/orchestrator/registry/api/audit.py:95`](../src/orchestrator/registry/api/audit.py#L95) |
| `GET /v1/audit/{run_id}/export` | [`export_run`](../src/orchestrator/registry/api/audit.py#L216) | [`src/orchestrator/registry/api/audit.py:215`](../src/orchestrator/registry/api/audit.py#L215) |
| `GET /v1/audit/{run_id}/governance` | [`run_governance`](../src/orchestrator/registry/api/audit.py#L205) | [`src/orchestrator/registry/api/audit.py:204`](../src/orchestrator/registry/api/audit.py#L204) |
| `GET /v1/capabilities/catalog` | [`catalog`](../src/orchestrator/registry/api/capabilities.py#L111) | [`src/orchestrator/registry/api/capabilities.py:110`](../src/orchestrator/registry/api/capabilities.py#L110) |
| `GET /v1/capabilities/memory-bank` | [`memory_bank`](../src/orchestrator/registry/api/capabilities.py#L160) | [`src/orchestrator/registry/api/capabilities.py:159`](../src/orchestrator/registry/api/capabilities.py#L159) |
| `GET /v1/connections` | [`connections`](../src/orchestrator/registry/api/connections.py#L116) | [`src/orchestrator/registry/api/connections.py:115`](../src/orchestrator/registry/api/connections.py#L115) |
| `GET /v1/fs/list` | [`list_dir`](../src/orchestrator/registry/api/fs.py#L50) | [`src/orchestrator/registry/api/fs.py:49`](../src/orchestrator/registry/api/fs.py#L49) |
| `GET /v1/jobs` | [`list_jobs`](../src/orchestrator/registry/api/jobs.py#L253) | [`src/orchestrator/registry/api/jobs.py:252`](../src/orchestrator/registry/api/jobs.py#L252) |
| `GET /v1/jobs/{job_id}` | [`get_job`](../src/orchestrator/registry/api/jobs.py#L272) | [`src/orchestrator/registry/api/jobs.py:271`](../src/orchestrator/registry/api/jobs.py#L271) |
| `GET /v1/jobs/{job_id}/artifact` | [`get_job_artifact`](../src/orchestrator/registry/api/jobs.py#L280) | [`src/orchestrator/registry/api/jobs.py:279`](../src/orchestrator/registry/api/jobs.py#L279) |
| `GET /v1/memory` | [`list_memory`](../src/orchestrator/registry/api/memory.py#L82) | [`src/orchestrator/registry/api/memory.py:81`](../src/orchestrator/registry/api/memory.py#L81) |
| `GET /v1/memory/repos` | [`list_repos`](../src/orchestrator/registry/api/memory.py#L71) | [`src/orchestrator/registry/api/memory.py:70`](../src/orchestrator/registry/api/memory.py#L70) |
| `GET /v1/personas` | [`list_personas`](../src/orchestrator/registry/api/personas.py#L74) | [`src/orchestrator/registry/api/personas.py:73`](../src/orchestrator/registry/api/personas.py#L73) |
| `GET /v1/runs` | [`list_runs`](../src/orchestrator/registry/api/runs.py#L66) | [`src/orchestrator/registry/api/runs.py:65`](../src/orchestrator/registry/api/runs.py#L65) |
| `GET /v1/runs/{run_id}/artifacts` | [`run_artifacts`](../src/orchestrator/registry/api/runs.py#L174) | [`src/orchestrator/registry/api/runs.py:173`](../src/orchestrator/registry/api/runs.py#L173) |
| `GET /v1/runs/{run_id}/artifacts/download` | [`download_run_artifact`](../src/orchestrator/registry/api/runs.py#L201) | [`src/orchestrator/registry/api/runs.py:200`](../src/orchestrator/registry/api/runs.py#L200) |
| `GET /v1/skills` | [`list_skills`](../src/orchestrator/registry/api/personas.py#L95) | [`src/orchestrator/registry/api/personas.py:94`](../src/orchestrator/registry/api/personas.py#L94) |
| `GET /v1/stream` | [`stream`](../src/orchestrator/registry/api/stream.py#L128) | [`src/orchestrator/registry/api/stream.py:127`](../src/orchestrator/registry/api/stream.py#L127) |
| `GET /v1/system/advanced` | [`advanced`](../src/orchestrator/registry/api/system.py#L132) | [`src/orchestrator/registry/api/system.py:131`](../src/orchestrator/registry/api/system.py#L131) |
| `GET /v1/system/readiness` | [`readiness`](../src/orchestrator/registry/api/system.py#L53) | [`src/orchestrator/registry/api/system.py:52`](../src/orchestrator/registry/api/system.py#L52) |
| `GET /v1/tasks/{task_id}/trace` | [`task_trace_json`](../src/orchestrator/registry/api/trace.py#L59) | [`src/orchestrator/registry/api/trace.py:58`](../src/orchestrator/registry/api/trace.py#L58) |
| `GET /{id}` | [`get_latest`](../src/orchestrator/registry/api/routes.py#L174) | [`src/orchestrator/registry/api/routes.py:173`](../src/orchestrator/registry/api/routes.py#L173) |
| `GET /{id}/{version}` | [`get_specific`](../src/orchestrator/registry/api/routes.py#L186) | [`src/orchestrator/registry/api/routes.py:181`](../src/orchestrator/registry/api/routes.py#L181) |
| `POST /` | [`register`](../src/orchestrator/registry/api/routes.py#L111) | [`src/orchestrator/registry/api/routes.py:102`](../src/orchestrator/registry/api/routes.py#L102) |
| `POST /login` | [`login`](../src/orchestrator/registry/api/web/auth.py#L107) | [`src/orchestrator/registry/api/web/auth.py:106`](../src/orchestrator/registry/api/web/auth.py#L106) |
| `POST /v1/approvals/{approval_id}/approve` | [`approve`](../src/orchestrator/registry/api/approvals.py#L67) | [`src/orchestrator/registry/api/approvals.py:66`](../src/orchestrator/registry/api/approvals.py#L66) |
| `POST /v1/approvals/{approval_id}/modify_input` | [`modify_input`](../src/orchestrator/registry/api/approvals.py#L109) | [`src/orchestrator/registry/api/approvals.py:108`](../src/orchestrator/registry/api/approvals.py#L108) |
| `POST /v1/approvals/{approval_id}/reject` | [`reject`](../src/orchestrator/registry/api/approvals.py#L88) | [`src/orchestrator/registry/api/approvals.py:87`](../src/orchestrator/registry/api/approvals.py#L87) |
| `POST /v1/capabilities/pkg/export` | [`pkg_export`](../src/orchestrator/registry/api/capabilities.py#L321) | [`src/orchestrator/registry/api/capabilities.py:320`](../src/orchestrator/registry/api/capabilities.py#L320) |
| `POST /v1/capabilities/pkg/extract` | [`pkg_extract`](../src/orchestrator/registry/api/capabilities.py#L291) | [`src/orchestrator/registry/api/capabilities.py:290`](../src/orchestrator/registry/api/capabilities.py#L290) |
| `POST /v1/capabilities/plan` | [`plan`](../src/orchestrator/registry/api/capabilities.py#L129) | [`src/orchestrator/registry/api/capabilities.py:128`](../src/orchestrator/registry/api/capabilities.py#L128) |
| `POST /v1/capabilities/profile` | [`profile`](../src/orchestrator/registry/api/capabilities.py#L86) | [`src/orchestrator/registry/api/capabilities.py:85`](../src/orchestrator/registry/api/capabilities.py#L85) |
| `POST /v1/capabilities/state` | [`state`](../src/orchestrator/registry/api/capabilities.py#L253) | [`src/orchestrator/registry/api/capabilities.py:252`](../src/orchestrator/registry/api/capabilities.py#L252) |
| `POST /v1/capabilities/understand` | [`understand`](../src/orchestrator/registry/api/capabilities.py#L214) | [`src/orchestrator/registry/api/capabilities.py:213`](../src/orchestrator/registry/api/capabilities.py#L213) |
| `POST /v1/connections/servers` | [`add_server`](../src/orchestrator/registry/api/connections.py#L187) | [`src/orchestrator/registry/api/connections.py:186`](../src/orchestrator/registry/api/connections.py#L186) |
| `POST /v1/github/webhook` | [`github_webhook`](../src/orchestrator/codereview/webhook.py#L61) | [`src/orchestrator/codereview/webhook.py:52`](../src/orchestrator/codereview/webhook.py#L52) |
| `POST /v1/intake/preview` | [`preview`](../src/orchestrator/intake/web/app.py#L144), [`preview`](../src/orchestrator/registry/api/backlog.py#L56) | [`src/orchestrator/intake/web/app.py:143`](../src/orchestrator/intake/web/app.py#L143) |
| `POST /v1/runs/start` | [`start_run`](../src/orchestrator/registry/api/runs.py#L107) | [`src/orchestrator/registry/api/runs.py:106`](../src/orchestrator/registry/api/runs.py#L106) |
| `POST /v1/tasks` | [`submit_task`](../src/orchestrator/registry/api/tasks.py#L113) | [`src/orchestrator/registry/api/tasks.py:103`](../src/orchestrator/registry/api/tasks.py#L103) |
| `POST /v1/tools/{tool_id}/{version}/invoke` | [`invoke`](../src/orchestrator/gateway/api/routes.py#L51) | [`src/orchestrator/gateway/api/routes.py:41`](../src/orchestrator/gateway/api/routes.py#L41) |
| `POST /{id}/{version}/deprecate` | [`deprecate`](../src/orchestrator/registry/api/routes.py#L228) | [`src/orchestrator/registry/api/routes.py:223`](../src/orchestrator/registry/api/routes.py#L223) |
| `POST /{id}/{version}/publish` | [`publish`](../src/orchestrator/registry/api/routes.py#L198) | [`src/orchestrator/registry/api/routes.py:193`](../src/orchestrator/registry/api/routes.py#L193) |
