Spawner
GitHub Install

Spawner and the alternatives for preview environments

Spawner does one job: a preview of every branch, on one server of yours, for a team and its coding agents. Here is where it sits next to the other ways to get preview environments, also called review apps or ephemeral environments.

Where Spawner fits

Choose Spawner when

  • You want a preview of every branch, and of work nobody has pushed yet, for your team and its coding agents.
  • Your app already runs with Docker Compose: its database, API and workers come up together, as they are.
  • You would rather look after one Linux server than a Kubernetes cluster or a service billed per seat.
  • Previews must stay private: behind your team’s login, with share links for guests.
  • You want a fixed cost: many environments on one server, asleep when nobody uses them.

Choose something else for

Side by side

One line per family of tools. Each tool’s own answers, and where they come from, are in the details below.

Tools Runs onRuns your Compose fileA preview per pull requestA preview of unpushed workCost
Spawner One Linux server of yours Yes, after a policy check From CI Yes Free, plus the server
Self-hosted platforms Coolify, Dokploy Your servers Yes (Dokploy: not in previews) Built in No Free, plus the servers
A machine per preview Preevy, PullPreview A cloud machine per preview Yes From CI Yes, from their CLI The machines (PullPreview: a paid license for companies)
Front-end hosting Vercel, Netlify Their platform No Built in Yes, from their CLI Free tier, then paid
Application hosting Render, Railway, Heroku Their platform No Built in Railway only Paid, by usage
Kubernetes platforms Okteto, Signadot, Bunnyshell, Shipyard, Qovery A Kubernetes cluster Okteto, Shipyard; Bunnyshell imports it Built in or from CI Okteto, Signadot Paid; some free tiers

What Spawner does not do

  • Production, scaling or several servers. One installation runs on one Linux server, dedicated to previews, with Docker Compose.
  • Environments for pull requests on its own. Nothing watches the git host yet: a CI job calls spawner up and spawner down (previews for pull requests).
  • Private image registries. Images come from public registries or are built from the sources. Repositories live on any git host, over SSH with a deploy key, or over HTTPS when they are public.
  • Single sign-on beyond GitHub login, or permissions per project. No OIDC or SAML; every member sees every project.
  • More isolation than containers give. Environments share the server’s kernel, and their outbound traffic is filtered only for the cloud’s metadata and the server’s own services (security).

The documentation keeps this list up to date, in concepts.

Tool by tool

Each family next to Spawner on eleven questions, from each tool’s documentation. “Not documented” means its documentation does not say. Uffizzi, which made previews from Compose files, has had no commit since August 2024.

Self-hosted platforms: Coolify and Dokploy

Open source platforms that run your applications on servers of your own, production included, with previews of pull requests among their features. A preview runs the code of the pull request on your server: Coolify’s documentation warns that “a pull request can run code on the deployment server”, and Dokploy’s says “we recommend not using preview deployments for public repositories”.

Criterion Spawner Coolify Dokploy
Where it runs One Linux server of yours, dedicated to previews Your servers, over SSH; Coolify Cloud can host the dashboard Your servers; Dokploy Cloud can host the dashboard
Needs Kubernetes No No No: Docker, and Docker Swarm across servers
Starts from a Docker Compose file Yes: .spawner/ holds a manifest and a Compose file Yes: Docker Compose is one of its build packs Yes for its Compose services, but previews are for its Applications only
A preview per pull request, built in From CI: a job runs spawner up, then spawner down Yes: through its GitHub App or a repository webhook Yes: GitHub pull requests, for Applications
A preview from a local worktree, uncommitted changes included Yes: spawner up sends the files git sees, uncommitted ones included No: from a pull request, or an image tag built by CI No preview; an Application can be deployed from an uploaded .zip
Previews protected by default Yes: team login, a token for agents, share links for guests No: basic authentication is an option, set with labels for Compose No: basic authentication can be set per application
Security policy on the compose file Yes: an allowlist, checked before Docker runs the file No: its docs ask you to review the compose file before deploying Not documented
Sleep and wake Yes: after 2 hours without activity; the team’s next visit wakes it Not documented Not documented
CLI and MCP server for coding agents Yes: a CLI with JSON output and stable exit codes, an MCP server with 9 tools Yes: a CLI and an MCP server Yes: a CLI and an MCP server
License Apache-2.0 Apache-2.0 Apache-2.0, except a proprietary directory
Price model Free; you pay for the server Free; Coolify Cloud from $5 a month Free; Dokploy Cloud from $4.50 a month per server
A machine per preview: Preevy and PullPreview

Tools that start a machine in your cloud account for each pull request, and run its Docker Compose file there. Each preview gets a machine of its own, kernel included, and costs one. Preevy’s URLs go through Livecycle’s hosted tunnel unless you run your own, and its last release dates from June 2025. PullPreview’s license allows noncommercial use and a 30-day commercial trial.

Criterion Spawner Preevy PullPreview
Where it runs One Linux server of yours, dedicated to previews A machine it creates in your AWS, Google Cloud or Azure account, or a pod in your Kubernetes cluster A machine per preview in your AWS Lightsail or Hetzner account
Needs Kubernetes No No: Kubernetes is one option No
Starts from a Docker Compose file Yes: .spawner/ holds a manifest and a Compose file Yes Yes, or a Helm chart
A preview per pull request, built in From CI: a job runs spawner up, then spawner down From CI: a job runs preevy up Yes: a GitHub Action, started by a label on the pull request
A preview from a local worktree, uncommitted changes included Yes: spawner up sends the files git sees, uncommitted ones included Yes: preevy up from your machine syncs the local files Its CLI deploys a local path, for debugging
Previews protected by default Yes: team login, a token for agents, share links for guests No: a service can be made private, behind a secret or a Livecycle login No: open to every address unless the cidrs input narrows it
Security policy on the compose file Yes: an allowlist, checked before Docker runs the file No: each preview has a machine of its own No: each preview has a machine of its own
Sleep and wake Yes: after 2 hours without activity; the team’s next visit wakes it Not documented Not documented; the ttl input deletes old previews
CLI and MCP server for coding agents Yes: a CLI with JSON output and stable exit codes, an MCP server with 9 tools A CLI; no MCP server documented A CLI; no MCP server documented
License Apache-2.0 Apache-2.0 Prosperity Public License: noncommercial use, and a 30-day commercial trial
Price model Free; you pay for the server Free; you pay for the machines €300 a year per organization for commercial use, plus the machines
Hosted front-end platforms: Vercel and Netlify

Hosting built for web front ends and functions, with a preview for each push or pull request. Nothing to operate. Neither runs a Docker Compose file: Vercel’s guide says of it “Vercel does not read any of it”.

Criterion Spawner Vercel Netlify
Where it runs One Linux server of yours, dedicated to previews Vercel’s platform Netlify’s platform
Needs Kubernetes No No No
Starts from a Docker Compose file Yes: .spawner/ holds a manifest and a Compose file No: translated by hand, app containers into services in vercel.json and databases from its Marketplace; containers (beta) run from a Dockerfile No
A preview per pull request, built in From CI: a job runs spawner up, then spawner down Yes: a preview for each push and pull request Yes: a Deploy Preview for each pull request
A preview from a local worktree, uncommitted changes included Yes: spawner up sends the files git sees, uncommitted ones included Yes: vercel deploy uploads the local directory Yes: netlify deploy uploads a local folder as a draft
Previews protected by default Yes: team login, a token for agents, share links for guests Yes: Vercel Authentication, on by default for new projects No: a password or private visibility, depending on the plan
Security policy on the compose file Yes: an allowlist, checked before Docker runs the file Not applicable Not applicable
Sleep and wake Yes: after 2 hours without activity; the team’s next visit wakes it Functions and containers scale down when idle Not applicable: static files and functions
CLI and MCP server for coding agents Yes: a CLI with JSON output and stable exit codes, an MCP server with 9 tools Yes: a CLI and an MCP server Yes: a CLI and an MCP server
License Apache-2.0 Proprietary Proprietary
Price model Free; you pay for the server Free Hobby plan for personal use; Pro per developer seat, plus usage Free plan; paid plans with monthly credits
Hosted application platforms: Render, Railway and Heroku

Hosting for whole applications, databases included, with an environment for each pull request. Railway “does not run docker-compose.yml files directly”, Render describes services in a Blueprint, and in February 2026 Heroku moved to “a sustaining engineering model focused on stability, security, reliability, and support”.

Criterion Spawner Render Railway Heroku
Where it runs One Linux server of yours, dedicated to previews Render’s platform Railway’s platform Heroku’s platform
Needs Kubernetes No No No No
Starts from a Docker Compose file Yes: .spawner/ holds a manifest and a Compose file No: services are described in a render.yaml Blueprint No: each Compose service is set up by hand as a Railway service No: review apps are described in app.json
A preview per pull request, built in From CI: a job runs spawner up, then spawner down Yes: preview environments, on a Pro workspace or higher Yes: PR environments, deleted when the pull request closes Yes: review apps, with Pipelines and the GitHub integration
A preview from a local worktree, uncommitted changes included Yes: spawner up sends the files git sees, uncommitted ones included No: from git Yes: railway up uploads the current directory No: from GitHub
Previews protected by default Yes: team login, a token for agents, share links for guests Not documented Not documented Not documented
Security policy on the compose file Yes: an allowlist, checked before Docker runs the file Not applicable Not applicable Not applicable
Sleep and wake Yes: after 2 hours without activity; the team’s next visit wakes it Free instances only, after 15 minutes without traffic Optional: a service sleeps 5 to 10 minutes after its last outbound traffic, and wakes on the next request Eco dynos, after 30 minutes without traffic
CLI and MCP server for coding agents Yes: a CLI with JSON output and stable exit codes, an MCP server with 9 tools Yes: a CLI and an MCP server Yes: a CLI and an MCP server Yes: a CLI and an MCP server
License Apache-2.0 Proprietary Proprietary Proprietary
Price model Free; you pay for the server A workspace plan, plus instances prorated by the second A plan with included usage, then usage by the second Dynos and add-ons, prorated to the second
Kubernetes development platforms: Okteto and Signadot

Development and preview environments inside a Kubernetes cluster. They reuse your cluster, your manifests and what your team knows. Signadot deploys only the services a change touches and routes requests through them.

Criterion Spawner Okteto Signadot
Where it runs One Linux server of yours, dedicated to previews Your Kubernetes cluster, or Okteto’s managed service An operator in your Kubernetes cluster, with Signadot’s hosted control plane
Needs Kubernetes No Yes Yes
Starts from a Docker Compose file Yes: .spawner/ holds a manifest and a Compose file Yes: translated to Kubernetes No: it forks Kubernetes workloads
A preview per pull request, built in From CI: a job runs spawner up, then spawner down From CI: GitHub Actions or GitLab CI From CI: a job creates a sandbox per pull request
A preview from a local worktree, uncommitted changes included Yes: spawner up sends the files git sees, uncommitted ones included Yes: okteto up syncs local files into a development container Yes: services running on your machine join a sandbox
Previews protected by default Yes: team login, a token for agents, share links for guests No: endpoints are public unless marked private Yes: preview URLs need an API key or a Signadot login
Security policy on the compose file Yes: an allowlist, checked before Docker runs the file Keys such as privileged are not supported, with a warning Not applicable
Sleep and wake Yes: after 2 hours without activity; the team’s next visit wakes it Yes: idle previews sleep, after 1 hour by default Not documented
CLI and MCP server for coding agents Yes: a CLI with JSON output and stable exit codes, an MCP server with 9 tools A CLI and agent skills; no MCP server documented Yes: a CLI and an MCP server
License Apache-2.0 CLI Apache-2.0; the platform is proprietary CLI Apache-2.0; the platform is proprietary
Price model Free; you pay for the server Free plan for small teams; others on request Free Starter plan; usage-based plans above it
Environments as a service on Kubernetes: Bunnyshell, Shipyard and Qovery

Services that create an environment for each pull request on Kubernetes clusters, yours or theirs. Without a new product, Argo CD’s pull request generator or Helm in CI does it with what you already run.

Criterion Spawner Bunnyshell Shipyard Qovery
Where it runs One Linux server of yours, dedicated to previews Bunnyshell’s service, on a Kubernetes cluster you connect or one it manages Shipyard’s cloud: a Kubernetes cluster per account Qovery’s control plane, deploying to Kubernetes clusters in your cloud
Needs Kubernetes No Yes Not yours: Shipyard runs the cluster Yes: clusters Qovery manages
Starts from a Docker Compose file Yes: .spawner/ holds a manifest and a Compose file Imported once into a bunnyshell.yaml Yes No: a Dockerfile, an image or a Helm chart per service
A preview per pull request, built in From CI: a job runs spawner up, then spawner down Yes: an ephemeral environment per pull request Yes Yes: preview environments for pull requests
A preview from a local worktree, uncommitted changes included Yes: spawner up sends the files git sees, uncommitted ones included Not documented Not documented Not documented
Previews protected by default Yes: team login, a token for agents, share links for guests Not documented Yes: single sign-on through your git host, or bypass tokens Not documented
Security policy on the compose file Yes: an allowlist, checked before Docker runs the file Bind mounts are flagged for review at import Not documented Not applicable
Sleep and wake Yes: after 2 hours without activity; the team’s next visit wakes it Yes: sleep and wake schedules, per environment or for the organization Yes: environments spin down after a time without visits Scheduled stop and start, previews included
CLI and MCP server for coding agents Yes: a CLI with JSON output and stable exit codes, an MCP server with 9 tools A CLI; no official MCP server documented Yes: a CLI and an MCP server Yes: a CLI and an MCP server
License Apache-2.0 CLI MIT; the service is proprietary CLI Apache-2.0; the service is proprietary CLI Apache-2.0; the platform is proprietary
Price model Free; you pay for the server By the minute of a running environment, plus your cluster From $500 a month for 3 concurrent environments From $299 a month, billed yearly
Sources

Checked on , against Spawner 2.2.0 and each tool’s documentation. A line out of date? Open an issue.