{
  "manifest_version": "1",
  "slug": "claude-agent-sdk",
  "title": "Claude Agent SDK",
  "headline": "Host a Claude Agent SDK app in a sandbox VM",
  "description": "Run a Claude Agent SDK app on an exe.dev VM: Claude Code's agent loop in a sandbox of its own, a private web chat, and Claude with no API key.",
  "category": "ai-agents",
  "tags": [
    "claude agent sdk",
    "claude agent",
    "claude code",
    "sandbox",
    "ai sandbox",
    "background agent",
    "coding agent",
    "anthropic",
    "typescript"
  ],
  "url": "https://exe.dev/deploy/claude-agent-sdk",
  "markdown_url": "https://exe.dev/deploy/claude-agent-sdk.md",
  "upstream": {
    "website": "https://code.claude.com/docs/en/agent-sdk/overview",
    "source": "https://github.com/anthropics/claude-agent-sdk-typescript",
    "docs": "https://code.claude.com/docs/en/agent-sdk/typescript",
    "license": "Proprietary (Anthropic Commercial Terms)"
  },
  "example_vm_name": "my-claude-agent-sdk",
  "time": "5 minutes",
  "stack": [
    {
      "name": "Your Claude agent",
      "detail": "Claude Agent SDK 0.3 on Node.js 24, managed by systemd",
      "port": 8000,
      "data": "~/claude-agent"
    },
    {
      "name": "Workspace",
      "detail": "Where Claude reads, writes, and runs commands",
      "data": "~/claude-agent/workspace"
    },
    {
      "name": "Conversations",
      "detail": "Claude Code transcripts, resumed after restarts",
      "data": "~/.claude/projects"
    },
    {
      "name": "Claude Sonnet",
      "detail": "Anthropic, through exe.dev's LLM integration"
    }
  ],
  "access": [
    {
      "url": "https://my-claude-agent-sdk.exe.xyz/",
      "who": "private",
      "what": "The chat, for you and anyone you share the VM with"
    },
    {
      "url": "https://my-claude-agent-sdk.exe.xyz:3000/",
      "who": "private",
      "what": "Apps Claude builds, on ports 3000-9999"
    }
  ],
  "delivers": [
    "A Claude Agent SDK app under systemd, with a private web chat at `https://\u003cvm\u003e.exe.xyz/` that shows each command Claude runs.",
    "Claude working without permission prompts, as a non-root user with sudo, on a VM that holds nothing else.",
    "Claude Sonnet through exe.dev's LLM integration. No Anthropic API key on the VM.",
    "Conversations that resume after a restart, and turns that finish after you close the tab."
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20Claude%20Agent%20SDK%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Fclaude-agent-sdk.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-claude-agent-sdk.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-claude-agent-sdk.%20Skip%20the%20step%20that%20creates%20the%20VM%3B%20you%20are%20on%20it.%0A%0AYou%20are%20done%20when%20all%20of%20these%20are%20true.%20Check%20each%20one%20yourself%3A%0A-%20A%20Claude%20Agent%20SDK%20app%20under%20systemd%2C%20with%20a%20private%20web%20chat%20at%20%60https%3A%2F%2F%3Cvm%3E.exe.xyz%2F%60%20that%20shows%20each%20command%20Claude%20runs.%0A-%20Claude%20working%20without%20permission%20prompts%2C%20as%20a%20non-root%20user%20with%20sudo%2C%20on%20a%20VM%20that%20holds%20nothing%20else.%0A-%20Claude%20Sonnet%20through%20exe.dev%27s%20LLM%20integration.%20No%20Anthropic%20API%20key%20on%20the%20VM.%0A-%20Conversations%20that%20resume%20after%20a%20restart%2C%20and%20turns%20that%20finish%20after%20you%20close%20the%20tab.%0A%0ARead%20the%20whole%20recipe%2C%20including%20the%20closed%20details.%20Follow%20%22Install%20by%0Ahand%22%20first%2C%20skipping%20VM%20creation%3B%20the%20walkthrough%20is%20for%20the%20owner%0Aafterwards.%20Do%20not%20run%20the%20Update%20instructions%2C%20add%20GitHub%20integrations%2C%0Aor%20create%20sandbox%20VMs.%20Keep%20the%20VM%20private%3A%20never%20run%20share%20set-public%2C%0Abecause%20Claude%20runs%20commands%20with%20sudo%20and%20without%20asking.%20On%20an%0Aexisting%20VM%2C%20ask%20before%20replacing%20~%2Fclaude-agent%20or%20anything%20that%0Alistens%20on%20port%208000.%0AVerify%20the%20pong%20reply%2C%20that%20the%20follow-up%20after%20the%20restart%20answers%0Akiwi%2C%20and%20that%20claude-agent.service%20is%20enabled.%0AFinish%20with%20https%3A%2F%2F%3Cvm%3E.exe.xyz%2F%2C%20using%20this%20VM%27s%20name%2C%20and%20suggest%20the%0Afirst%20prompt%20in%20%22Say%20hello%22.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe.dev/deploy/claude-agent-sdk/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Claude Agent SDK on this VM by following the exe.dev recipe at https://exe.dev/deploy/claude-agent-sdk.md from top to bottom.\n\nThe recipe's example VM name is my-claude-agent-sdk. This VM's name is the output of `hostname`: use it wherever the recipe writes my-claude-agent-sdk. Skip the step that creates the VM; you are on it.\n\nYou are done when all of these are true. Check each one yourself:\n- A Claude Agent SDK app under systemd, with a private web chat at `https://\u003cvm\u003e.exe.xyz/` that shows each command Claude runs.\n- Claude working without permission prompts, as a non-root user with sudo, on a VM that holds nothing else.\n- Claude Sonnet through exe.dev's LLM integration. No Anthropic API key on the VM.\n- Conversations that resume after a restart, and turns that finish after you close the tab.\n\nRead the whole recipe, including the closed details. Follow \"Install by\nhand\" first, skipping VM creation; the walkthrough is for the owner\nafterwards. Do not run the Update instructions, add GitHub integrations,\nor create sandbox VMs. Keep the VM private: never run share set-public,\nbecause Claude runs commands with sudo and without asking. On an\nexisting VM, ask before replacing ~/claude-agent or anything that\nlistens on port 8000.\nVerify the pong reply, that the follow-up after the restart answers\nkiwi, and that claude-agent.service is enabled.\nFinish with https://\u003cvm\u003e.exe.xyz/, using this VM's name, and suggest the\nfirst prompt in \"Say hello\".\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe.dev/deploy/claude-agent-sdk/prompt.txt"
  },
  "updated": "2026-10-20",
  "verified": "2026-10-20",
  "related": [
    "claude-code",
    "typescript-sandboxes",
    "pi-durable",
    "agents",
    "openclaw",
    "codex"
  ],
  "alternatives": [
    "E2B",
    "Daytona",
    "Vercel Sandbox",
    "Cloudflare Sandbox",
    "Modal"
  ]
}
