OpenAI Containers vs Unikraft Cloud
OpenAI Containers are a tool inside OpenAI's model API: the model runs code in a short-lived box that is deleted after 20 idle minutes. Unikraft Cloud is a microVM cloud that turns your Dockerfile into a tiny VM that boots in milliseconds, sleeps when idle and keeps running as long as you want.
The companies and products
OpenAI Containers
OpenAI Containers are the sandboxes OpenAI runs for its own model tools: Code Interpreter, Hosted Shell and the Agents API's hosted sandbox.
This is a different kind of product from boat: a tool inside OpenAI's model API, not a machine you rent. You create a container through the API or let a Responses call make one, and the model runs Python or shell commands in it on a fixed Debian 12 image without sudo, until it expires after 20 minutes without use. It is built for apps that already call OpenAI models and want them to run code, read files and make charts without running any servers.
Unikraft Cloud
Unikraft Cloud is a microVM cloud from Unikraft Inc. that runs any Dockerfile-based workload as a minimal Linux microVM with millisecond cold starts and scale-to-zero.
Your Dockerfile becomes the VM image at build time, and each instance runs on a heavily customized Firecracker VMM, so it boots in milliseconds and can go into standby when no traffic arrives. It is a general compute platform built for dense, bursty work such as HTTP services, headless browsers and agent fleets, sold as flat self-serve plans plus Enterprise dedicated hosts, on-prem and bring your own cloud. It is not a dev machine you log into: instances are reached through services, the CLI and a sandbox plugin for commands and files.
Which use cases each one fits
For each use case, Battleships prices every sandbox provider on the same workload and sorts them from the cheapest monthly bill up. “356th cheapest of 367” means 355 of the other 366 providers run that workload, with every feature it needs, for less. “With limits” means the provider runs it but misses something, so it is listed after every full match. Open a use case for its whole ranking and what each provider misses.
| Use case and its workload | OpenAI Containers: price rank | Unikraft Cloud: price rank | boat: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month A software factory needs Docker and a disk that stays; OpenAI Containers have neither, and Unikraft keeps a disk but documents no container runtime inside. | 356th of 367, with limits $17,371 a month | Can't run it | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB An assistant that lives on its machine all month cannot use an OpenAI container that expires, and Unikraft's Team pool is 8 GiB shared by every running instance. | 341st of 366, with limits $13,140 a month | Can't run it | 5th cheapest of 366 $657 a month |
| Code interpreter bursts 100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month OpenAI Containers are built for this: the model writes code and runs it in the same API call, while Unikraft leaves you to build the runner in your own image. | 194th of 345, with limits $6,000 a month | Can't run it | 186th of 345, with limits $2,000 a month |
| Sandboxes for your users 300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month OpenAI does not publish how many containers can run at once, and Unikraft's self-serve plans cap you at 24 running instances, so hundreds of active users need more. | 361st of 361, with limits $3,780 a month | Can't run it | Cheapest of 361 $209 a month |
| RL rollouts 1,000 at once · 2 vCPU / 4 GB · 1,000,000 sessions of 3 min a month | 191st of 360, with limits $30,000 a month | Can't run it | 34th of 360, with limits $2,000 a month |
| Agent evals 250 at once · 4 vCPU / 8 GB · 15,000 sessions of 20 min a month | 360th of 364, with limits $5,760 a month | Can't run it | 10th cheapest of 364 $200 a month |
| CI runners 40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month CI jobs need Docker, root and open internet; OpenAI documents no Docker or root, and Unikraft keeps nested virtualization for Enterprise. | 345th of 377, with limits $1,728 a month | Can't run it | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB Unikraft can keep a box all month and only needs its Team pool, while an OpenAI container is deleted after 20 idle minutes; boat adds SSH, which neither has. | 362nd of 368, with limits $1,051 a month | 219th of 368, with limits $39 a month | 18th cheapest of 368 $26 a month |
| Computer-use agents 50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month OpenAI has a hosted browser for the Agents API computer_use tool, Unikraft has no desktop built in, and boat streams a 60fps desktop. | 351st of 369, with limits $5,280 a month | Can't run it | 6th cheapest of 369 $200 a month |
| Browser-use agents 50 at once · 2 vCPU / 4 GB · 30,000 sessions of 10 min a month OpenAI's hosted browser is driven by its own Codex harness, while on Unikraft you run your own headless Chrome from a Dockerfile. | 328th of 367, with limits $1,440 a month | Can't run it | 7th cheapest of 367 $200 a month |
| Scraping & bots (startup scale) 50 at once · 1 vCPU / 2 GB · 100,000 sessions of 3 min a month | 328th of 346, with limits $1,755 a month | Can't run it | 6th cheapest of 346 $90 a month |
| Mass scraping & bots (undetectable) 1,000 at once · 1 vCPU / 2 GB · 3,000,000 sessions of 2 min a month | 311th of 338, with limits $35,100 a month | Can't run it | 71st of 338, with limits $1,800 a month |
| Parallel red teaming 200 at once · 2 vCPU / 4 GB · 5,000 sessions of 30 min a month | 308th of 360, with limits $870 a month | Can't run it | 2nd cheapest of 360 $200 a month |
| GPU eval jobs 10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month | Can't run it | Can't run it | Can't run it |
| macOS agents 5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month | Can't run it | Can't run it | Can't run it |
Key features
| Feature | OpenAI Containers | Unikraft Cloud | boat |
|---|---|---|---|
| What it is | A sandbox tool the model uses inside OpenAI's API | A general microVM cloud that runs your Dockerfile | A cloud VM you create, keep, stop and reach from outside |
| Isolation | A fully sandboxed virtual machine; hypervisor not named | Minimal Linux microVM on a customized Firecracker VMM | Full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| Machine size | 1, 4, 16 or 64 GB of memory; vCPU not published | Plan pool shared by all running instances: 2 vCPU / 4 GiB, 8 vCPU / 8 GiB or 24 vCPU / 32 GiB | 4 vCPU / 8 GB by default, up to 16 vCPU / 32 GB |
| Root, Docker and nested virtualization | Commands do not run with sudo; no Docker or /dev/kvm documented | Runs as root; no container runtime inside documented; nested virtualization on Enterprise only | Root, systemd, Docker and /dev/kvm on every machine |
| Files after the session | Data is discarded when the container expires | Volumes, and standby snapshots that keep memory and files | Disk saved every minute and on stop; a stopped sandbox costs nothing and comes back |
| Lifetime | Expires after 20 minutes without use | Runs until stopped; goes into standby when idle | No session cap on paid plans; you set the time to live |
| Starts and wake on request | Created by the API or a model call; no wake on request | Cold boots in milliseconds and wakes on the next request | A stopped sandbox is started by API |
| Fork and checkpoints | No fork; templates save configuration, not a running workspace | Checkpoint memory and volumes of a running microVM, then start new instances from it | Fork a running sandbox with its disk; snapshots every minute |
| Custom image | Fixed Debian 12 image; you upload files into each container | Your Dockerfile becomes the VM image | Named snapshots of a set-up machine, reused as templates |
| Inbound access | None; you reach the container only through the API | Services on its load balancer: HTTP, HTTPS and TLS-wrapped TCP; no SSH yet | SSH, HTTPS URLs for up to 50 ports, raw TCP |
| Outbound internet | Code Interpreter and Hosted Shell: off until an admin sets a domain allowlist | Open; network shield filtering on Enterprise only, limited access | Open internet on every plan; no provider-side allowlist |
| Keeping API keys out of the sandbox | domain_secrets: a sidecar adds the real header for approved domains | Network shield can inject secrets, Enterprise only, limited access | Credentials proxy for model providers and any HTTPS API, on every plan |
| Coding agents and computer use | Agents API (beta) drives a managed Codex harness, with a hosted browser for computer use | None preinstalled; no desktop built in | Claude Code, Codex and more preinstalled with a prompt, steer and events API; 60fps desktop and computer use |
| Regions | US or EU processing for Code Interpreter; Agents API US only | Dallas, Frankfurt, San Francisco, Singapore and Washington DC; more on request | EU only (Germany, Finland, France) |
Every feature Battleships tracks (43)
| Feature | OpenAI Containers | Unikraft Cloud | boat |
|---|---|---|---|
| Full VM (own kernel) | Yes | Yes | Yes |
| Docker inside | No | No | Yes |
| Nested virtualization | No | Yes | Yes |
| Root | No | Yes | Yes |
| Systemd | Not published | Not published | Yes |
| Desktop GUI | Yes | No | Yes |
| Browser | Yes | No | Yes |
| Computer-use API | Yes | No | Yes |
| SSH | No | No | Yes |
| Persistent disk | No | Yes | Yes |
| Pause/resume | No | Yes | Yes |
| Automatic snapshots | No | Yes | Yes |
| Fork/clone | No | Yes | Yes |
| Live fork (no pause) | No | Yes | Yes |
| Memory fork | No | Yes | No |
| Custom image (Docker or snapshot) | No | Yes | Yes |
| ≥24 h sessions | Yes | Yes | Yes |
| Idle auto-stop | Yes | Yes | No |
| Wake on request | No | Yes | No |
| HTTPS preview URLs | No | Yes | Yes |
| Raw TCP inbound | No | Not published | Yes |
| Public IPv4 | No | No | No |
| Egress allowlist | Yes | Yes | No |
| Secret proxy | Yes | Yes | Yes |
| Secret proxy for any API | Yes | Yes | Yes |
| Preinstalled agents | No | No | Yes |
| Agent harness API | Yes | No | Yes |
| MCP server | No | No | No |
| GPU | No | Yes | No |
| Windows | No | No | No |
| Arm64 | No | Yes | No |
| Self-hosting | Yes | Yes | No |
| BYOC | No | Yes | No |
| Open source | No | No | No |
| Scoped API keys | Not published | Not published | Yes |
| Spend limits | Not published | Not published | Yes |
| Usage per sandbox (API) | No | No | Yes |
| Audit logs | Not published | Yes | No |
| SSO | Yes | No | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | Yes | Yes | No |
| EU data residency | Yes | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
There is no comparable measurement for either: OpenAI Containers and Unikraft Cloud are not in the hpc-sandbox-benchmarks run, and OpenAI does not publish the vCPU behind each container size. boat did 26.69 runs per second on its Node.js build-and-test loop at 4 vCPU / 8 GB. Unikraft states cold starts under 10 ms, which is its own figure and measures start time, not CPU speed.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. OpenAI Containers and Unikraft Cloud have no published run in this suite yet, so there is no like-for-like number to compare.
Pricing in five scenarios
Each bill is priced from the providers' public price lists by the open Battleships engine, with the cheapest plan that runs the scenario.
| Scenario | OpenAI Containers, a month | Unikraft Cloud, a month | boat, a month |
|---|---|---|---|
| One coding agent, workdays 4 vCPU / 8 GB, 50 GB disk, 8 hours a day, 22 days a month, files kept between days | $228 · API pay as you go · with limits | $39 · Hobby | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $1,051 · API pay as you go · with limits | $39 · Hobby | $26 · $20/mo |
| 50 agents in parallel 50 machines of 4 vCPU / 8 GB at once, 8-hour sessions, 1,100 sessions a month, Docker inside | $11,405 · API pay as you go · with limits | Can't run it | $317 · $20/mo × 3 seats |
| Sandboxes for your users 2 vCPU / 4 GB, 30,000 sessions of 10 minutes a month, up to 300 at once | $1,620 · API pay as you go · with limits | Can't run it | $200 · $100/mo × 2 seats |
| 1,000 short jobs at once 2 vCPU / 4 GB, 1,000 at once, 3 minutes each, 200,000 jobs a month | $6,000 · API pay as you go · with limits | Can't run it | $2,000 · $2000/mo · with limits |
OpenAI Containers: OpenAI bills each container session by the minute for the memory size you pick, with a 5-minute minimum, and model tokens are billed on top. There is no plan fee.
Unikraft Cloud: Unikraft charges a flat monthly fee for a pool of running capacity: free for 2 vCPU / 4 GiB, $39 for 8 vCPU / 8 GiB, $199 for 24 vCPU / 32 GiB, with sleeping instances not counted. Anything bigger is an Enterprise quote.
Unikraft Cloud: Plans start at $20 a month, and the whole fee is usage credit spent per second while a sandbox runs. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
OpenAI Containers fit none of the five scenarios as written: no persistent disk, no Docker, no internet in Code Interpreter and Hosted Shell until an admin allows domains, and no published vCPU. Unikraft fits one agent on workdays or all month on its Team pool, which that one agent fills, but no self-serve pool holds 50 agents, 300 user sandboxes or 1,000 jobs at once. boat fits all but the burst, where the $2,000 plan queues starts.
| Scenario | OpenAI Containers | Unikraft Cloud | boat |
|---|---|---|---|
| One coding agent, workdays |
|
| None that bite |
| One agent that never stops |
|
| None that bite |
| 50 agents in parallel |
|
| None that bite |
| Sandboxes for your users |
|
| None that bite |
| 1,000 short jobs at once |
|
|
|
Which one should you use?
Use OpenAI Containers when
your app already calls OpenAI models and the model only needs to run short pieces of code or shell commands on files you give it.
- Built into the model call. Best if your app already calls OpenAI models: one tool line in a request gives the model a place to run code.
- Nothing to run or clean up. OpenAI creates the container, bills it by the minute with your tokens, and it expires on its own.
- Locked-down network by default. Useful if code must only reach chosen hosts: Code Interpreter and Hosted Shell have no outbound access until an admin allows domains.
Use Unikraft Cloud when
you run many small services or headless browsers from your own Dockerfile that sleep most of the time and must wake in milliseconds, or need US or Asia regions.
- Millisecond starts and scale-to-zero. Best for many small services that sleep most of the time and must answer the next request in milliseconds.
- Your own image that keeps running. Your Dockerfile becomes the VM, it runs as root until you stop it, and checkpoints let you start copies of it.
- Regions and your own hardware. Runs in the US, Frankfurt and Singapore, and Enterprise adds GPUs, arm64, dedicated hosts, on-prem or your own cloud.
Where boat fits
If what you are really running is coding agents, neither is a full machine: OpenAI Containers are deleted after 20 idle minutes and have no root, and Unikraft runs your image without SSH or Docker inside. boat gives each agent a whole Linux VM that keeps its disk, opens ports to the world and comes with the agents preinstalled.
Root, Docker and /dev/kvm
Agents install packages and start databases in Docker. OpenAI runs commands without sudo, and Unikraft documents no container runtime inside, so you bake everything into the image or sign Enterprise for nested virtualization.
A disk that stays and a way in
An OpenAI container loses its clone and installs after 20 idle minutes and takes no inbound connections. Unikraft keeps files but has no SSH yet. boat saves the disk every minute and gives SSH and HTTPS on 50 ports.
Agents and keys built in, at fleet size
boat preinstalls Claude Code, Codex and more, drives them from outside, and keeps real keys in a proxy on every plan. Unikraft's secret injection is Enterprise only, and 50 agents at 4 vCPU / 8 GB exceed every self-serve pool.
Use boat when your agents need a real machine they keep: root, Docker, a disk that persists, SSH and open ports, a desktop, and coding agents you drive from outside. Compare it one to one: boat vs OpenAI Containers and boat vs Unikraft Cloud.
Questions people ask
Is OpenAI Containers cheaper than Unikraft Cloud?
For one agent, no: one coding agent on workdays comes to $228 a month on OpenAI and $39 on Unikraft's Team pool, and one that never stops comes to $1,051 against $39. OpenAI also bills model tokens on top. On boat the same two come to $20 and $26.
Which one is faster?
Neither has a published CPU benchmark, so there is no fair speed comparison. Unikraft is built to start fast: its microVMs cold boot in milliseconds and wake on the next request. boat measured 26.69 runs per second at 4 vCPU / 8 GB.
Can OpenAI Containers or Unikraft Cloud run Docker?
OpenAI's hosted shell runs without sudo and documents no Docker. Unikraft uses your Dockerfile to build the VM, but its docs do not describe running a container runtime inside a running instance. A boat sandbox has Docker, systemd and /dev/kvm ready to use.
Do files survive when the session ends?
Not on OpenAI: a container expires after 20 minutes without use, and its data is discarded. Unikraft keeps volumes and can snapshot memory when an instance goes into standby. boat saves the disk every minute and on stop.
Can I SSH into either one?
No. OpenAI containers are reached only through the API, and Unikraft has announced SSH as coming soon, so today you use its sandbox plugin and CLI. You can SSH into every boat sandbox.
Is boat SOC 2 compliant?
SOC 2 is in progress. We're open about where we stand: live status at status.ascii.dev and our data retention policy at docs.boat.dev/data-retention.
Try boat
Install the CLI, then run boat new.
7-day free trial
More comparisons
- boat vs OpenAI Containers
- boat vs Unikraft Cloud
- E2B vs OpenAI Containers
- Daytona vs OpenAI Containers
- Modal vs OpenAI Containers
- Vercel Sandbox vs OpenAI Containers
- Cloudflare Sandbox vs OpenAI Containers
- Blaxel vs OpenAI Containers
- Runloop vs OpenAI Containers
- Tensorlake vs OpenAI Containers
- Morph Cloud vs OpenAI Containers
- CodeSandbox SDK vs OpenAI Containers