Chat

The main entrypoint — query in, A2UI components out.

/chat is the primary endpoint. The shell sends a user query; the agent returns a list of A2UI components to render.

Request

messagestringrequired

The user's natural-language query.

json
{ "message": "show me the weather in Tokyo" }
cURL
curl -X POST http://127.0.0.1:8000/chat \
 -H "Content-Type: application/json" \
 -d '{"message": "show me the weather in Tokyo"}'

Response

The response carries a components array — each item is an A2UI component tree the shell renders.

json
{
 "components": [
 { "type": "live_weather", "city": "Tokyo" }
 ]
}

For multi-step actions, the response instead contains a task_tracker component summarizing each workflow step:

json
{
 "components": [
 {
 "type": "task_tracker",
 "data": {
 "status": "completed",
 "steps": [
 { "step": 1, "tool": "SEARCH_WEB", "status": "completed", "message": "..." },
 { "step": 2, "tool": "SEND_EMAIL", "status": "completed", "message": "..." }
 ]
 }
 }
 ]
}

What happens internally

See Data Flow for the full walk-through.

Fast-path commands

These prefixes return prebuilt components without an LLM call:

InputReturns
dfDisk usage
freeRAM usage
psTop-processes table
telepath / demoTelepath demo cards (--cards=a,b to filter)
who is … / profile of … / bio of …Generated profile UI

Streaming

POST /chat/stream is the streaming counterpart, used when responses should arrive incrementally. JIT widgets push their ongoing updates separately over the Unix socket rather than through this endpoint.

Confirming unsafe actions

When a step requires approval (e.g. a custom_agents/ plugin with is_safe = False), the agent returns a confirmation request. Approve it via:

bash
curl -X POST http://127.0.0.1:8000/api/confirm \
 -H "Content-Type: application/json" \
 -d '{"confirmation_id": "...", "approved": true}'