> ## Documentation Index
> Fetch the complete documentation index at: https://docs.murmur.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Recipes

> Image build definitions — a base image plus a provisioning script that bakes custom VM images preloaded with your language and tool stack.

A recipe defines how to build a custom VM [image](/concepts/images) for your [agents](/concepts/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`](/cli/bake), the platform creates a scratch VM from the base image, runs your provisioning script, and snapshots the result as a new [image](/concepts/images). [Agents](/concepts/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](/concepts/images).

```bash theme={null}
#!/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](/concepts/secrets) names in `secret_allowlist`. Only listed secrets are available during the bake.

## Baking

```bash theme={null}
murmur bake my-recipe default my-placement
```

This triggers a bake workflow that creates the [image](/concepts/images). The resulting image is bound to the [placement](/concepts/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](/guides/custom-images) for a full walkthrough.

***

| Type      | Page                                   |
| --------- | -------------------------------------- |
| Reference | [recipe](/catalog/recipe)              |
| Reference | [`murmur bake`](/cli/bake)             |
| Guide     | [Custom images](/guides/custom-images) |
| Concept   | [Images](/concepts/images)             |
| Concept   | [Placements](/concepts/placement)      |
