We fix staging bottlenecks.

One shared staging server means your team waits in line. VeilStream gives every pull request its own environment — your Docker Compose stack and a sanitized copy of your Postgres — and your platform team doesn't have to build or babysit it.

First $20/month free. No credit card.

From a customer

With VeilStream, we nearly doubled our sprint velocity. From 10 points to 19, and we sleep better at night.

Erik Dahl CTO, Parrot (YC F25)

That's easy, but what about …

Per-branch environments are a simple idea. Most teams try them and end up back on shared staging — usually because nobody will sign off on copying production data, and fake seed data doesn't catch real bugs. These are the parts that make it hard. We run all of them.

the database?

One shared database is the staging bottleneck. Migrations collide. One branch's test data breaks another's demo. Each VeilStream environment gets its own copy-on-write Postgres from a snapshot — not a live slice of production, and not a second database you have to migrate onto. You keep the Postgres you already run. Need the same data on a laptop? veilstream snapshots run starts the sanitized snapshot locally in Docker.

production data?

This is where per-branch environments usually die. You can't hand production data to every branch, and seed data misses the bugs real data finds. Define column rules once — mask, hide, replace, filter. Every snapshot is sanitized before any environment sees it, so security signs off once and your team stops waiting.

the rest of the stack?

A URL for a frontend is not an environment. We build and run the services in your existing Docker Compose file — web, API, workers, Redis, whatever is there — as isolated containers with a unique URL. When the environment is destroyed, they go away. You do not rewrite the Compose file.

pull requests?

Connect the repository. We create an environment on pull-request open or branch push, update it on new commits, and delete it when the PR closes.

leftover environments and cost?

PR environments delete when the pull request closes. Branch environments expire on a wall-clock or idle timeout. Dormant environments stop spending. Compute billing stops when the environment is destroyed. First $20/month is free; no credit card to start.

secrets?

Each environment needs its own URLs, DSNs, and callbacks. Set env vars in the console. Use templates for values that change per environment — the preview URL, a unique snapshot-fork connection string. Console values win over the Compose file.

sign-in?

Google and Apple only accept pre-registered redirect URLs. A new hostname per branch breaks that. Register VeilStream’s auth router once. It brokers the callback back to this environment. Same login code as production; you flip one environment variable.

someone writing to it?

A snapshot is fine until someone needs to change data. Snapshot forks are writable scratch copies of that seed. People, agents, and tests can change data without touching production or the golden snapshot. When the fork is done, delete it.

AI agents?

Coding agents need somewhere real to check their work. Cursor and Claude get the live URL, logs, and Postgres credentials over MCP, scoped to that environment. Access expires after 60 minutes and can be revoked. The same data rules apply as for people.

mobile, without the hardware?

iOS previews usually mean Xcode on a Mac, or a device farm and a queue. VeilStream hosts a wasm build of your IPA and runs it in a browser tab, next to a live preview of its API. In private beta with a handful of teams, message us if you want in.

Per-branch environment plans usually die because the data problem is hard. We solve it, and run the rest for you.

Works with

Built in British Columbia by Steve Jones and John Oram

From branch to usable environment

Git push to a URL and a snapshot database.

  1. 1 Push code

    VeilStream detects the branch or pull request and reads your existing Docker Compose file.

  2. 2 We build and host it

    Your Compose services are built and run as temporary containers, isolated, with a unique URL. When the environment is destroyed, they go away.

  3. 3 With a snapshot database

    We host a preview database from a sanitized snapshot — refresh it nightly if you want. Copy-on-write makes each environment look like its own instance without copying the full dataset.

Git branch Build containers Live URL Snapshot DB Human / AI agent

From your terminal

Install the CLI, then run one command in a GitHub checkout. It signs you in, connects the repository, starts an environment for the current branch, and waits until it's ready.

Mobile teams: iOS previews in private beta

We run iOS apps in the browser — your app's native code translated to WebAssembly, with no simulator and no rewrite. In the private beta, every pull request gets your iOS app next to the web stack, so reviewers tap through the branch instead of waiting for a build.

How this is different

Vercel and Render give you a URL. Neon gives you a database branch. Codespaces gives you a cloud IDE. Replacing shared staging takes all of it — the whole stack, a database with real-shaped data that's safe to share, and cleanup. Otherwise your platform team stitches it together.

Capability comparison of VeilStream, Vercel, Render, Neon branching, and GitHub Codespaces
Capability VeilStream Vercel Render Neon branching Codespaces
Live preview URL from git Yes Yes Yes No Cloud IDE, not a shareable preview
Runs Docker Compose Yes — multi-service Frontend / serverless Dockerfiles No In the workspace
Preview database from your data Sanitized snapshot Optional add-on Copy of a Render database Copy-on-write branch You wire it
Production data, sanitized Yes No No No No
Temporary agent DB credentials MCP, expires No No No No
You keep production Postgres Yes Yes Yes Neon is the database Yes

Go deeper

FAQ

How does pricing work?

Usage-based. The first $20/month is free, with no credit card required. You pay for compute while preview environments run, plus metered database usage. When an environment is destroyed, compute billing stops. See pricing.

How is this different from Vercel, Render, or Neon?

Those tools each cover part of the problem — a preview URL, a Docker host, or a database branch. VeilStream is the whole per-branch environment — live URL, your Compose stack, and a sanitized snapshot database — run and cleaned up for you. See the comparison.

Can we run it from CI?

Yes. Set VEILSTREAM_API_KEY in the pipeline and run veilstream env up. It creates or reuses the branch's environment and waits until it's ready, so the next step can test against a live URL. No browser login. You can also get a webhook when a deployment is ready.

Can we get a demo before moving our staging setup?

Yes. Book a demo and we'll walk through your Compose file, database, and sign-in setup with you before you connect anything.

What is an environment versus a deployment?

An environment is the live preview — the URL, services, and lifecycle. A deployment is one build of that environment, with logs and status. You mostly care whether the environment is ready. Detail lives in the docs.

We fix staging bottlenecks.

Connect your repository and Docker Compose. Your next pull request gets its own environment and a sanitized database — no staging queue, nothing for your platform team to maintain.

First $20/month free. No credit card.