{
  "manifest_version": "1",
  "slug": "qm",
  "title": "QM",
  "headline": "Self-host QM",
  "description": "Run QM, Y Combinator's open-source AI teammate, on an exe.dev VM: a private web app, a computer per person, and Claude with no API key.",
  "category": "ai-agents",
  "tags": [
    "qm",
    "y combinator",
    "ai teammate",
    "multiplayer agent",
    "team ai agent",
    "self-hosted ai agent",
    "slack ai agent",
    "pi agent"
  ],
  "url": "https://exe.dev/deploy/qm",
  "markdown_url": "https://exe.dev/deploy/qm.md",
  "upstream": {
    "website": "https://github.com/yc-software/qm",
    "source": "https://github.com/yc-software/qm",
    "docs": "https://github.com/yc-software/qm/tree/main/docs",
    "license": "MIT"
  },
  "example_vm_name": "my-qm",
  "time": "15 minutes",
  "stack": [
    {
      "name": "QM portal",
      "detail": "Sign-in and front door for the web app and admin console",
      "port": 8000
    },
    {
      "name": "QM core",
      "detail": "The agent runtime, with Pi driving the model",
      "port": 7999,
      "data": "qm-team-coredata volume"
    },
    {
      "name": "PostgreSQL 16 with pgvector",
      "detail": "Sessions, memory, settings, and users",
      "data": "qm-team-pgdata volume"
    },
    {
      "name": "Agent computers",
      "detail": "One Docker container per person or room, started on demand",
      "data": "qm-home-* volumes"
    },
    {
      "name": "Claude",
      "detail": "Connected through exe.dev's LLM integration"
    }
  ],
  "access": [
    {
      "url": "https://my-qm.exe.xyz/",
      "who": "private",
      "what": "The QM web app and admin console, behind your exe.dev login and a QM sign-in"
    }
  ],
  "delivers": [
    "QM at `https://\u003cvm\u003e.exe.xyz/`, behind your exe.dev login and QM's own sign-in, with you as its administrator.",
    "Claude through exe.dev's LLM integration, with no API key to paste, and GPT models in the admin console.",
    "Agent computers that run commands and keep their files, each in its own container on the VM.",
    "A stack that comes back by itself after a reboot.",
    "Nightly backups of the database, settings, and agent computers in `~/backups/qm`."
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20QM%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Fqm.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-qm.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-qm.%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-%20QM%20at%20%60https%3A%2F%2F%3Cvm%3E.exe.xyz%2F%60%2C%20behind%20your%20exe.dev%20login%20and%20QM%27s%20own%20sign-in%2C%20with%20you%20as%20its%20administrator.%0A-%20Claude%20through%20exe.dev%27s%20LLM%20integration%2C%20with%20no%20API%20key%20to%20paste%2C%20and%20GPT%20models%20in%20the%20admin%20console.%0A-%20Agent%20computers%20that%20run%20commands%20and%20keep%20their%20files%2C%20each%20in%20its%20own%20container%20on%20the%20VM.%0A-%20A%20stack%20that%20comes%20back%20by%20itself%20after%20a%20reboot.%0A-%20Nightly%20backups%20of%20the%20database%2C%20settings%2C%20and%20agent%20computers%20in%20%60~%2Fbackups%2Fqm%60.%0A%0ARead%20the%20whole%20recipe%2C%20including%20the%20closed%20details.%20For%20initial%20setup%2C%0Afollow%20%22Install%20by%20hand%22%20first%2C%20skipping%20VM%20creation%20and%20SSH.%20The%0Aopening%20walkthrough%20is%20for%20the%20owner.%20Do%20not%20run%20the%20restore%20or%20update%0Ainstructions.%0AKeep%20the%20VM%20private.%20Never%20run%20share%20set-public.%20On%20an%20existing%20VM%2C%20ask%0Abefore%20replacing%20anything%20already%20on%20ports%207999-8002%20or%20a%20%60~%2Fqm%60%20folder.%0ASkip%20%60qm%20doctor%60%3A%20it%20tests%20the%20placeholder%20key%20against%20Anthropic%0Adirectly%20and%20always%20fails%20here.%20Run%20%60fix-local-sandbox.sh%60%20after%20every%0A%60qm%20up%60.%0AVerify%20%60qm%20check%60%20passes%2C%20%60%7B%22ok%22%3Atrue%7D%60%20from%20the%20health%20check%2C%20the%0Apatch%20reports%20itself%20in%20place%2C%20the%20backup%20timer%2C%20and%20a%20backup%20archive.%0ADon%27t%20set%20up%20Slack%20unless%20the%20owner%20asks.%20Do%20not%20reboot.%0AFinish%20by%20running%20%60npm%20exec%20qm%20--%20admin-login%60%20in%20%60~%2Fqm%60%20and%20giving%20the%0Aowner%20the%20link%20it%20prints%2C%20saying%20it%20works%20once%20and%20expires%20in%20five%0Aminutes%3B%20this%20conversation%20is%20private%20to%20the%20owner.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe.dev/deploy/qm/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up QM on this VM by following the exe.dev recipe at https://exe.dev/deploy/qm.md from top to bottom.\n\nThe recipe's example VM name is my-qm. This VM's name is the output of `hostname`: use it wherever the recipe writes my-qm. 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- QM at `https://\u003cvm\u003e.exe.xyz/`, behind your exe.dev login and QM's own sign-in, with you as its administrator.\n- Claude through exe.dev's LLM integration, with no API key to paste, and GPT models in the admin console.\n- Agent computers that run commands and keep their files, each in its own container on the VM.\n- A stack that comes back by itself after a reboot.\n- Nightly backups of the database, settings, and agent computers in `~/backups/qm`.\n\nRead the whole recipe, including the closed details. For initial setup,\nfollow \"Install by hand\" first, skipping VM creation and SSH. The\nopening walkthrough is for the owner. Do not run the restore or update\ninstructions.\nKeep the VM private. Never run share set-public. On an existing VM, ask\nbefore replacing anything already on ports 7999-8002 or a `~/qm` folder.\nSkip `qm doctor`: it tests the placeholder key against Anthropic\ndirectly and always fails here. Run `fix-local-sandbox.sh` after every\n`qm up`.\nVerify `qm check` passes, `{\"ok\":true}` from the health check, the\npatch reports itself in place, the backup timer, and a backup archive.\nDon't set up Slack unless the owner asks. Do not reboot.\nFinish by running `npm exec qm -- admin-login` in `~/qm` and giving the\nowner the link it prints, saying it works once and expires in five\nminutes; this conversation is private to the owner.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe.dev/deploy/qm/prompt.txt"
  },
  "updated": "2026-10-28",
  "verified": "2026-10-28",
  "related": [
    "hermes-agent",
    "openclaw",
    "claude-code",
    "agents",
    "codex",
    "opencode"
  ],
  "files": [
    "https://exe.dev/deploy/qm/backup.sh",
    "https://exe.dev/deploy/qm/fix-local-sandbox.sh",
    "https://exe.dev/deploy/qm/restore.sh"
  ]
}
