Functions
allSandboxMetrics()
SandboxMetrics snapshot for every running sandbox, keyed by sandbox name. See Metrics for a complete example.
Sandbox
Sandbox.builder()
Example
Example
.create() to boot it. Sandbox names must be non-empty and no longer than 128 UTF-8 bytes. See SandboxBuilder for all available options.
Parameters
namestringReturns
Sandbox.get()
Example
Example
Parameters
namestringReturns
Sandbox.list()
Example
Example
Sandbox.get(name) to get a live handle for lifecycle calls.
Returns
Sandbox.listWith()
Example
Example
list(), returned handles are read-only.
Parameters
configure(list: SandboxListBuilder) => SandboxListBuilderReturns
Sandbox.remove()
Example
Example
Parameters
namestringSandbox.start()
Example
Example
await using binding goes out of scope. A cloud handle does not own the service-managed VM, so stop or remove it explicitly.
Parameters
namestringReturns
Sandbox.startDetached()
Example
Example
Parameters
namestringReturns
Instance methods
A runningSandbox also exposes two read-only properties: name (string, the sandbox name) and ownsLifecycle (boolean). Local attached handles return true; local detached handles and all cloud handles return false, because the cloud worker owns the sandbox process.
Command execution (exec, execWith, execStream, execStreamWith, shell, shellStream) and foreground attachment (attach, attachWith, attachShell) live on the Execution page.
sandbox.config()
Example
Example
SandboxBuilder.build().
Returns
sandbox.detach()
Example
Example
Sandbox.get().
sandbox.fs()
Example
Example
Returns
sandbox.kill()
Example
Example
fsync’d may be lost, same durability semantics as a sudden power loss on a physical machine. Prefer stop() for graceful shutdown that gives the workload a chance to flush.
sandbox.killWithTimeout()
Example
Example
timeoutMs for stopped-state observation.
Parameters
timeoutMsnumbersandbox.logs()
Example
Example
exec.log. Backed by an on-disk JSON Lines file the runtime writes via the relay tap. Works on running and stopped sandboxes alike - there is no protocol traffic. The same method is available on SandboxHandle for callers that don’t want to start the sandbox first.
The default sources are "stdout", "stderr", and "output" (PTY-merged). Pass "system" to also include synthetic lifecycle markers and runtime/kernel diagnostic lines, or "all" for every source.
Parameters
optsLogReadOptions?tail, since, until, sources. Omit for the default user-program sources.Returns
sandbox.logStream()
Example
Example
exec.log as logs(), but yields entries lazily. Pass { follow: true } to keep the stream open past current EOF and pick up new entries as they are written; otherwise the stream drains the current contents and ends. Each yielded LogEntry carries an opaque cursor that can be passed back via LogStreamOptions.fromCursor to resume.
Parameters
follow and resume controls (since, fromCursor).Returns
sandbox.ping()
Example
Example
core.ping and waits for core.pong; it does not start stopped sandboxes and returns an error if the sandbox is not running or agentd cannot respond. After upgrading from a runtime that predates protocol generation 6, restart already-running sandboxes so the guest agent understands the message.
Returns
sandbox.touch()
Example
Example
core.touch, receives core.touched, and advances the guest activity sequence used by the runtime idle-timeout monitor. It does not start stopped sandboxes and it does not bypass maxDuration.
Returns
sandbox.modify()
Example
Example
"live", "next start", "requires restart", or "unsupported", and apply is all-or-nothing.
cpus and memory resize live within the maxCpus / maxMemory ceilings; raising a ceiling requires a restart. rootDiskSize changes are offline: managed and flat OCI root disks grow only, tmpfs root disks can change in either direction on the next boot, and user-supplied disk images are rejected. Env and workdir changes affect future execs only. On a stopped sandbox, changes are saved for the next boot.
Secret specs are keyed by stable secret name. Each SecretModifySpec selects at most one source (env, value, or store) and may also set placeholder and allowedHosts; omitting a source updates only the other supplied fields. Plans expose only safe references and metadata; raw secret values never appear in a plan. Removal is explicit through secretsRemove.
A live CPU or memory resize can take a moment to settle. The new limits are enforced immediately, and the returned plan’s resizeStatus reports when the sandbox has finished adjusting. See SandboxModificationPlan.
Parameters
optsModifyOptionspolicy and dryRun. Omitted fields are left unchanged.Returns
dryRun: true.sandbox.metrics()
Example
Example
Returns
sandbox.metricsStream()
Example
Example
MetricsStream supports both recv() and for await...of.
Parameters
intervalMsnumberReturns
sandbox.requestDrain()
Example
Example
exec calls are rejected. The sandbox transitions to stopped when all in-flight commands finish. Use waitUntilStopped() when the caller needs stopped-state observation. Useful for zero-downtime rotation of worker sandboxes.
sandbox.requestKill()
Example
Example
sandbox.requestStop()
Example
Example
sandbox.ssh()
Returns
sandbox.stop()
Example
Example
sandbox.stopWithTimeout()
Example
Example
0 force-kills immediately. Resolves successfully either way - it does not throw on timeout expiry.
Parameters
timeoutMsnumber0 skips the grace period.sandbox.waitUntilStopped()
Example
Example
Returns
sandbox.Symbol.asyncDispose
Example
Example
AsyncDisposable so the sandbox can be used with await using. When the binding goes out of scope, the sandbox is stopped (best-effort) - but only if ownsLifecycle is true.
SandboxBuilder
Fluent builder for configuring a sandbox before creation. Obtained viaSandbox.builder(name). Every setter returns the same builder so calls chain. Examples are shown on the methods where usage is non-obvious.
sandboxBuilder.build()
SandboxConfig without booting the sandbox. Validates the configuration and consumes the builder. For booting, use create instead - it builds internally.
Returns
sandboxBuilder.cpus()
Parameters
nnumbersandboxBuilder.maxCpus()
Parameters
nnumbersandboxBuilder.create()
Example
Example
await using binding goes out of scope. A cloud handle does not own the service-managed VM, so stop or remove it explicitly. Call detached(true) first for local background mode.
Returns
sandboxBuilder.createWithPullProgress()
Example
Example
PullProgressCreate that yields PullProgress events as the image is resolved, downloaded, and materialized; call awaitSandbox() after iteration to obtain the live sandbox.
Returns
sandboxBuilder.detached()
true. A detached sandbox survives after your process exits and does not auto-stop on await using scope exit.
Parameters
enabledbooleansandboxBuilder.disableMetricsSample()
sandboxBuilder.disableNetwork()
sandboxBuilder.entrypoint()
sandbox.execDefault combines it with the effective CMD. Literal sandbox.exec, sandbox.attach, and sandbox.shell calls ignore it.
Parameters
cmdstring[]sandboxBuilder.env()
execWith) are merged on top.
Parameters
keystringvaluestringsandboxBuilder.envs()
Parameters
varsRecord<string, string>sandboxBuilder.ephemeral()
true, the sandbox and all its persisted state are removed automatically once it stops, rather than left on disk for restart.
Parameters
enabledbooleansandboxBuilder.fromSnapshot()
Parameters
pathOrNamestringsandboxBuilder.hostname()
Parameters
namestringsandboxBuilder.libkrunfwPath()
setRuntimeLibkrunfwPath(path) and returns the builder; it is not a per-sandbox setting.
Parameters
pathstringsandboxBuilder.idleTimeout()
Parameters
secsnumbersandboxBuilder.image()
"alpine"), local directory paths, or disk image paths. The format is auto-detected. Required unless fromSnapshot is used.
Parameters
srcstringsandboxBuilder.imageWith()
Example
Example
Parameters
configure(b: ImageBuilder) => ImageBuildersandboxBuilder.cmd()
create().
sandboxBuilder.init()
Example
Example
cmd after agentd finishes its boot-time setup. cmd is either an absolute path inside the guest rootfs or the literal "auto", which honors a known image ENTRYPOINT init then falls back to probing common init paths. See Custom init system. For init binaries that need extra env, use initWith.
Parameters
cmdstring“auto”.argsstring[]?sandboxBuilder.initWith()
Example
Example
init, but with a closure-builder for argv and env vars. The builder exposes .arg, .args, .env, and .envs. Calling init or initWith more than once overwrites.
Parameters
cmdstringconfigure(b: InitOptionsBuilder) => InitOptionsBuildersandboxBuilder.label()
Sandbox.listWith().
Parameters
keystringvaluestringsandboxBuilder.labels()
Parameters
labelsRecord<string, string>sandboxBuilder.logLevel()
Parameters
levelLogLevelsandboxBuilder.maxDuration()
Parameters
secsnumbersandboxBuilder.memory()
Parameters
mibnumbersandboxBuilder.maxMemory()
Parameters
mibnumbersandboxBuilder.thp()
"madvise".
Parameters
policy”always” | “madvise” | “never”sandboxBuilder.metricsSampleIntervalMs()
Parameters
msnumbersandboxBuilder.network()
Parameters
sandboxBuilder.patch()
Example
Example
PatchBuilder for the operations.
Parameters
configure(b: PatchBuilder) => PatchBuildersandboxBuilder.port()
127.0.0.1. For an explicit bind address, use portBind.
Parameters
hostnumberguestnumbersandboxBuilder.portBind()
"0.0.0.0".
Parameters
bindstringhostnumberguestnumbersandboxBuilder.portUdp()
127.0.0.1.
Parameters
hostnumberguestnumbersandboxBuilder.portUdpBind()
Parameters
bindstringhostnumberguestnumbersandboxBuilder.pullPolicy()
Parameters
policyPullPolicysandboxBuilder.quietLogs()
sandboxBuilder.registry()
Example
Example
Parameters
sandboxBuilder.replace()
sandboxBuilder.replaceWithTimeout()
replace() with a custom SIGTERM timeout in milliseconds. 0 skips SIGTERM and force-kills immediately. Implies replace().
Parameters
timeoutMsnumbersandboxBuilder.rlimit()
rlimitRange.
Parameters
resourcestring“nofile”.limitnumbersandboxBuilder.rlimitRange()
Parameters
resourcestring“nofile”.softnumberhardnumbersandboxBuilder.script()
/.msb/scripts/ inside the guest. Scripts are added to PATH and can be called by name via exec() or shell().
Parameters
namestringcontentstringsandboxBuilder.scripts()
Parameters
scriptsRecord<string, string>sandboxBuilder.security()
Parameters
profile”default” | “restricted”sandboxBuilder.secret()
Parameters
configure(b: SecretBuilder) => SecretBuildersandboxBuilder.secretEnv()
$MSB_<env_var> placeholder usable in headers.
Parameters
envVarstring= or NUL).valuestringallowedHoststringsandboxBuilder.shell()
sandbox.shell().
Parameters
shellstring“/bin/bash”).sandboxBuilder.user()
Parameters
userstringsandboxBuilder.volume()
Parameters
gueststringconfigure(b: MountBuilder) => MountBuildersandboxBuilder.workdir()
Parameters
pathstringPatchBuilder
Builder for pre-boot root filesystem patches.patch.append()
content to an existing file at path. If the file lives in a lower image layer, it’s copied up first.
Parameters
pathstringcontentstringpatch.copyDir()
src into the guest rootfs at dst.
Parameters
srcstringdststringopts.replacebooleantrue, overwrite an existing path at dst.patch.copyFile()
src into the guest rootfs at dst.
Parameters
srcstringdststringopts.modenumber0o644. Omit to keep the source mode.opts.replacebooleantrue, overwrite an existing path at dst.patch.file()
path.
Parameters
pathstringcontentBufferopts.modenumber0o644.opts.replacebooleantrue, overwrite an existing path.patch.mkdir()
path. Idempotent: a no-op if the directory already exists.
Parameters
pathstringopts.modenumber0o755.patch.remove()
path. Idempotent: a no-op if the path doesn’t exist.
Parameters
pathstringpatch.symlink()
link pointing to target.
Parameters
targetstringlinkstringopts.replacebooleantrue, overwrite an existing path at link.patch.text()
path.
Parameters
pathstringcontentstringopts.modenumber0o644.opts.replacebooleantrue, overwrite an existing path.LogEntry
Returned by logs() · logStream()
A class wrapping one captured log entry fromexec.log. Bytes are exposed via data; use text() for a UTF-8-lossy decode.
entry.timestamp
Date
Wall-clock capture time on the host
entry.source
LogSource
Where the chunk came from
entry.sessionId
number \| null
Relay-monotonic session id; null for "system" entries
entry.data
Uint8Array
The captured chunk’s bytes (UTF-8 lossy decoded by default)
entry.cursor
string
Opaque resume token; pass to LogStreamOptions.fromCursor to resume
entry.text()
data (lossy - invalid bytes are replaced)
Returns
string
LogStream
Returned by logStream()
An async iterable ofLogEntry values. Drain it with for await...of or call recv() directly. Implements AsyncDisposable, so it works with await using.
logStream.recv()
null when the stream ends.
Returns
Promise<LogEntry \| null>
stream.Symbol.asyncIterator
for await...of
Returns
AsyncIterator<LogEntry>
stream.Symbol.asyncDispose
await using
Returns
Promise<void>
MetricsStream
Returned by metricsStream()
Async stream for receiving periodic metrics snapshots. ImplementsAsyncDisposable, so it works with await using.
metricsStream.recv()
null when the stream ends.
Returns
Promise<SandboxMetrics \| null>
stream.Symbol.asyncIterator
for await...of
Returns
AsyncIterator<SandboxMetrics>
stream.Symbol.asyncDispose
await using
Returns
Promise<void>
PullProgressCreate
Returned by createWithPullProgress()
Async iterable creation handle returned bycreateWithPullProgress(). Yields PullProgress events as the image is resolved, downloaded, and materialized. Call awaitSandbox() after iteration to obtain the live sandbox.
pull.progress
NapiPullProgressStream
The underlying progress event stream
pull.awaitSandbox()
Returns
Promise<Sandbox>
pull.Symbol.asyncIterator
for await...of
Returns
AsyncIterator<PullProgress>
SandboxListBuilder
Fluent configuration passed toSandbox.listWith(). Keep the labels and limit unchanged when continuing with a cursor.
list.limit()
list.cursor()
nextCursor
list.label()
list.labels()
SandboxHandle
Returned by Sandbox.get() · Sandbox.list() · Sandbox.listWith()
A metadata and lifecycle handle for an existing sandbox.handle.name
string
Sandbox name, up to 128 UTF-8 bytes
handle.status
SandboxStatus
Current status
handle.configJson
string
Raw JSON configuration
handle.createdAt
Date \| null
Creation timestamp
handle.updatedAt
Date \| null
Last update timestamp
handle.config()
Returns
SandboxConfig
handle.refresh()
Returns
Promise<SandboxHandle>
handle.ping()
Returns
Promise<SandboxPingResult>
handle.touch()
Returns
Promise<SandboxTouchResult>
handle.modify()
modify(). Does not start stopped sandboxes; changes persist for the next boot
Returns
Promise<SandboxModificationPlan>
handle.metrics()
Returns
Promise<SandboxMetrics>
handle.logs()
exec.log (works without starting)
Returns
Promise<LogEntry[]>
handle.logStream()
exec.log, with optional follow
Returns
Promise<LogStream>
handle.start()
Returns
Promise<Sandbox>
handle.startDetached()
Returns
Promise<Sandbox>
handle.connect()
Returns
Promise<Sandbox>
handle.connectWithTimeout()
connect() with an explicit timeout in milliseconds
Returns
Promise<Sandbox>
handle.stop()
Returns
Promise<void>
handle.stopWithTimeout()
stop() with an explicit timeout in milliseconds; 0 force-kills immediately
Returns
Promise<void>
handle.requestStop()
Returns
Promise<void>
handle.kill()
Returns
Promise<void>
handle.killWithTimeout()
kill() with an explicit observation timeout
Returns
Promise<void>
handle.requestKill()
Returns
Promise<void>
handle.requestDrain()
Returns
Promise<void>
handle.waitUntilStopped()
Returns
Promise<SandboxStopResult>
handle.remove()
Returns
Promise<void>
handle.snapshot()
Returns
Promise<Snapshot>
RegistryConfigBuilder
Fluent builder for OCI registry connection settings. Obtain it throughSandboxBuilder.registry(); the callback’s returned builder is stored in the sandbox configuration.
registry.auth()
Returns
this
registry.insecure()
Returns
this
registry.caCerts()
Returns
this
registry.caCertsPath()
Returns
this
registry.build()
Returns
RegistryConfig
Types
LogLevel
Used by logLevel()
Sandbox process log verbosity. String literal type.LogReadOptions
Used by logs()
Filters passed tologs(). All fields optional. Omit the argument entirely for the default sources (stdout + stderr + output).
LogStreamOptions
Used by logStream()
Options passed tologStream(). All fields optional. since and fromCursor are mutually exclusive - passing both rejects at the boundary.
LogSource
Used by LogEntry.source · LogReadOptions.sources
Tag indicating where a captured log entry came from. String literal type:ModifyOptions
Used by modify()
A requested sandbox modification. Omitted fields are left unchanged.SecretModifySpec
Used by modify()
Desired state for one secret.env, value, and store are mutually exclusive sources. Omit all three to update only the placeholder or allowed hosts.
PullPolicy
Used by pullPolicy()
Controls when the SDK fetches an OCI image from the registry. String literal type.PullProgress
Yielded by PullProgressCreate
Image pull and materialize progress event emitted byPullProgressCreate. A discriminated union. Narrow on kind to access variant-specific fields.
totalDownloadBytes and totalBytes on the "resolved" / "layerDownloadProgress" variants may be absent if the manifest omits sizes.
RegistryAuth
Authentication used when pulling images from an OCI registry.RegistryConfig
Built by RegistryConfigBuilder · stored in SandboxConfig.registry
OCI registry connection settings produced byRegistryConfigBuilder.build().
SandboxConfig
Returned by config() · build()
Configuration object produced bybuild() and returned by config(). You generally should not construct this by hand; use the builder.
SandboxPage
One stable, newest-first page returned bySandbox.list() or Sandbox.listWith().
SandboxModificationPlan
Returned by modify()
Dry-run or apply plan for a sandbox modification. Values never appear in a plan: secret entries carry only guest-visible references.PlannedChange
Used by SandboxModificationPlan.changes
Discriminated union onkind. Both variants carry field, change, disposition, and reason.
ConfigPlannedChange
Variant of PlannedChange
Ordinary configuration change in a modification plan.SecretPlannedChange
Variant of PlannedChange
Secret change in a modification plan. Values are omitted by construction;beforeRef and afterRef are guest-visible references.
ResourceResizeStatus reports runtime convergence for a live resize; enforcement applies immediately, the guest converges asynchronously:
SandboxPingResult
Returned by ping()
Agent reachability result.SandboxTouchResult
Returned by touch()
Explicit idle-refresh result.SandboxMetrics
Returned by metrics() · yielded by MetricsStream
Point-in-time resource usage snapshot.SandboxStopResult
Returned by waitUntilStopped()
Observed terminal sandbox state returned bywaitUntilStopped().
SandboxStatus
Used by SandboxHandle.status · SandboxStopResult.status
Current lifecycle state of a sandbox. String literal type.