The idea

A lifetime limit is a hard deadline counted from creation or last resume. It ends the machine even if it is busy. An idle timer parks the machine when nothing is happening. A wake path decides whether the next request brings it back, or whether someone has to start it.

A provider can pass two of the three and fail the use case. Boat has no idle timer and still stops your box after an hour, because its deadline counts from creation. Lizard never sleeps for idleness and deletes the sandbox five minutes after creation if you used the SDK. Agent 37 never stops on its own, but it also never wakes itself if you stopped it.

What counts as activity is the quiet variable. Runtime counts an open terminal or SSH session. Sprites counts an in-flight request, output to a session, an open TCP connection or an active task. boxd counts TCP/UDP traffic in either direction, so polling an API keeps a machine awake while a local compile does not.

Where providers split

The claim on the left, the provider's own words on the right

The timer counts from creation, not from use

Boat's auto-stop counts from creation or the last resume and defaults to one hour. A running agent prompt pushes the deadline out by one TTL, but ordinary work does not. E2B's timeout is also a countdown: running commands and requests to the sandbox URL do not reset it, and the default action is to kill the sandbox.

Vercel has no published idle timer at all, only a session timeout: 45 minutes on Hobby and 24 hours on Pro. A long-idle sandbox is not stopped for being idle; it is stopped when the session limit arrives.

Sleep can be automatic and invisible

Sprites pauses after about 30 seconds without activity, then stops the VM and drops memory after a longer idle period that is not published. Blaxel's docs say standby after 15 minutes of idle connection; its pricing page says scale-to-zero after about five seconds. Morph's devboxes sleep after inactivity, and Runtime pauses after five minutes by default.

The wake path matters as much as the timer. Sprites wakes on a request to its URL, Runtime on the next command or request, InstaBox on a public-port visit, and Agent 37 on any request to any URL. Boat cannot wake on a URL at all, because a stop destroyed the machine.

The idle hour is where the bill lives

An idle hour can cost full compute, memory only, storage only, or nothing. boxd's standby bills RAM. Runtime bills memory and disk blocks. Agent 37, InstaBox and Lizard bill storage only. Boat charges nothing while stopped and keeps the disk for 14 days.

That is why two providers with similar hourly rates differ by a factor of ten on an always-on box. A 4 vCPU / 8 GiB machine costs about $10.60 a month at Agent 37, $26.28 at Boat, $28.84 at InstaBox and about $222 at boxd once memory is billed on a 4 vCPU machine.

One worked case

The same job at every provider, from the documented defaults

Mid-refactor, 20 minutes of silence

Your agent is 40 minutes into a refactor on a 4 vCPU / 8 GB box. It has written six files, a test run is queued in memory, and the model call stalls. Nothing touches the machine for 20 minutes.

  1. 00:00

    The last command returns. The agent waits on the model, so no request, command or CPU use reaches the sandbox.

  2. 00:20

    Still silent. Whether the machine is running, frozen or already gone depends entirely on the provider's default, not on anything you set.

  3. 01:00

    The model answers and the agent sends its next command.

At 00:20 the provider keeps the machine, freezes it, or has ended it. At 01:00 the bill and the work diverge: a frozen machine resumes in place, a stopped one has lost the queued process, and a killed one returns an error.

What each provider does

Agent 37
Still running and still billing: nothing pauses it unless you opt in to auto-sleep.
Blaxel
Asleep after 15 minutes of idle connection, or about five seconds if the pricing page is right; the next request resumes it.
Boat
Awake at 00:20, because the clock counts from creation, not activity; it stops at the one-hour mark whether or not the work is finished.
boxd
Awake: hibernation needs four hours without TCP or UDP traffic, and a stalled model call makes none.
Cloudflare Sandbox
Still running at 20 minutes if the Durable Object stays active; if it goes inactive the instance stops shortly after, unless a timeout of up to 6 hours was set.
Daytona
Stops at 15 minutes even mid-build, because only external calls reset the timer; the VM class would pause at 60 minutes instead.
E2B
Killed at the five-minute timeout, losing the queued test run; a pause would have kept memory, but pausing is opt-in.
InstaBox
Still running at 00:20, paused at 00:30, and woken by the command at 01:00 with the process intact.
Lizard
Already gone: there is no idle timer, and a sandbox made through the SDK expires five minutes after creation.
Modal
Terminated at the five-minute default lifetime before the model answers, unless the timeout was raised to at most 24 hours.
Morph
Scaled to zero after an unpublished period of inactivity, with memory preserved; the 01:00 request wakes it.
Runtime
Paused at five minutes, woken by the 01:00 command in about a second, process and memory intact.
Sandboxer
Paused at 15 minutes on the lowest plan and later on higher ones; the one-hour auto-stop then stops it with memory and disk kept.
Sprites
Paused after about 30 seconds; the 01:00 command resumes warm memory in 100–500 ms.
Vercel Sandbox
Stopped at the five-minute session timeout; the next command starts a new session from the saved filesystem, not from memory.
Tensorlake
Ten minutes without proxied traffic suspends a named sandbox and deletes an ephemeral one; the plan caps the window at 2 hours, 24 hours or not at all.

What to watch for

The details that decide the answer in practice

  1. 01

    Whether the deadline counts from creation, from last activity, or from network traffic.

  2. 02

    What counts as activity: data flow, an open connection, a terminal, or a running command.

  3. 03

    Whether a sleeping machine wakes on a request, and how long the wake takes.

  4. 04

    Whether an idle hour bills compute, memory, storage, or nothing.

  5. 05

    Whether the timer can be turned off or only raised.

Compare all 16

Docs read 28 October 2026

An always-available agent depends on three separate settings: a lifetime deadline, an idle timer, and a wake path. Providers bundle them differently, and the difference is most of your bill.
ProviderIdle or lifetime limitDoes it?What that means
Agent 37No capsleep offYesNo lifetime cap, and auto-sleep is off by default, so a box stays up and bills compute by the minute until you stop or delete it. Any request to any URL wakes a sleeping instance.Agent 37 docs: Auto-sleep — idle timeout, checkpointing and wake behaviour ↗
Agent 37's own wordsdocs-confirmed
“Instances default to auto_sleep: false and never sleep on their own unless you opt them in.”
Agent 37docs-confirmed
Blaxel15 min idle (docs)5 s (pricing)PartlyStandby after 15 minutes of idle WebSocket or TCP activity according to the docs, or about 5 seconds according to the pricing page. Resume from standby is claimed under 25 ms.Blaxel docs: Standby control ↗
Blaxel's own wordsdocs-confirmed
“if the WebSocket/TCP connection remains idle for 15 minutes with no activity, the sandbox will automatically transition to standby mode.”
Blaxeldocs-confirmed
Boat1 h from createPartlyNo idle detection, but a hard auto-stop counts from create or resume: one hour by default, 30 days maximum, and off is allowed. A stop destroys the machine, so a URL cannot wake it.Boat docs: Auto-stop and keep alive ↗
Boat's own wordsdocs-confirmed
“The default is 1 hour.”
Boatdocs-confirmed
boxd4 h without trafficYesRuntime is unlimited and auto-suspend is off by default. Auto-hibernate is on by default after four hours without TCP/UDP traffic in either direction, so outbound polling keeps a box awake but a local compile does not.boxd docs: Suspend, resume, and hibernate (auto-hibernate after 4 h) ↗
boxd's own wordsdocs-confirmed
“On by default, set to 4 hours. After 4 hours without TCP/UDP traffic in either direction, boxd hibernates the machine”
boxddocs-confirmed
Cloudflare SandboxNo default6 h maxPartlyNo default inactivity timeout in Sandboxes 1.0, a 6-hour maximum, and the value is lost on a Durable Object restart. Code inside does not count as activity. The 10-minute default belongs to the legacy 0.x SDK.Cloudflare Sandbox docs: Sandbox lifetime: what keeps an instance running ↗
Cloudflare Sandbox's own wordsdocs-confirmed
“After the Durable Object becomes inactive, the instance keeps running for the time set with setInactivityTimeout(), up to 6 hours.”
Cloudflare Sandboxdocs-confirmed
Daytona15 min container60 min VMPartlyContainer and GPU auto-stop after 15 idle minutes by default; VM classes auto-pause after 60. Only lifecycle calls, preview requests, SSH and Toolbox calls reset it. An optional TTL destroys in any state; a stopped container archives after 7 days.Daytona docs: Auto-stop sandboxes (default 15 minutes) ↗
Daytona's own wordsdocs-confirmed
“if not set, the default interval of 15 minutes is used”
Daytonadocs-confirmed
E2B5 min, then killedPartlyA timeout defaults to five minutes and kills the sandbox; pausing instead is opt-in. Commands and URL requests do not reset it. Continuous runtime is capped at one hour on Hobby and 24 hours on Pro.E2B docs: How long does a sandbox live? (timeout, pause, resume) ↗
E2B's own wordsdocs-confirmed
“Every sandbox has a timeout, and it defaults to 5 minutes if you do not set one.”
E2Bdocs-confirmed
InstaBox30 min idlePartlyPaid machines have no lifetime timeout, but idle auto-pause defaults to 30 minutes; paid plans can choose 5–30 minutes or off. Nothing deletes a paused or stopped machine: there is no forced TTL.InstaBox docs: Machines — auto-pause and max-run ↗
InstaBox's own wordsdocs-confirmed
“A new machine pauses once it has been idle for 30 minutes.”
InstaBoxdocs-confirmed
Lizard5 min lifetime (SDK)PartlyThere is no idle timer at all, but every sandbox has a hard lifetime deadline: five minutes by default from the SDK and CLI, and never by default from the dashboard and raw API.Lizard docs: Limits — lifetime is a deadline, not an idle timer ↗
Lizard's own wordsdocs-confirmed
“Five minutes by default from the SDK and CLI; no expiration by default from the raw API and dashboard”
Lizarddocs-confirmed
Modal5 min lifetimeno idlePartlyDefault maximum lifetime 5 minutes, up to 24 hours. Idle timeout is off by default and terminates rather than pauses. There is no lifetime-free option; longer work needs snapshots.Modal docs: Sandboxes: idle timeouts ↗
Modal's own wordsdocs-confirmed
“Sandboxes have a default maximum lifetime of 5 minutes.”
Modaldocs-confirmed
MorphNot publishedPartlyDevboxes scale to zero after inactivity, preserving memory and application state, and wake on an HTTP or SSH request. Instance TTL is a duration after which an instance stops or pauses.Morph docs: Auto-Scale-to-Zero Agent Workspaces ↗
Morph's own wordsdocs-confirmed
“Devboxes can branch to hundreds of parallel replicas or scale to zero after a period of inactivity, preserving all application and memory state.”
Morphdocs-confirmed
Runtime300 s idleYesNo clock unless you set one, and persistent: true disables the idle pause. Otherwise it pauses after five idle minutes and wakes on the next request, usually within a second.Runtime docs: Idle time is paused time (pricing guide) ↗
Runtime's own wordspricing-page
“A sandbox pauses itself after 300 seconds with nothing happening in it: no request, no command still running, no open connection, no network traffic and no CPU use.”
Runtimepricing-page
Sandboxer1 s – 30 days, or offPartlyNo maximum lifetime, but a hard auto-stop defaults to one hour and idle pause to 15–120 minutes by plan. An always-on box needs ttlSeconds: null and idleStopMinutes: 0.Sandboxer docs: Long-running tasks (idle auto-pause, auto-stop) ↗
Sandboxer's own wordsdocs-confirmed
“ttlSeconds | 1 s – 30 days, or null”
Sandboxerdocs-confirmed
Sprites30 s warm pauseYesA warm pause after about 30 seconds idle, a cold stop after a longer unpublished period, and wake on request. Four things reset the timer, including an open TCP connection.Sprites docs: Working with Sprites — Idle detection ↗
Sprites's own wordsdocs-confirmed
“When the activity stops, a short idle window passes (about 30 seconds today) and the Sprite pauses.”
Spritesdocs-confirmed
Vercel Sandbox5 min sessionPartlyA session timeout of five minutes by default, with a maximum session of 45 minutes on Hobby and 24 hours on Pro. No idle-activity timer is published.Vercel Sandbox docs: Sandbox pricing: runtime limits ↗
Vercel Sandbox's own wordsdocs-confirmed
“Sandboxes automatically stop after a timeout. The default timeout is 5 minutes”
Vercel Sandboxdocs-confirmed
Tensorlake10 min idle2 h to unlimitedYestimeout_secs is an idle threshold measured on proxy traffic — SSH, a PTY WebSocket, an exposed port, an SDK call — not a wall-clock lifetime. Default 600 s; maximum 2 h on Free, 24 h with Usage Credits, unlimited on Pro. Setting 0 requests the plan maximum.Tensorlake docs: Lifecycle: Timeout — the idle threshold and the plan maximum ↗
Tensorlake's own wordsdocs-confirmed
“If timeout_secs is not set, it goes with the default value which is 600 sec (10 minutes).”
Tensorlakedocs-confirmed

The specific capabilities

Each one checked for every provider, with the catch where a version falls short. All capabilities

Idle and waking: capabilities by provider
CapabilityAgent 37BlaxelBoatboxdCloudflare SandboxDaytonaE2BInstaBoxLizardModalMorphRuntimeSandboxerSpritesTensorlakeVercel Sandbox
Can stay on indefinitelyAgent 37: Yes. Auto-sleep is off unless you turn it on.Blaxel: With a catch. 7 or 30 days on low tiers. On the two lowest tiers a sandbox is deleted after 7 or 30 days; only higher tiers allow it to wait indefinitely.Boat: Yesboxd: Yes. 4 h default, or neverCloudflare Sandbox: With a catch. 6 h max. An instance stops when nothing has used it for up to 6 hours, the setting is lost on a restart, and Cloudflare promises no set running time.Daytona: YesE2B: With a catch. 1 h Hobby, 24 h Pro. A sandbox cannot run longer than an hour on the free plan or 24 hours on Pro, whether or not it is busy.InstaBox: With a catch. Paid plans only. Only paid plans can switch off the idle pause; on the free plan a machine always pauses after 30 idle minutes, though nothing is deleted and it wakes when used.Lizard: YesModal: With a catch. 24 h maximum. No sandbox can run longer than 24 hours, however busy it is.Morph: YesRuntime: YesSandboxer: YesSprites: With a catch. 30 s idle. A Sprite pauses about 30 seconds after its last activity; a task can hold it awake, but you cannot switch the pause off.Tensorlake: With a catch. 2 h free, 24 h credits. A free sandbox stops after 2 idle hours and a credit-plan sandbox after 24; only Pro and Enterprise are unlimited.Vercel Sandbox: With a catch. 45 min Hobby, 24 h Pro. A single session cannot last beyond 45 minutes on the free plan or 24 hours on paid plans.
Choose the idle timeoutAgent 37: Yes. 5 min to 1 day, or offBlaxel: NoBoat: With a catch. 1 h from start. The clock counts from when the machine started, not from when it was last used, so a busy machine is stopped too.boxd: Yes. Any seconds, or offCloudflare Sandbox: With a catch. Up to 6 h. You can set the wait up to 6 hours, but the setting is lost when the object restarts and there is no never.Daytona: Yes. Minutes, or 0E2B: With a catch. 5 min, max 24 h. The clock counts down from creation and commands do not reset it, and the default action is to kill rather than pause.InstaBox: With a catch. 5–30 min or off. Only paid plans can choose; the free plan is fixed at 30 minutes and cannot turn it off.Lizard: NoModal: With a catch. You can set an idle timeout, but reaching it ends the machine rather than pausing it.Morph: With a catch. You can switch the idle pause off, but the docs never say how long it waits or what values you can set.Runtime: Yes. 300 s, or neverSandboxer: Yes. 15–120 min, or 0Sprites: NoTensorlake: YesVercel Sandbox: No
Wakes on a requestAgent 37: YesBlaxel: YesBoat: Noboxd: YesCloudflare Sandbox: With a catch. A request starts a fresh machine, not the one that stopped; files come back only from a snapshot your code saved.Daytona: NoE2B: YesInstaBox: With a catch. Only a machine the platform paused for being idle wakes on a request; one you paused yourself has to be resumed.Lizard: NoModal: NoMorph: YesRuntime: YesSandboxer: YesSprites: YesTensorlake: YesVercel Sandbox: Yes
Scheduled runsAgent 37: YesBlaxel: Yes. 100 per sandboxBoat: Noboxd: With a catch. A schedule runs inside the machine, so it only fires while that machine is awake.Cloudflare Sandbox: YesDaytona: NoE2B: NoInstaBox: NoLizard: NoModal: YesMorph: NoRuntime: YesSandboxer: With a catch. A cron or timer runs inside the machine, so it never fires while the machine is stopped or paused.Sprites: NoTensorlake: NoVercel Sandbox: Yes

YesWith a catchNoNot publishedHover or select a mark to see the catch.

Questions to ask before you sign

Each one targets something the documentation does not answer

  1. When the timer fires, does the machine pause with memory, stop and keep the disk, or get deleted — and which of those does the provider call stop?
  2. Does the clock count from creation, from the last command, or from any network traffic, and does an open SSH session reset it?
  3. Can the idle timer be turned off, or only raised to a maximum — and what is that maximum?
  4. What does an idle hour cost in each state, and does a paused machine keep billing memory?
  5. After a pause, how long does the first request wait, and do open connections and running processes survive?

Common questions

Answered from the capability checks; each links to the provider-by-provider detail and its sources

Which sandbox providers offer “can stay on indefinitely”?
A machine can run for weeks without being stopped for idleness or a session limit. Fully: Agent 37, Boat, Daytona, Lizard, Morph, Runtime, Sandboxer and boxd. With a catch: Blaxel, Cloudflare Sandbox, E2B, InstaBox, Modal, Sprites, Tensorlake and Vercel Sandbox. See each provider's catch
Which sandbox providers offer “choose the idle timeout”?
You set how long an idle machine waits before it pauses or stops, including never. Fully: Agent 37, Daytona, Runtime, Sandboxer, Tensorlake and boxd. With a catch: Boat, Cloudflare Sandbox, E2B, InstaBox, Modal and Morph. Not at all: Blaxel, Lizard, Sprites and Vercel Sandbox. See each provider's catch
Which sandbox providers offer “wakes on a request”?
A paused machine starts again by itself when a web request or message arrives. Fully: Agent 37, Blaxel, E2B, Morph, Runtime, Sandboxer, Sprites, Tensorlake, Vercel Sandbox and boxd. With a catch: Cloudflare Sandbox and InstaBox. Not at all: Boat, Daytona, Lizard and Modal. See each provider's catch
Which sandbox providers offer “scheduled runs”?
Start a machine or a job on a schedule, like a cron job, without your own server. Fully: Agent 37, Blaxel, Cloudflare Sandbox, Modal, Runtime and Vercel Sandbox. With a catch: Sandboxer and boxd. Not at all: Boat, Daytona, E2B, InstaBox, Lizard, Morph, Sprites and Tensorlake. See each provider's catch

Part of Staying on. Next: put two or three providers side by side.