Guides
Sandbox
What the runner does on boot and what your command can rely on, including the metadata server, guest services, and environment.
Every task container starts with ax-task-runner as PID 1. On boot it:
- Loads the
Taskand every boundWorkspacespec. - Starts a metadata and guest-management daemon on port 80.
- On the first run, prepares each workspace at its own path, in binding order: clones Git repos, sets up the skills path, and, if the binding has a goal, hands that goal to an Antigravity agent to finish environment setup. The agent needs
GEMINI_API_KEYin the container and gets 10 minutes by default; setAX_BOOTSTRAP_TIMEOUTto a Go duration to change that. The task reports not-ready until every workspace, including any agent run, has finished. - Starts
spec.commandas a child process, with the first workspace as its working directory andAX_METADATA_URLplusspec.envin its environment, and supervises it.
The runner stays up as PID 1 whether or not the command is still running, so the metadata server keeps answering and ax ssh still works after the command has exited. Its exit code is logged. When the sandbox is stopped or suspended, the runner sends the command’s process group SIGTERM, waits ten seconds, and then kills whatever is left.
Metadata server
The daemon speaks HTTP/1.1 and h2c on the same port. Your agent can introspect its own configuration without any SDK:
| Endpoint | Method | Returns | Description |
|---|---|---|---|
/healthz |
GET |
text/plain |
Liveness. Always 200 OK. |
/readyz |
GET |
text/plain |
Readiness. 503 while the workspace is initializing, 200 once clones, MCP config, and skills are in place. |
/metadata/v1alpha1/ax/task |
GET |
application/yaml |
Full spec and status of the current Task. |
/metadata/v1alpha1/ax/workspaces |
GET |
application/yaml |
Every bound Workspace, as a multi-document stream in binding order. |
# From inside a task:
curl -s "$AX_METADATA_URL/metadata/v1alpha1/ax/task"
Guest services
When a task sets spec.debug: true, the same port also serves the Agent Substrate guest services over gRPC. They are off by default because they allow arbitrary process execution and file access inside the sandbox, and ax ssh refuses to connect to a task that has not enabled them.
- Process service: start, inspect, stream output from, and kill processes. This is what powers
ax ssh. - File system service: streaming file reads and writes inside the workspace.
Environment provided to your command
| Variable | Value |
|---|---|
AX_METADATA_URL |
Base URL of the metadata server, e.g. http://127.0.0.1:80 |