nullstack — ephemeral infrastructure ready

$ help

$ about

nullstack gives every pull request its own environment — the same containers, the same database engine, the same secrets shape as production, seeded with scrubbed data.

It exists because staging is a lie. One shared environment, permanently broken by whoever merged last, is worse than no environment at all.

It is one binary and a YAML file. There is no control plane for you to run, no operator to upgrade, no agent on your cluster.

cold start
40s median
teardown
automatic on merge
runs on
your cloud account
since
2021

$ how

  1. 01readnullstack.yaml describes your services the way a Compose file does. Most teams write it in under an hour.
  2. 02snapshotWe take a nightly scrubbed snapshot of production data. PII is replaced, referential integrity is kept.
  3. 03buildOn every PR, images are built once, cached by layer, and pushed to a per-PR namespace in your own registry.
  4. 04runThe environment comes up on a URL that is posted back to the pull request. It is real, it is isolated, and it is yours.
  5. 05collectOn merge or close, everything is destroyed and the cost is attributed to the branch that spent it.

$ pricing

planenvironmentspricesupport
solo3 concurrent$0community
team25 concurrent$400 / moshared slack, 1 day
scaleunlimited$1,600 / monamed engineer, 2 hours
self-hostunlimited$24k / yrwe come to you

Compute runs in your own cloud account and is billed by your provider, not by us. We charge for the scheduler, not for the servers.

$ deploy --demo

→ reading nullstack.yaml
→ 6 services, 2 datastores, 1 queue
→ pulling scrubbed snapshot (412 MB) ......... 1.8s
→ building api        [cached 9/11 layers] ... 4.2s
→ building web        [cached 7/8 layers] .... 2.9s
→ building worker     [cached 11/11 layers] .. 0.4s
→ provisioning postgres-16 ................... 6.1s
→ provisioning redis-7 ....................... 1.2s
→ wiring service mesh ........................ 2.0s
→ running migrations (14) .................... 3.7s
→ health checks .............................. ok

  environment ready in 39.4s
  https://pr-4192.acme.nullstack.dev

  teardown on merge · cost so far $0.07

$ customers

We deleted our staging environment eleven days after installing this, and nobody has asked for it back.

Staff engineer, logistics platform · 310 engineers

The per-branch cost attribution ended an argument our platform team had been having with finance for two years.

VP Engineering, fintech · 90 engineers

It runs in our account, so our security review was about IAM policy rather than about trusting a vendor with data.

Head of Security, health tech · SOC 2, HIPAA

$ faq

does it work with our monorepo?

?does it work with our monorepo?

Yes. Services are declared by path, and the build graph is derived from what changed in the diff — an unrelated service is not rebuilt.

what about our data?

?what about our data?

Snapshots are taken and scrubbed inside your account. Nothing leaves it. We never see your data, which is also why we cannot debug it for you.

kubernetes?

?kubernetes?

Optional. nullstack schedules onto EKS, GKE, AKS, Fargate or plain EC2. Most teams under 200 engineers pick Fargate and never think about it again.

how is this different from a preview URL?

?how is this different from a preview URL?

A preview deploys the frontend. This brings up every service, a real database with real-shaped data, the queue and the cron jobs — the parts that actually break.

what happens if you go out of business?

?what happens if you go out of business?

The scheduler binary is escrowed and the format is documented. Everything already runs in your cloud account, so the worst case is that it stops improving.

$ contact

We answer within one working day. There is no SDR, no sequence, and nobody will add you to a nurture track.