Appearance
Playground
agent-sdk serve enables a web playground at http://127.0.0.1:3000/<slug>/playground (or /playground in single mode). In multi-agent mode, each agent has its own playground, and / lists them all.
Playground surfaces
| Surface | What you can do |
|---|---|
| Chat | Talk to the agent. Text and reasoning stream live, and tool calls appear inline with their arguments, output, and error state |
| Slash commands | Custom channel routes without path parameters become composer commands; GitHub and Slack ingress routes are excluded. A drive route becomes /drive <pr-url>, with /help and autocomplete |
| Try | Invoke a custom channel route from the Agent tab. The modal remembers your last body per endpoint and copies curl. Find the session the route starts under Runs |
| Runs | Browse the sessions you own and eval runs. Search by title or identifier; open sessions in Chat, Trace, or Raw and eval runs in Evals |
| Evals | List and run filesystem evals from the browser |
| Agent | Inspect the discovered tools, skills, subagents, MCP connections, channels, and hooks |
| Raw | Inspect the selected session's event stream |
| Logs | Recent server log lines, polled from GET /v1/logs |
In --dev on loopback, or with --allow-anonymous, the session list includes every principal.
Remote access
The default localDevStrict() auth admits direct loopback calls only and rejects proxy-forwarding headers, so a tunnel or LAN address won't work until you pass --bearer-token <secret> (or serve(dir, { authToken })). Open the playground on the remote device and paste the token into the token field in the navbar. --allow-anonymous is the demo-only alternative for trusted networks.
Related
- HTTP API: the HTTP surface the playground uses
- Sessions and streaming: the streams it renders