Endpoint
An Apollo Server (Federation subgraph) is mounted at
/api/graphql through a Next.js route handler. Outside production — or when APOLLO_SANDBOX=true — introspection and the Apollo sandbox are enabled, so opening /api/graphql in a browser lets you explore the schema interactively.
Control agents on managed machines connect outbound to the WebSocket port and never expose a listening port of their own. See Development for the environment variables that move those ports.
Authentication
GraphQL accepts one credential per request:
The same header names can be sent as WebSocket connection parameters. API keys have full GraphQL access, but cannot access the dashboard or user-management REST routes. Agent tokens retain their restricted operations.
Anonymous execution is rejected before GraphQL resolution. The only exception is one exact
enrollAgent mutation carrying a valid one-time enroll_ token. Introspection, aliases, batches, and mixed operations do not qualify.
See Authentication for the route matrix and API keys to create a credential.
Apollo Studio
The published schema is also available as a public graph in Apollo Studio:ai-development-environment on Apollo Studio
Browse the schema, search types and fields, and read the generated docs
without running the control plane.
/api/graphql endpoint and supply the usual authentication; the public graph itself is schema-only.
Check connectivity
Thehealth query verifies database connectivity. It returns "ok" when the database is reachable and "degraded" otherwise:
Queries and mutations
Queries read control-plane state: agents and their jobs, codebases and worktrees, builds and build logs, AI Plans, Sessions and runs, workflows, commands, skills, GitHub and Jira caches, devices, signing assets, and settings. Mutations drive the same objects: enroll and configure agents, start and cancel builds, create worktrees, launch AI runs, answer run questions, edit and run workflows and commands, sync skills, and update settings.agents or enrollAgent. Field types link through to the Types section, so you can walk the graph from any operation.
Worktree admission queues
worktreeRunQueue returns the effective queued order for one worktree or the queued entries associated with one workflow. A worktree query combines workflow runs, Plans, and Sessions:
RunConfigurationInput.worktreeConcurrencyLimit controls same-kind admission on a worktree. Omit it for the kind default: 0 for unlimited Plans or 1 for Sessions. Supply 0 for unlimited concurrency or an integer from 1 through 32 for a finite limit. playPlan exposes the same option for the Session it creates.
Set CreateWorkflowInput.exclusiveWorktree or SaveWorkflowDraftInput.exclusiveWorktree to make each top-level run reserve its resolved worktree. The default is false. A queued WorkflowRun also exposes its effective queue; that field becomes empty after admission.
overlapScope on the same two inputs picks the set of runs overlapPolicy is measured against: WORKTREE, the default, keeps a queue per worktree so worktrees never wait on each other, and GLOBAL counts every run of the workflow. Runs with no worktree share one queue under WORKTREE.
Subscriptions
The schema also defines subscriptions, which power the dashboard’s live output — job and build logs, run events, Action Center changes, and status updates. Mintlify generates pages forQuery and Mutation fields only, so subscriptions do not appear in the sidebar. Their payloads do: each one resolves to a documented type, such as BuildLogChunk. For the full subscription list, use Apollo Studio or the Apollo sandbox at /api/graphql.
Log chunks arrive Base64-encoded, with a sequence number for ordering: