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.- E2B: the API key of the team that will own QM.
- Organization: the admin email and an org id.
- Models: an OpenAI key, and optionally an Anthropic key for Claude models and Claude Code.
- Email: none, SMTP, or Resend, so teammates can sign in by email.
- Deploy: creates a persistent sandbox for QM core and deploys QM there, in about ten minutes.
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.
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 theqm-sandbox template and it creates an E2B sandbox for every person and room.
qm.config.jsonc
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
Everyqm-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
- Core keeps the org’s conversations, memory, and permissions. It runs in
qm-coreon E2B, or anywhere else QM supports. - One sandbox per scope: core creates a
qm-sandboxfor each person and each room through its E2B backend, and finds it again by name on the next turn. - Durable by default: sandboxes pause rather than stop, and recovery snapshots carry a scope’s files across pauses and lost sandboxes.
Related guides
Sandbox persistence
Auto-pause, resume, and manage sandbox lifecycle
Internet access
Restrict where sandboxes can connect with outbound network rules