Skip to main content
QM is Y Combinator’s open-source multiplayer agent harness for work. Teams use it in Slack and on the web: every person and every room gets its own scoped memory, files, permissions, and a durable computer the agent works on. E2B provides two pre-built templates: qm-core runs QM itself, and qm-sandbox is the agent computer QM creates for each person and room.

Deploy QM on E2B

Create the setup sandbox with the E2B CLI.
The terminal prints a private link. Open it in your browser and walk through the setup:
  1. E2B: the API key of the team that will own QM.
  2. Organization: the admin email and an org id.
  3. Models: an OpenAI key, and optionally an Anthropic key for Claude models and Claude Code.
  4. Email: none, SMTP, or Resend, so teammates can sign in by email.
  5. Deploy: creates a persistent sandbox for QM core and deploys QM there, in about ten minutes.
When the deploy finishes, the page shows a Sign in to QM button that signs you in as the first admin. Invite teammates from the Users page of the admin console.
QM core runs in a sandbox that pauses instead of stopping when it reaches the 24 hour timeout, and wakes on the next visit in the browser. Slack messages cannot wake a paused core, so a team that mostly uses QM from Slack needs an external job that pauses and resumes the sandbox once a day. This needs a plan that allows a 24 hour timeout (Pro). The setup checks this when you enter the E2B key.
To get a new admin sign-in link later, run qm admin-login inside the core sandbox.

Use E2B sandboxes from an existing QM deployment

If QM core already runs elsewhere (Fly, AWS, or plain Docker), point it at the qm-sandbox template and it creates an E2B sandbox for every person and room.
qm.config.jsonc
Set E2B_API_KEY with qm secrets set. Pin a version tag so a new template release does not change the image new sandboxes get. On plans capped at one hour, also set E2B_MAX_LIFETIME_SEC=3600 in env.core.

What’s inside the agent computer

Every qm-sandbox ships with the tools QM’s agents expect: Claude Code, Codex CLI, GitHub CLI, AWS CLI, Node.js 24, and Python 3.11. Each sandbox gets 8 vCPU and 8 GiB of memory. Sandboxes pause instead of stopping when their timeout runs out and resume on the next turn, and core restores a scope’s home from its newest snapshot if a sandbox is lost. You can also create the agent computer directly with the SDK to look around.

How it works

  1. Core keeps the org’s conversations, memory, and permissions. It runs in qm-core on E2B, or anywhere else QM supports.
  2. One sandbox per scope: core creates a qm-sandbox for each person and each room through its E2B backend, and finds it again by name on the next turn.
  3. Durable by default: sandboxes pause rather than stop, and recovery snapshots carry a scope’s files across pauses and lost sandboxes.
QM’s own E2B template guide covers building your own sandbox image, routing egress through QM’s proxy, and running published apps on E2B.

Sandbox persistence

Auto-pause, resume, and manage sandbox lifecycle

Internet access

Restrict where sandboxes can connect with outbound network rules