instruction
The user-visible task. This is the primary prompt or command to send to the remote agent.
Walton already speaks a small remote-agent protocol. Give your AgentVM instance a protected HTTPS or WSS endpoint that accepts that protocol, then save the endpoint and bearer token in the app.
Walton does not need direct shell or SSH access to your AgentVM. The app sends a structured request to an adapter you control. That adapter translates the request into whatever your AgentVM runtime uses, waits for the result, and returns JSON to Walton.
Builds the remote-agent request.
Authenticates the bearer token.
Maps the request into AgentVM work.
Runs the task and returns a result.
https://your-agent.example.com/walton/agent.The test sends a proposal-only request asking the server for a short readiness message. A successful endpoint returns HTTP 2xx with JSON containing a non-empty text field.
Your adapter should accept the fields below. Some Walton surfaces send only the core fields; richer workflows can also include event context, a requested integration, an expected outcome, commerce approval state, and capability names.
{
"mode": "plan",
"action": "connection_test",
"instruction": "Return a short readiness message.",
"contextBeforeCursor": "",
"contextAfterCursor": "",
"executionPolicy": "proposal_only",
"source": "ios_agent_settings_test",
"eventContext": null,
"requestedIntegration": null,
"requestedOutcome": null,
"commerceApproval": null,
"capabilities": []
}
The user-visible task. This is the primary prompt or command to send to the remote agent.
Workspace context from Walton. Treat it as untrusted user content, not system instructions for your gateway.
proposal_only means return a plan or result without external side effects. Execute only when the request explicitly carries Walton's approved execution value.
Identify the Walton surface and optional features available for the request. Use these for routing and policy, not authentication.
{
"text": "AgentVM is ready."
}
Walton also accepts optional requestId and actions. Actions can describe an HTTPS destination, an integration, an approval instruction, a merchant or estimated total, or a device action such as a calendar event. Keep side effects on the server behind explicit approval, and let Walton confirm device-local work.
REST is the recommended transport. Walton sends the request object directly as the POST body and, when a token is configured, sends it as an Authorization bearer token.
curl -X POST 'https://your-agent.example.com/walton/agent' \
-H 'Authorization: Bearer YOUR_LONG_RANDOM_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"mode":"plan","action":"connection_test","instruction":"Return a short readiness message.","contextBeforeCursor":"","contextAfterCursor":"","executionPolicy":"proposal_only","source":"ios_agent_settings_test"}'
Return Content-Type: application/json and a 2xx status. For errors, return an appropriate HTTP status and a short detail, message, or error string.
For RPC mode, Walton wraps the same request under params and calls the fixed method walton.execute.
{
"jsonrpc": "2.0",
"id": "request-id",
"method": "walton.execute",
"params": {
"mode": "plan",
"action": "connection_test",
"instruction": "Return a short readiness message.",
"contextBeforeCursor": "",
"contextAfterCursor": "",
"executionPolicy": "proposal_only",
"source": "ios_agent_settings_test"
}
}
Return the Walton response under JSON-RPC result. Return standard JSON-RPC errors under error.code and error.message.
Walton opens the configured ws:// or wss:// URL, includes bearer authorization when configured, sends one Walton request as a JSON text message, and waits for one JSON response.
wss:// when the connection leaves a trusted private network. A public unencrypted WebSocket endpoint should not carry an agent token.The adapter is intentionally small. Walton's app-side protocol is already implemented; the server only needs to translate it into your AgentVM runtime.
instruction plus any workspace context you choose to expose.executionPolicy. For proposal_only, disable external mutations and return a preview or plan. Only execute_approved authorizes the remote execution path.{"text":"..."}.actions instead of immediately performing a device-local action.If your AgentVM provider already gives you an HTTPS API, put this adapter at that API layer. If the VM only exposes a local runtime or CLI, run the adapter inside the VM and expose only the adapter through your reverse proxy, private tunnel, or authenticated gateway.
proposal_only server-side; do not rely on prompt wording to prevent side effects./walton/agent automatically.Once saved, the same selected Agent server can power Agent chat, the command console, and the workspace terminal.
Confirm the bearer token in Walton exactly matches the token expected by the gateway. Check for a proxy that strips the Authorization header.
Walton uses the exact URL you enter. Include the adapter path, such as /walton/agent, in the saved endpoint.
Return JSON with a top-level non-empty text string. In RPC mode, put that object under result.
Check that the hostname resolves publicly or over the same private VPN used by the phone, the certificate chain is valid, and the firewall allows the phone's network path.
Walton's interactive remote calls use finite client timeouts. For long-running work, have your adapter return a short accepted/status response and move durable jobs to a session or task model instead of holding one request open indefinitely.