Skip to content
Markdown

Runtime vs Blaxel

Runtime bills the CPU your agent uses. It costs 81% less than Blaxel while running an agent that mostly waits on a model.

The saving: 1,000 one-minute runs of a 2 vCPU, 4 GiB sandbox cost $0.64 on Runtime and $3.45 on Blaxel. At 100,000 runs a month that is $63.89 against $345.00, $281 a month saved. Your Blaxel sandbox code keeps working. Change one import.

Comparing more than two? Blaxel alternatives ranks the other providers by the cost of the same job.

Updated

On this page

Estimated compute cost2 vCPUs · 4 GiB · 60 s a run · 20 CPU-seconds busy

81% less than Blaxel

1,000

Compute only, at list rates checked 25 October 2026 (Blaxel pricing). Plan fees, network, taxes and free credits are left out. The worked example below shows the arithmetic.

Where Runtime is better#

  • Lower cost while running. Blaxel bills $0.0000115 per GB of memory per second of active time, $0.0414 per GB-hour. CPU comes with the memory. Runtime charges $0.0075 per GiB-hour of memory and measured CPU at $0.025 per vCPU-hour.
  • A written uptime promise. 99% API uptime a month for paid accounts, measured from outside. 10% of a short month's charges comes back as credit automatically (Uptime Promise).
  • Cheaper even when busy. With both CPUs working the whole time, the example job costs $1.33 on Runtime and $3.45 on Blaxel.
  • CPU and memory chosen apart. Blaxel sets a sandbox's CPU from its memory: 8 GB gets 4 cores. On Runtime you choose vCPUs and memory separately. A CPU-heavy job does not pay for memory it does not need.
  • Idle time costs no compute here either. A Runtime sandbox pauses itself after 300 seconds with nothing happening in it, or after as few as 10 if you set it. A paused sandbox pays only paused storage. A command still running, an open connection, network traffic or CPU use keeps it awake.
  • Cheaper to keep paused work. A paused Runtime sandbox keeps its files, memory and processes for $0.08 per GB (10⁹ bytes) a month, while you have credit. Blaxel's standby snapshots cost $0.20 per GB a month.
  • A one-line switch. withruntime/blaxel runs code written for Blaxel's sandbox SDK, in JavaScript and Python: processes, files, previews, snapshots, forks and the code interpreter, with no Blaxel key. Credit you add within 30 days of signing up is matched, up to $1,000 in total.
  • Single sign-on at no extra charge. SAML or OIDC sign-in, SCIM, roles and an audit log come with every Runtime account (single sign-on). Blaxel lists SAML among the enterprise features of its Dedicated Support add-on.
  • Private networks without a custom plan. A paid Runtime account joins its own network to its sandboxes over WireGuard, for $5 a month (private networks). Blaxel lists private network connectivity on its Custom plan.
  • Your agent sets itself up. It runs npx withruntime sandboxes run -- ..., shows you a link, and starts once you approve in the browser. No API key goes into a prompt or a config file. The MCP server reuses the same connection.
  • Guardrails for agents. Give an agent a read-only key or a daily spending limit per key. Cap any sandbox's whole cost with maxTotalCostMicros. Every write takes an idempotency key, so a lost response never creates a second sandbox.

Also included: a code interpreter, network allow and deny lists, secrets the sandbox never sees, custom images, volumes backed up daily, snapshots and forks with memory, private previews, a Linux desktop, metrics, webhooks, OpenTelemetry export, S3, R2 and GCS bucket mounts, MCP servers from a catalog and identity tokens for AWS and Google Cloud. Paid accounts add custom domains, TCP ports and dedicated outbound addresses. See products.

At a glance#

Blaxel's figures come from its public pricing and documentation, checked 25 October 2026.

Runtime Blaxel
Isolation Firecracker microVM, own kernel Lightweight virtual machines
CPU billing $0.025 per vCPU-hour of measured CPU, with a small floor Included with memory; 8 GB gets 4 cores
Memory billing $0.0075 per reserved GiB-hour $0.0000115 per GB-second of active time
Paused storage $0.08 per GB (10⁹ bytes) a month; files, memory and processes $0.20 per GB-month snapshot; files and processes
Plan fee None; prepaid credit from $10 None; tiers grow with credit added
Free start 100 free hours of a 1 GB machine in the first 30 days, no card Up to $200 of credit
Internet out First 100 GiB a month free, then $0.02 per GB (10⁹ bytes) Included

Cost for the same job#

Take 1,000 runs of a 2 vCPU, 4 GiB sandbox (4 GB on Blaxel). Each run lasts 60 seconds and keeps the CPU busy for 20 CPU-seconds. This is an agent that spends most of its time waiting for a model.

Runtime$0.64
CPU
1,000 × 20 s / 3,600 × $0.025
$0.14
Memory
1,000 × 60 s / 3,600 × 4 × $0.0075
$0.50
Blaxel$3.45
Memory
1,000 × 75 s × 4 × $0.0000115
$3.45
  • Saving: 81%, or $2.81 per 1,000 runs.
  • Per month: at 100,000 runs, $63.89 on Runtime against $345.00 on Blaxel.
  • Busier work: with both CPUs busy for the whole minute, $1.33 on Runtime against $3.45 on Blaxel.

The Blaxel figure includes the 15 seconds or so each sandbox stays billed after its run, before Blaxel puts it on standby. Storage, network, taxes and free credit are left out of both. On Runtime, inbound traffic is free. Each account's first 100 GiB out a month is free. After that, outbound traffic costs $0.02 per GB (10⁹ bytes). See pricing for Runtime's terms.

How to switch#

Give your coding agent the one instruction in migration. It replaces the Blaxel calls on a branch, tests them on the free usage, and tells you what you save each month. Your old code stays on the main branch until you merge.

Change one import

Runtime's SDK runs code written for Blaxel's sandbox SDK. Change the import and set RUNTIME_API_KEY, or run npx withruntime login once:

TypeScriptimport { SandboxInstance } from "withruntime/blaxel"; // was: from "@blaxel/core"
Pythonfrom withruntime.blaxel import SandboxInstance  # was: from blaxel.core import SandboxInstance

Sandboxes get Blaxel's default of 4096 MB, with one vCPU for every 2048 MB. A sandbox pauses after 300 seconds with nothing happening in it. It keeps its memory, files and processes. It wakes by itself on the next command, file call or preview visit. Envs, processes by name, files, previews, snapshots, forks, volumes and the code interpreter carry over. Sandboxes use the free usage first, then prepaid credit. There is nothing to choose.

Four things to know before the first run:

  • Share sandboxes with an account-wide key. A Blaxel workspace key sees every sandbox. A Runtime key sees the sandboxes it made unless an owner or admin makes it account-wide, on the API keys page or with runtime keys create --account-wide. Give a web service and a worker that share sandboxes account-wide keys, or one key (keys in a team).
  • Without credit, a sandbox is at most 2 vCPU and 4096 MB. Blaxel's default fits. memory: 8192 or more needs paid credit.
  • Custom images are Runtime images. Blaxel's own templates, such as blaxel/base-image, start Runtime's stock image. Any other image must be a ready Runtime image of the same name. Build it once with npx withruntime images build --dockerfile Dockerfile --name <name>.
  • Private preview tokens work as they did. Blaxel's X-Blaxel-Preview-Token header and ?bl_preview_token= parameter are accepted, as are Runtime's own. The token never reaches your server.

Sessions work as they did. sandbox.sessions.create() makes a Runtime sandbox session. It is a token your frontend uses to run commands, use files and reach previews of that one sandbox, and nothing else. Blaxel's default of a day is Runtime's longest. responseHeaders["Access-Control-Allow-Origin"] names the page that may use it. SandboxInstance.fromSession(session) drives the sandbox with the token alone.

A call Runtime handles differently, such as drives, schedules or Blaxel's agent and MCP hosting, throws NotSupportedError before anything happens. It names what to use instead. BLAXEL.md in the package lists every mapping. For MCP, Runtime runs servers from its catalog inside a sandbox (MCP servers in a sandbox). A bucket mounted in several sandboxes shares files between them (mount your own bucket). A Blaxel schedule runs a command inside one sandbox. On Runtime, a scheduled job runs it on a cron schedule or at a time, in a fresh sandbox each run.

Or port the calls

Blaxel:

JavaScriptimport { SandboxInstance } from "@blaxel/core";const sandbox = await SandboxInstance.create({ name: "my-sandbox", memory: 4096 });const result = await sandbox.process.exec({  command: "python3 -c 'print(sum([125, 250, 375]))'",  waitForCompletion: true,});await sandbox.delete();

Runtime:

TypeScriptimport { Sandbox } from "withruntime";const box = await Sandbox.create();try {  await box.files.write("/workspace/invoice.py", "print(sum([125, 250, 375]))\n");  console.log((await box.exec("python3 /workspace/invoice.py", { check: true })).stdout);} finally {  await box.stop();}

Moving from Blaxel? Credit you add within 30 days of signing up is matched, up to $1,000 in total (welcome match).

When Blaxel may fit better#

  • Very large fleets. Blaxel's top tier runs over 100,000 sandboxes at the same time. A tier is the credit topped up over the last 30 days, which is then spent on usage: $20 unlocks 50 sandboxes and $50 unlocks 200.
  • Heavy outbound traffic. Blaxel includes internet egress in its rates. Runtime's first 100 GiB out a month are free. After that, the rate is $0.02 per GB (10⁹ bytes).

Sources#

Try it on your own work. Sign up, then paste the setup prompt into your coding agent.

Start free, no card

Was this page right?