Operator API
Run the standalone operator:
angee operator --root . --bind 127.0.0.1 --port 9000Non-loopback binds require --token. Protected endpoints use:
Authorization: Bearer <token>Surface parity between service.Platform, CLI, REST, and GraphQL is tracked in Surface parity.
REST
Health:
GET /healthzStack:
GET /stack/status
POST /stack/init
POST /stack/update
POST /stack/prepare
POST /stack/build
POST /stack/up
POST /stack/dev
POST /stack/down
POST /stack/destroy?purge=true
GET /stack/logs?service=nameServices:
GET /services
POST /services
PATCH /services/{name}
POST /services/{name}/start
POST /services/{name}/stop
POST /services/{name}/restart
POST /services/{name}/destroy
GET /services/{name}/logsJobs:
GET /jobs
POST /jobs/{name}/runJob output is returned by POST /jobs/{name}/run.
Sources:
GET /sources
GET /sources/{name}/status
POST /sources/{name}/fetch
POST /sources/{name}/pull
POST /sources/{name}/pushWorkspaces:
GET /workspaces
POST /workspaces
GET /workspaces/{name}
PATCH /workspaces/{name}
GET /workspaces/{name}/status
GET /workspaces/{name}/logs
POST /workspaces/{name}/start
POST /workspaces/{name}/stop
POST /workspaces/{name}/restart
POST /workspaces/{name}/destroy?purge=true
GET /workspaces/{name}/git
POST /workspaces/{name}/push
POST /workspaces/{name}/sync-baseWorkspace status is the authoritative branch-identity surface for managed git worktrees. Each status source includes the manifest branch, actual current_ref, and state; state: "branch-mismatch" means the worktree is not on its manifest branch, and the workspace top-level state is discrepancy. sync-base updates each workspace branch from its base ref without switching branches; body: {"method":"merge"} or {"method":"rebase"}.
Events and MCP descriptor:
GET /events
GET /mcp/events currently emits a single ready SSE event. /mcp currently returns a static descriptor; it is not a JSON-RPC MCP server.
GraphQL
GraphQL is available at:
POST /graphql
Content-Type: application/jsonExample:
curl -s http://127.0.0.1:9000/graphql \
-H 'Content-Type: application/json' \
-d '{"query":"{ stackStatus { name root services { name runtime status } } }"}'The GraphQL schema exposes stack, service, job, source, workspace, log snapshot, and mutation fields corresponding to the REST operations. Workspace source types use the same branch-identity fields as REST (branch, currentRef, state), and workspaceSyncBase(name:, method:) mirrors the REST sync-base endpoint.
The schema source lives at internal/operator/schema.graphql; generated gqlgen runtime files live under internal/operator/gql/.