Cloud snapshots
What a cloud snapshot includes and how to customize it
A cloud snapshot is the prebuilt environment that every new cloud workspace starts from. Conductor creates it by cloning your repository onto a cloud machine and running an initialization script, then saves the result. New workspaces fork the snapshot instead of installing everything from scratch, so they are ready in seconds.
Manage snapshots in Settings → Cloud → Snapshots.
What a snapshot includes
When Conductor builds a snapshot, it saves:
- Your repository: a clone of the GitHub repository. When you create a workspace, Conductor refreshes the checkout so you start from the latest commit, not the commit from build time.
- Everything the initialization script produced: installed dependencies, downloaded browsers, system packages, generated files.
- Environment variables from your settings: the same
custom variables
that cloud workspaces receive, including values from
.conductor/settings.local.tomland the app's settings. - Conductor's tools: the agents (
claude,codex) plusgh,rg, andtmux, kept up to date by Conductor automatically.
Your setup script is not part of the snapshot. It runs each time Conductor creates a workspace, after the snapshot is forked.
What the base machine provides
Snapshots build on Vercel Sandbox, which runs Amazon Linux 2023 with common developer tools preinstalled:
- Node.js with
npmandpnpm - Python 3 with
pipanduv git,tar,unzip,openssl, and other base utilities
The machine has sudo access, so the initialization script can install
anything else with dnf, the Amazon Linux package manager.
Customize the snapshot
The initialization script is where you shape the environment. It runs once per snapshot build, in the root of your repository, with the same Conductor variables as your setup script. The default script installs dependencies when it finds a pnpm lockfile:
if [ -f pnpm-lock.yaml ]; then
pnpm i --frozen-lockfile --prefer-offline
fiTo customize it:
- Go to
Settings → Cloud → Snapshotsand select your snapshot. - Edit the initialization script.
- Click Save and build snapshot and wait for the build to finish.
Move work into the script when every workspace would otherwise repeat it:
# Project dependencies
pnpm i --frozen-lockfile --prefer-offline
# Python dependencies
uv sync
# Browsers for end-to-end tests
npx playwright install chromium
# System packages, via Amazon Linux's package manager
sudo dnf install -y postgresql16A slow initialization script is usually a good trade: it runs once per build, while its results are ready instantly in every new workspace.
Decide between the snapshot and the setup script
Both scripts can install dependencies. The difference is when they run:
| Script | Runs | Use it for |
|---|---|---|
| Initialization script | Once, when the snapshot builds | Slow, repeatable work: dependency installs, system packages, browser downloads. |
| Setup script | Every time a workspace is created | Per-workspace work: generated config, database seeds, anything that depends on the branch or commit. |
Because dependencies in the snapshot age between builds, keep a fast install
step in your setup script too (for example, pnpm i --prefer-offline). It
finishes quickly when the snapshot is current and catches up when it is not.
When snapshots rebuild
- You edit the initialization script: saving triggers a build. Existing workspaces keep their environment; new workspaces use the new snapshot once the build succeeds.
- You click Build snapshot now: rebuild without changing the script, for example after merging a large dependency update.
- Conductor updates its tools: Conductor refreshes its own tools automatically. You do not need to rebuild for agent or CLI updates.
If a build fails, the snapshot page shows the failure and new workspaces keep using the last good snapshot. Fix the script and build again.