Circuitdeploy
Ephemeral preview environments

Circuitdeploy stands up a full-stack, production-shaped environment for every pull request — real database, real services, real seed data — then tears the whole thing down the second you merge. No staging queue. No leftover infra. No surprise bill at the end of the month.

  • Live in ~40 seconds
  • Branch-isolated databases
  • Zero idle cost
pr #482 — checkout-redesign
$ circuit up
→ cloning checkout-redesign @ a91f3c2
→ provisioning: web · api · postgres · redis
→ seeding db from snapshot prod-lite
✓ env ready in 38.2s
🔗 https://pr-482.circuitdeploy.app
✓ posted preview link to GitHub

Plugged into the stacks shipping teams already run

NorthwindCobalt LabsDriftwaveMeridian DevHalcyon CloudApex RoboticsLumen SystemsNorthwindCobalt LabsDriftwaveMeridian DevHalcyon CloudApex RoboticsLumen Systems
What comes up on every push

Not a screenshot bot.A real environmentyou can click through.

Circuitdeploy reads your repo, maps your services, and stands up the whole stack — so reviewers test the actual change, not a guess about how it might behave.

Full-stack, not front-end-only

Frontend, backend, queues, cron, and dependent microservices all come up together and talk over private networking — the same shape as production, down to the service mesh.

Branch-isolated databases

Every PR forks its own database from a sanitized production snapshot. Run a destructive migration, trash the data, drop a table — it never touches another branch or another engineer.

Self-destruct on merge

The instant a PR merges or closes, the whole environment is torn down and its compute, networking, and storage reclaimed. Nothing lingers. Nothing keeps billing while you sleep.

Drive it from the PR thread

Comment /circuit rebuild to redeploy, /circuit seed prod-lite to reload data, or /circuit logs api to tail a service. Reviewers steer the environment without ever leaving GitHub.

Cold-start to warm in seconds

Layer caching and pre-baked base images bring most environments up in under a minute — fast enough to wait on with the PR still open, not slow enough to switch tasks over.

What ephemeral does to a review cycle

~40s
Median time to live URL
6s
Median teardown on merge
$0
Cost once a PR is merged
11k+
Environments spun up daily
How the circuit closes

Four steps.Zero ops tickets.

Connect once. From then on the loop runs itself — open, preview, review, reclaim.

1 · Connect your repo

Install the GitHub or GitLab app and point Circuitdeploy at one config file. It infers your services, ports, and build steps on the first run — no Terraform, no YAML sprawl.

2 · Push a branch

Every pull request triggers a fresh, fully isolated environment with its own URL, database fork, and per-environment secret scope.

3 · Review the real thing

QA, design, and product click a live link in the PR comment and test the actual change against real-shaped data — on desktop or a phone.

4 · Merge and reclaim

Merging closes the circuit. The environment self-destructs, the meter stops, and your account drops back to zero idle infrastructure.

Config recipes

One file teaches it your stack.

Drop a circuit.toml in the repo root. These are the shapes teams ship with — copy one, change the service names, push a branch.

web · db

Next.js + Postgres

A web service on port 3000, a Postgres fork seeded from prod-lite, migrations run on boot. The default for most product repos.

backend

API + worker + Redis

An HTTP API, a background worker on the same image, and a Redis instance for the queue — all on private networking, no public worker port.

monorepo

Monorepo, three services

Web, admin, and a Go gateway built from one turborepo. Each gets its own subdomain under the PR's preview URL.

secrets

External secrets

Pull Stripe and Auth0 test keys from your vault at boot, scoped to the environment and revoked on teardown. Never written to the repo.

data

Seed from a fixture

Skip the prod snapshot and load a checked-in fixtures.sql instead — handy for open-source repos with no production data to fork.

advanced

Ports & health checks

Declare readiness probes per service so the preview link only posts to the PR once every service answers healthy.

From teams that retired staging

The review bottleneck, removed.

We deleted our shared staging server the week we adopted Circuitdeploy. Every PR is its own staging now, and nobody fights over a deploy slot anymore.

L
Lena Vasquez
Staff Engineer, Northwind

Branch-isolated databases changed how bravely we ship migrations. We run the scary one on a fork, watch it, and if it's wrong we close the PR and it's gone — no rollback, no incident.

T
Theo Marchetti
Platform Lead, Cobalt Labs

Our designers review live code now instead of waiting for a deploy. Sign-off that used to take two days happens in the PR thread before lunch.

P
Priya Nair
Director of Product, Driftwave
Pricing

Pay for environments, not idle servers.

Billing is metered by the minute an environment is actually alive. Merge a PR and that meter stops cold.

Solo

For open-source and side projects.

$0/mo
  • 1 connected repo
  • Up to 3 concurrent environments
  • Shared build runners
  • GitHub PR comments
  • Community Discord support
Most popular

Team

For teams shipping every day.

$240/mo
  • Unlimited repos
  • Up to 40 concurrent environments
  • Branch-isolated database forks
  • Comment-driven controls
  • Priority build runners
  • Slack + email alerts

Enterprise

For regulated and high-volume orgs.

Custom
  • Self-hosted runners in your VPC
  • SSO, SCIM & audit logs
  • Custom data-masking policies
  • Dedicated build capacity
  • Named solutions engineer
  • 99.9% uptime SLA

The questions every platform team asks first.

How is this different from a Vercel-style preview?

Front-end preview tools deploy your UI against shared or mocked backends. Circuitdeploy stands up the entire stack — backend services, queues, and a forked database — per pull request, so reviewers exercise the real, full system instead of just the rendered page.

Where does the preview data come from?

Each environment forks a sanitized snapshot you designate — typically a 'prod-lite' dataset with PII masked. You write the masking rules, and the fork is destroyed with the environment on merge.

What happens to an environment when a PR is merged or closed?

It self-destructs. Compute, networking, and the database fork are reclaimed within seconds, and metered billing for that environment stops immediately. Nothing is left running, and nothing carries into your next invoice.

Will my secrets be exposed in a preview?

No. Secrets are injected at runtime, scoped per environment, never written to the repo or build logs, and revoked the moment the environment is torn down. Enterprise plans add per-environment masking policies on top.

Can I run it inside my own cloud?

Yes. Enterprise plans let you register self-hosted runners inside your VPC, so source code and data never leave your infrastructure while the control plane stays fully managed by us.

What stacks and languages are supported?

Anything that builds in a container. We ship first-class detection for Node, Python, Go, Ruby, and Rust, plus Docker Compose and most monorepo layouts. If it has a Dockerfile, Circuitdeploy can stand it up.

Close the loop on your next pull request.

Connect a repo and watch the first environment come up live in under a minute. No credit card to start.