Early access

Preview every branch. Of every app.

Every branch gets a full-stack preview — backend, database, queues, anything in your docker-compose. Shareable URL, torn down automatically when the PR closes.

No credit card. Bring your own Docker compose.

~/your-app
$ git push origin feature/checkout-v2
  Total 12 (delta 8), reused 0 (delta 0)
  To github.com:your-org/your-app.git

▲ envloft build #87 ── feature/checkout-v2 ── 31s
cloned · built · launched · DB seeded

https://feature-checkout-v2-web-7a9c.preview.envloft.com
Built for teams

Two devs. Two previews. Zero crosstalk.

Most preview platforms break the moment two people want the same base branch. Envloft scopes every launch to its own token — distinct hostnames, distinct databases, distinct containers — so your whole team can iterate in parallel.

A

App env launched by

Alex

running·app env #7a

https://checkout-v2-web-7a9c.preview.envloft.com

  • webcheckout-v2 · 7a9c
  • apimain · 7a9c

Own database. Own queue. Own bundle baked with Alex's sister URLs.

S

App env launched by

Sam

running·app env #3f

https://payments-v3-web-3f12.preview.envloft.com

  • webpayments-v3 · 3f12
  • apimain · 3f12

Own database. Own queue. Own bundle baked with Sam's sister URLs.

Both Alex and Sam are working on the web project against the same main api branch. Envloft gives each launch its own token-suffixed hostnames, its own image builds, and its own data volumes. Hitting Alex's web hits Alex's api. Hitting Sam's web hits Sam's api. Always.

How it works

From git push to preview URL in under a minute.

Three steps. Bring your existing Docker stack.

acme / web
acme / api
linked
01

Connect your repo

Install the Envloft GitHub App, pick which repos it can see, and link them. Group multiple repos into one App when their previews need to come up together.

$ git push origin checkout-v2
→ envloft: build queued
✓ live in 47s
02

Push a branch

Every push kicks off a build with your existing docker-compose. Templated env vars resolve to the right per-launch URL at compose-build time.

checkout-v2-web-7a9c.preview.envloft.com
live
03

Get a tokenised preview URL

A unique URL per launch — your teammate's preview can never overwrite yours. Bookmark, share, or auto-comment it on the PR.

URL convention

Every preview, the same shape.

Predictable, copy-pasteable, never reused. Bookmark it once.

https://checkout-v2-web-7a9c.preview.envloft.com
branch

The git ref you pushed. Slug-safe — slashes become hyphens.

project

Which repo's container is on the other end. Set when you link the project.

env token

Unique per launch. Stops two AppEnvs sharing the same branch from colliding on Caddy.

Caddy routes by hostname end-to-end — the URL is the address, not a redirect. .preview.localhost works on every dev machine without an /etc/hosts edit, and .preview.envloft.com works for everyone else.

The dashboard

See what shipped, what failed, who launched what.

Every build and every launch is its own page. The org dashboard rolls them up into a live feed with attribution and per-resource status.

Recent activity

live · refreshing
  • Launched app app env your-team
    checkout-v2·just now·by alex
  • Built build web
    checkout-v2·a3f9c12·1m ago·by GitHub push
  • Launching app env your-team launching
    payments-v3·2m ago·by sam
  • Build failed build api
    fix/stripe-webhook·11e2b48·9m ago·by alex

    compose build exit 1

  • Destroyed env web
    feature/legal-page·ff04c89·23m ago·by sam
Features

Engineered around the parts of preview environments that usually break.

The boring stuff is solved: routing, secrets, teardown, hooks, isolation.

Full Docker stacks, not just frontends

Anything that fits in a docker-compose.yml — Postgres, Redis, Celery workers, FastAPI, Next.js. Your stack runs the same in preview as it does in prod.

docker-composePostgresRedisFastAPINext.js

True parallel previews for the team

Token-scoped hostnames, per-launch images, namespaced volumes. Two devs on the same base branch never trample each other — each launch is its own sealed stack.

alice's preview
checkout-v2-web-7a9c
bob's preview
checkout-v2-web-3f81

Sister URLs resolved at launch

Reference one project's URL from another via {{ sisters.<slug>.url }} — Envloft bakes the right per-launch URL into each bundle at compose-build time.

Post-launch hooks

Import a SQL dump, seed a DB, warm a cache. Set a service + command on the project — it runs after every launch, in your container.

Live build + launch pages

Every build and every app env has its own URL with the log streaming in. Auto-tails in flight, shareable when something breaks.

Attribution + activity feed

See who launched what, when, from which commit. Across every project in the org, in one live feed on the dashboard.

Secrets sealed at rest

Project secrets are encrypted with PyNaCl SecretBox before they hit Postgres. Master key lives off-disk in production.

Auto teardown on merge

Close a PR, the env is destroyed. Push a fix, the URL reloads with the new bundle. Nothing rots in the background.

Pricing

Pay for the headroom you actually use.

Concurrent envs is the cost driver — pick the tier that fits your team's burst. Upgrade or downgrade any time.

Free

€0/ forever

Kick the tires. One repo, two envs.

  • 1 project
  • 2 concurrent envs
  • 1 user
  • Community support
Most popular

Pro

€49/ month

Small teams running multiple repos with real previews.

  • 5 projects
  • 10 concurrent envs
  • 1 app (multi-repo bundle)
  • 5 team members
  • Email support

Team

€199/ month

Growing teams. Unlimited apps + projects.

  • Unlimited projects
  • 30 concurrent envs
  • Unlimited apps
  • 20 team members
  • Priority support

Enterprise

Custom

Self-hosted runner, SSO, custom caps.

  • Custom env + member caps
  • Self-hosted runner (no GitHub access for us)
  • SSO / SAML
  • Dedicated support + SLA

Prices in EUR, VAT not included. All plans run on the same EU infrastructure.

Ship the way your team actually works.

Envloft is in early access. Bring a real app and we'll get it running.