DAIMONMCP sandbox, kernel-isolated
by Linux nsjail

Connect

Point Claude Code, Cursor, or any HTTP MCP client at processd-mcp.

Install first (Linux binary, sandbox cluster, or macOS app). Connecting is the same after that: streamable HTTP, plus a token header.

Wire

TransportStreamable HTTP, not TLS
MCPhttp://<host>:<port>/mcp — tools return text and structuredContent
MCP text-onlyhttp://<host>:<port>/mcp/text-only — same tools, structuredContent stripped; use this when the client only consumes content text
AuthX-Access-Token: <token> on /mcp, /mcp/text-only, and /sdk/file
HealthGET /health — no token, expect 204
curl -i http://127.0.0.1:8080/health

Client config

Drop this into Claude Code (.mcp.json) or Cursor MCP settings. Change url and the token.

{
  "mcpServers": {
    "daimon": {
      "type": "http",
      "url": "http://127.0.0.1:8080/mcp",
      "headers": {
        "X-Access-Token": "<PROCESSD_TOKEN>"
      }
    }
  }
}

For text-only, set url to http://127.0.0.1:8080/mcp/text-only. Some clients call the type streamable_http instead of http. The URL and header are what the kernel checks.

Which URL

You installedurlToken
Linux binaryhttp://127.0.0.1:8080/mcp (or .../mcp/text-only), or the Tailscale host you boundPROCESSD_TOKEN in /etc/processd-mcp/processd-mcp.env
macOS appThe MCP URL on the overview (loopback, app port); append /text-only if neededToken the app generated — Copy JSON on the overview
Sandbox clusterAfter create_sandbox: mcp_url, e.g. http://127.0.0.1:18081/sandboxes/<id>/mcp, or .../mcp/text-onlySandbox token, not a scheduler/manager token

Cluster mode has no /mcp on the scheduler or manager. Create a sandbox with daimon-sdk first (DaimonManagerClient("http://127.0.0.1:18081")create_sandbox()), then either call tools through the SDK or put that mcp_url + token into the JSON above.

Python, talking to a kernel directly:

from daimon_sdk import DaimonClient

async with DaimonClient("http://127.0.0.1:8080/mcp", access_token=token) as client:
    runtime = await client.runtime.get_context()
    print(runtime.base_workdir)

On this page