Skip to main content
A recipe defines how to build a custom VM image for your agents. It pairs a base image with a provisioning script that installs your toolchain — languages, package managers, SDKs, and build tools. When you run murmur bake, the platform creates a scratch VM from the base image, runs your provisioning script, and snapshots the result as a new image. Agents boot from this image, so everything your script installs is available immediately — no install step at spawn time.

Base images

Every recipe starts from a platform base image that includes Debian 12, Git, Node.js, Claude Code, Codex CLI, and the gh CLI. Your provisioning script adds everything else.

Provisioning script

The script runs as root on the scratch VM during the bake. It installs your toolchain and exits. Anything you install ends up in the final image.
#!/bin/bash
set -e

# Install Go
wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz
rm go1.24.0.linux-amd64.tar.gz

# Install Docker
curl -fsSL https://get.docker.com | sh

# Verify
go version
docker --version

Secret allowlist

If your provisioning script needs credentials — for example, to install packages from a private registry — list the secret names in secret_allowlist. Only listed secrets are available during the bake.

Baking

murmur bake my-recipe default my-placement
This triggers a bake workflow that creates the image. The resulting image is bound to the placement — a GCE image lives in the placement’s GCP project, an AMI lives in the placement’s AWS account. See the custom images guide for a full walkthrough.
TypePage
Referencerecipe
Referencemurmur bake
GuideCustom images
ConceptImages
ConceptPlacements