Private beta
Machines for your software factory.
Ortam runs each coding agent in a Sandbox: a Linux VM with sudo and Docker. It saves the disk while the agent works, so the next job starts with the repo, the dependencies and the images already in place.
What you build and what Ortam runs
Your factory
- Users and sign-in
- Repositories and models
- Agents and the task queue
- Review, tests and shipping
Ortam
- A Linux VM per Sandbox
- The saved disk
- Every command and its output
- Provider logins, renewed outside the VM
Your users never need an Ortam account. Your backend holds one organization key and assigns each Sandbox to a user, project or task.
$ ortam ls NAME STATE LAST SAVE LAST JOB agent-checkout running 12s ago fix flaky cart test agent-billing running 40s ago upgrade the Stripe SDK agent-search stopped yesterday add search filters agent-docs stopped 2 days ago rewrite the API docs # a new job comes in for agent-search $ ortam run agent-search -C app -- claude -p "paginate /search" Started from yesterday's save in 21s. Done in 6m 10s. 4 files changed, tests passing.
What a Sandbox does
Keeps its setupStop it tonight. Tomorrow the tests run without reinstalling.
Keeps running when you disconnectYour orchestrator can restart mid-test. The tests keep running.
Branches from a SnapshotStart three fixes from the same known‑good Sandbox.
Keeps long-lived logins off the VMAgents use your Claude or ChatGPT plan without holding the account login.
Comes back after a hardware failureA host failure can lose the work since the last save.
Runs in its own VMA whole VM per Sandbox, not a container on a shared kernel.
Run your first command
Install the CLI, log in with your organization key, then create a Sandbox and run commands in it.
curl -fsSL https://ortam.dev/install.sh | shortam login
ortam create my-sandbox
ortam run my-sandbox -- git clone https://github.com/you/app
ortam run my-sandbox -C app -- npm ci
ortam run my-sandbox -C app -- npm test
ortam attach my-sandbox
ortam stop my-sandbox
ortam snapshot my-sandboximport { Ortam } from "@ortam/sdk";
const ortam = new Ortam(); // reads ORTAM_API_KEY
const repo = "https://github.com/you/app";
const sandbox = await ortam.sandboxes.create({ name: "my-sandbox" });
await sandbox.run(["git", "clone", repo]).result();
await sandbox.run(["npm", "ci"], { cwd: "app" }).result();
const run = sandbox.run(["npm", "test"], { cwd: "app" });
for await (const line of run.output()) console.log(line);
// An exit code, or another outcome such as a timeout
const result = await run.result();curl https://api.ortam.dev/v1/sandboxes/$SANDBOX_ID/executions \
-H "Authorization: Bearer $ORTAM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"argv": ["npm", "test"], "cwd": "/home/developer/app"}'Billed by the second while it runs
The plan is $20 a month, and all of it counts toward usage. A running Sandbox is billed by the second; a stopped one pays only for its disk, at 1¢ per GB‑month.
- Small2 vCPUs · 4 GB memory · 40 GB disk$0.018/hrcapped at $13/mo
- Medium4 vCPUs · 8 GB memory · 80 GB disk$0.036/hrcapped at $26/mo
- Large8 vCPUs · 16 GB memory · 160 GB disk$0.072/hrcapped at $52/mo
Billing starts when the VM is ready, so failed boots and waits for hardware are free. Saved disks are kept while your plan is active. Prices are planned for launch and may change before it. Sizes, billing and limits
Questions
What does it cost?
Can I use it now?
How is it different from E2B or Vercel Sandbox?
Where does it run?
Can agents run Docker?
Is the saved disk encrypted?
Can I read files without starting the VM?
Can I change a Sandbox’s size?
Request access
We’re letting teams in a few at a time. Tell us what your agents run and roughly how many Sandboxes you need, and we’ll send an organization key.