Skip to main content
A FissionPlane template is a pre-booted microVM snapshot derived from any OCI container image. When you create a sandbox from a template, the platform restores that snapshot rather than booting a fresh VM — so startup is measured in milliseconds instead of seconds. Templates are immutable artifacts: once built, a template never changes. You reference them by an artifact ID or by a mutable alias that you control.

What a template build does

Starting a build tells FissionPlane to pull the specified OCI image, boot it inside a Firecracker microVM, run each build step in order, and then snapshot the final state as an immutable artifact. The artifact captures everything: the root filesystem, in-memory state, and any pre-installed packages or configuration your build steps put in place. Future sandboxes created from this template skip all of that work and start from the finished snapshot.
Template builds run asynchronously on the FissionPlane installation. templates.build() returns a build handle immediately — the actual build work happens on the platform. Call build.wait() to block until the build finishes, or stream logs to follow progress in real time.

Starting a build

Pass the OCI image, an optional alias, and an array of build steps to client.templates.build().

Build steps

The steps array contains objects with a command field. FissionPlane runs each command inside the microVM in the order you list them, exactly once, during the build. Think of build steps as a lightweight Dockerfile RUN equivalent — use them to install packages, pull model weights, compile assets, or set up any state that every sandbox should start with.

Waiting for a build

build.wait() blocks until the build succeeds or fails. Pass timeoutMs (TypeScript/Rust) or timeout in seconds (Python) to cap how long you wait.

Streaming build logs

build.logs(offset) fetches a page of log lines starting at the given byte offset. Pass the returned nextOffset to the next call to paginate through the entire log.

Reconnecting to a build

If your process restarts while a build is in progress, use client.templates.getBuild() / client.templates.get_build() / Templates::get_build() to retrieve the build handle by ID and continue polling or streaming logs.

Using a template to create sandboxes

Pass the alias or the artifact ID to sandboxes.create(). The sandbox will start from the pre-booted snapshot.

Template aliases

An alias is a mutable, human-readable name (such as node-tools or python-3.12-ml) that resolves to an immutable artifact ID. When you build a new version of a template and assign the same alias, every future sandboxes.create() call using that alias picks up the new artifact automatically — no code changes required.
In production, pin sandboxes to a specific artifact ID so that deployments are reproducible and a new build cannot silently change your runtime environment. Use aliases freely in development and CI, where always-latest behavior is convenient.

List and delete templates

client.templates.list() returns all templates visible to your API key. client.templates.delete(templateId) removes a template artifact permanently.