{
  "manifest_version": "1",
  "slug": "pi",
  "title": "Pi",
  "headline": "Run the Pi coding agent on a remote server",
  "description": "Pi, the minimal, extensible coding agent, is already installed on exe.dev. Pick a model, open a project, and let Pi work while your laptop sleeps.",
  "category": "ai-agents",
  "tags": [
    "pi",
    "pi coding agent",
    "earendil",
    "remote development",
    "ai coding agent",
    "tmux",
    "extensions"
  ],
  "url": "https://exe.dev/deploy/pi",
  "markdown_url": "https://exe.dev/deploy/pi.md",
  "upstream": {
    "website": "https://pi.dev/",
    "source": "https://github.com/earendil-works/pi",
    "docs": "https://pi.dev/docs/latest",
    "license": "MIT"
  },
  "example_vm_name": "my-pi",
  "time": "2 minutes",
  "stack": [
    {
      "name": "Pi",
      "detail": "preinstalled; models from exe.dev's LLM integration",
      "data": "~/.pi/agent"
    },
    {
      "name": "Your project",
      "detail": "a Git repository",
      "data": "~/project"
    },
    {
      "name": "tmux",
      "detail": "keeps your terminal session running when you disconnect"
    }
  ],
  "access": [
    {
      "url": "ssh my-pi.exe.xyz",
      "who": "private",
      "what": "your terminal"
    }
  ],
  "delivers": [
    "Pi answering through exe.dev's LLM integration, with no API key or sign-in",
    "A Git repository at `~/project` on persistent disk",
    "A `pi` tmux session that survives disconnects"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20Pi%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Fpi.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-pi.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-pi.%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-%20Pi%20answering%20through%20exe.dev%27s%20LLM%20integration%2C%20with%20no%20API%20key%20or%20sign-in%0A-%20A%20Git%20repository%20at%20%60~%2Fproject%60%20on%20persistent%20disk%0A-%20A%20%60pi%60%20tmux%20session%20that%20survives%20disconnects%0A%0AUse%20the%20preinstalled%20Pi%3B%20do%20not%20install%20another%20copy.%20If%20%60pi%20--version%60%0Ais%20older%20than%201.4.0%2C%20run%20%60exeuntu%20update%20pi%60%20%28without%20sudo%29.%20Run%20the%0AVM-side%20setup%20in%20%22Start%20coding%22.%20Create%20tmux%20detached%0A%28%60tmux%20new%20-d%20-s%20pi%20-c%20~%2Fproject%60%29%20rather%20than%20attaching.%20Reuse%20the%0Asession%20if%20it%20already%20exists%2C%20and%20don%27t%20add%20the%20tmux%20setting%20twice.%20Do%0Anot%20launch%20interactive%20Pi%3B%20leave%20its%20first-run%20question%20to%20the%20owner.%20Do%0Anot%20change%20%60~%2F.pi%2Fagent%2Fauth.json%60%2C%20%60settings.json%60%20or%20the%20%60exe-dev%60%0Aextension.%20Verify%20from%20~%2Fproject%20with%0A%60pi%20-p%20--model%20gpt-6-luna%40llm%20%22Reply%20with%20exactly%3A%20OK%22%20%3C%2Fdev%2Fnull%60%20and%0Acheck%20%60tmux%20has-session%20-t%20pi%60.%20Skip%20the%20later%20optional%20instructions%20and%0AFAQ.%20Finish%20with%20the%20SSH%20command%20from%20%22Take%20a%20break%22%2C%20using%20this%20VM%27s%0Aname%2C%20and%20tell%20the%20owner%20to%20run%20%60pi%60%20inside%20it%20and%20choose%20%22Use%20exe.dev%0ALLM%20integration%22%20when%20Pi%20asks.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe.dev/deploy/pi/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Pi on this VM by following the exe.dev recipe at https://exe.dev/deploy/pi.md from top to bottom.\n\nThe recipe's example VM name is my-pi. This VM's name is the output of `hostname`: use it wherever the recipe writes my-pi. 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- Pi answering through exe.dev's LLM integration, with no API key or sign-in\n- A Git repository at `~/project` on persistent disk\n- A `pi` tmux session that survives disconnects\n\nUse the preinstalled Pi; do not install another copy. If `pi --version`\nis older than 1.4.0, run `exeuntu update pi` (without sudo). Run the\nVM-side setup in \"Start coding\". Create tmux detached\n(`tmux new -d -s pi -c ~/project`) rather than attaching. Reuse the\nsession if it already exists, and don't add the tmux setting twice. Do\nnot launch interactive Pi; leave its first-run question to the owner. Do\nnot change `~/.pi/agent/auth.json`, `settings.json` or the `exe-dev`\nextension. Verify from ~/project with\n`pi -p --model gpt-6-luna@llm \"Reply with exactly: OK\" \u003c/dev/null` and\ncheck `tmux has-session -t pi`. Skip the later optional instructions and\nFAQ. Finish with the SSH command from \"Take a break\", using this VM's\nname, and tell the owner to run `pi` inside it and choose \"Use exe.dev\nLLM integration\" when Pi asks.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe.dev/deploy/pi/prompt.txt"
  },
  "updated": "2026-10-30",
  "verified": "2026-10-30",
  "related": [
    "pi-durable",
    "exe-mcp",
    "claude-code",
    "codex",
    "opencode",
    "openclaw"
  ]
}
