Skip to the early-access form

A private, running environment for every branch.

Your pipeline builds the image. SnapEnvs runs it as a private preview with its own databases, then removes it when its lifetime ends.

Example run, illustrative values
node ci/snapenvs.mjs deploy --wait

Your pipeline builds and pushes the image. This step submits its digest and waits.

{
"environmentId": "5c1d2e8a-0b7f-4e36-9a41-d2f0c6b7e913",
"state": "RUNNING",

Observed from the running containers, never assumed.

"generation": 1,
"previewUrl": "https://brave-otter-7k2d.preview.example.com"

A private address for this branch. Reviewers get in by single-use invitation.

}

The list gets in before the public launch.

SnapEnvs: Your email wasn't saved. Check the address, then try again in a few minutes.

{
"earlyAccess": "REQUESTED"
}

You're on the list. Your invitation arrives by email when early access opens.

What every environment gets

Your pipeline
GitHub Actions or GitLab CI builds the image. A release is accepted from the pipeline's own OIDC identity or an expiring project token.
Its own add-ons
PostgreSQL, MySQL or MongoDB with a dedicated volume. Redis or Valkey. RabbitMQ or Kafka. Isolated per environment.
Private review
Reviewers get in through single-use invitations that expire after an hour and can be revoked at once.
A full lifecycle
Deploy a new revision, sleep, wake, extend or destroy. Every environment has a lifetime and is removed when it ends.
Evidence on failure
A failed deploy is checked against its own logs, state and events, and every finding cites what it read. Nothing is changed for you.
Request early access