{
  "manifest_version": "1",
  "slug": "aider",
  "title": "Aider",
  "headline": "Run Aider on a remote server",
  "description": "Aider on your own VM, wired to Claude and GPT through exe.dev with no API keys. Git commits for every change, GitHub repos, and a tmux session.",
  "category": "ai-agents",
  "tags": [
    "aider",
    "ai pair programming",
    "ai coding agent",
    "remote development",
    "git",
    "tmux",
    "claude",
    "gpt"
  ],
  "url": "https://exe.dev/deploy/aider",
  "markdown_url": "https://exe.dev/deploy/aider.md",
  "upstream": {
    "website": "https://aider.chat/",
    "source": "https://github.com/Aider-AI/aider",
    "docs": "https://aider.chat/docs/",
    "license": "Apache-2.0"
  },
  "example_vm_name": "my-aider",
  "time": "5 minutes",
  "stack": [
    {
      "name": "Aider",
      "detail": "installed with uv; connected to exe.dev's LLM integration",
      "data": "~/.aider.conf.yml"
    },
    {
      "name": "Your project",
      "detail": "a Git repository; aider commits each change",
      "data": "~/project"
    },
    {
      "name": "tmux",
      "detail": "keeps your terminal session running when you disconnect"
    }
  ],
  "access": [
    {
      "url": "ssh my-aider.exe.xyz",
      "who": "private",
      "what": "your terminal"
    }
  ],
  "delivers": [
    "Aider connected to Claude and GPT models, with no API key to paste",
    "A Git repository at `~/project` on persistent disk, where aider commits its changes",
    "An `aider` tmux session that survives disconnects"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20Aider%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Faider.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-aider.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-aider.%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-%20Aider%20connected%20to%20Claude%20and%20GPT%20models%2C%20with%20no%20API%20key%20to%20paste%0A-%20A%20Git%20repository%20at%20%60~%2Fproject%60%20on%20persistent%20disk%2C%20where%20aider%20commits%20its%20changes%0A-%20An%20%60aider%60%20tmux%20session%20that%20survives%20disconnects%0A%0ARun%20the%20VM-side%20setup%20in%20%22Start%20coding%22.%20If%20%60~%2F.aider.conf.yml%60%20or%0A%60~%2F.aider.model.settings.yml%60%20already%20exists%20and%20differs%20from%20the%0Arecipe%27s%2C%20show%20the%20owner%20the%20difference%20and%20ask%20before%20replacing%20it.%20If%0A%60git%20config%20--global%20user.email%60%20already%20prints%20an%20address%2C%20skip%20the%0Agit%20identity%20step.%20If%20%60~%2Fproject%60%20already%20exists%2C%20reuse%20it%20and%20only%20make%0Athe%20first%20commit%20when%20it%20has%20no%20commits.%20Create%20tmux%20detached%0A%28%60tmux%20new%20-d%20-s%20aider%20-c%20~%2Fproject%60%29%20rather%20than%20attaching.%20Reuse%20the%0Asession%20if%20it%20already%20exists.%20Do%20not%20launch%20interactive%20aider.%20Verify%20in%0Aa%20scratch%20repository%2C%20not%20~%2Fproject%2C%20so%20the%20owner%27s%20history%20stays%20clean%3A%0A%60git%20init%20%2Ftmp%2Faider-check%20%26%26%20cd%20%2Ftmp%2Faider-check%20%26%26%20aider%20--yes-always%0A--message%20%22Reply%20with%20exactly%3A%20OK%22%60%20must%20print%20OK%20and%20no%20error%3B%20then%0A%60rm%20-rf%20%2Ftmp%2Faider-check%60.%20Check%20%60tmux%20has-session%20-t%20aider%60.%20Skip%20the%0Alater%20optional%20sections%20and%20FAQ.%20Finish%20with%20the%20SSH%20command%20from%20%22Take%0Aa%20break%22%2C%20using%20this%20VM%27s%20name%2C%20and%20tell%20the%20owner%20to%20run%20%60aider%60%20inside%0Ait.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe.dev/deploy/aider/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Aider on this VM by following the exe.dev recipe at https://exe.dev/deploy/aider.md from top to bottom.\n\nThe recipe's example VM name is my-aider. This VM's name is the output of `hostname`: use it wherever the recipe writes my-aider. 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- Aider connected to Claude and GPT models, with no API key to paste\n- A Git repository at `~/project` on persistent disk, where aider commits its changes\n- An `aider` tmux session that survives disconnects\n\nRun the VM-side setup in \"Start coding\". If `~/.aider.conf.yml` or\n`~/.aider.model.settings.yml` already exists and differs from the\nrecipe's, show the owner the difference and ask before replacing it. If\n`git config --global user.email` already prints an address, skip the\ngit identity step. If `~/project` already exists, reuse it and only make\nthe first commit when it has no commits. Create tmux detached\n(`tmux new -d -s aider -c ~/project`) rather than attaching. Reuse the\nsession if it already exists. Do not launch interactive aider. Verify in\na scratch repository, not ~/project, so the owner's history stays clean:\n`git init /tmp/aider-check \u0026\u0026 cd /tmp/aider-check \u0026\u0026 aider --yes-always\n--message \"Reply with exactly: OK\"` must print OK and no error; then\n`rm -rf /tmp/aider-check`. Check `tmux has-session -t aider`. Skip the\nlater optional sections and FAQ. Finish with the SSH command from \"Take\na break\", using this VM's name, and tell the owner to run `aider` inside\nit.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe.dev/deploy/aider/prompt.txt"
  },
  "updated": "2026-10-30",
  "related": [
    "codex",
    "opencode",
    "claude-code",
    "code-server",
    "openclaw",
    "pi"
  ]
}
