git push.
The rest is our problem.
Connect a GitHub repo and every push builds on a fresh Firecracker microVM, health-checks, then atomically flips traffic to the new version — the old one is torn down behind it. Framework auto-detected, runtime pinned by your repo, and nothing billed while the app sleeps.
Every deploy is a brand-new machine.
A deploy never mutates the running app. It provisions a fresh sandbox, shallow-clones the exact commit, builds, starts, and HTTP health-checks the port — only then does traffic flip, atomically, blue-green. A push to the tracked branch does all of this pinned to the pushed commit.
Why blue-green on microVMs
Because the build runs beside the live version, a broken build never touches production — a deploy that fails its health check simply never receives traffic. When the flip does happen, the previous deployment is kept for one-click rollback and its sandbox torn down.
pandastack app create \
--name my-site \
--git-url https://github.com/me/my-site
pandastack app deploy <app-id>
# queued -> building -> deploying -> live
# with GitHub connected + auto_deploy: true,
# every push to main deploys the pushed commitBring the framework you already have.
No pin needed: Next.js, Vite, CRA, Node, Python, and static sites are detected from the repo, with install, build, and start commands filled in. Runtimes come from mise — your .nvmrc, .python-version, .tool-versions, or mise.toml picks the exact versions — and explicit overrides win whenever you set them.
Detection, in precedence order
An explicit framework pin on the app wins first, then a committed pandastack.json, then auto-detection from the files present. The runtime base is Ubuntu 24.04 with Node 22 LTS, Python 3.12, Go, and Bun pre-warmed — anything else is a version file away.
{
"type": "vite",
"outputDir": "dist",
"installCommand": "pnpm install",
"buildCommand": "pnpm build",
"startCommand": "node server.js"
}Idle costs exactly nothing.
After the idle window — 15 minutes by default, tunable down to 60 seconds — a sleeping app releases CPU, RAM, and disk entirely. The next real request boots a fresh sandbox from the deploy-time artifact and is answered; you pay nothing for the hours in between.
Sleep on idle
The sandbox is released completely; what survives is the immutable artifact baked at the end of the last successful deploy.
Wake on request
The next request boots from that artifact — typically sub-second — and concurrent requests during a wake coalesce into one boot.
Bots can't pin it awake
Uptime monitors, crawlers, and health-path probes are classified before they touch the app — a monitor gets a cheap 200 while it sleeps.
Or stay always-on
Set auto_hibernate: false for a payment webhook or an API polled on a tight SLA — the first request answers as fast as the thousandth.
The boring parts are already handled.
A background monitor health-checks every running app on a 30-second loop and restarts a wedged process in place — and the everyday operations are one call each.
A URL that never moves
Each app gets a stable https URL that survives every blue-green flip and every sleep/wake cycle — it always forwards to the current sandbox.
Runtime logs
Your app's stdout/stderr, streamed live with ?follow=1 — separate from build logs, which stream per deployment as it runs.
One-click rollback
Rollback rebuilds the previous deployment byte-identical on a fresh sandbox, pinned to its commit, with the same blue-green flip.
Env vars, both phases
Variables you set are exported at build and at runtime; PORT and HOST are injected automatically for your start command.
Every pull request gets its own environment.
Opt a repo in and each PR is built from its exact head commit, served at its own stable URL, and the link is posted as a sticky comment on the PR. Push more commits and it rebuilds in place; close or merge and it's torn down — a 24-hour reaper catches anything a missed webhook leaves behind.
Open → live URL
The preview environment deploys from the PR's head commit and comments its URL on the pull request: building, ready, or failed.
Push → rebuild
New commits rebuild the same environment behind the same URL; the PR comment is edited in place, never spammed.
Idle → free
Previews scale to zero like any app, so a per-PR environment costs compute only while someone is actually looking at it.
Ship on the millisecond cloud.
Free tier with $5.40/mo usage credit. No card. Apache-2.0.