git push. Live on your VPS.
The Vercel workflow on hardware you own. Import a repository and every push builds in your own GitHub Actions, ships as a checksummed artifact, and runs as a locked-down service on your VPS. Nothing goes live until you say so.
Eight presets. Zero YAML.
Pick your framework and Infraa writes the workflow — build steps, artifact packaging, the systemd unit, the nginx site. If it listens on a port, it deploys.
Next.js
Standalone output with ISR and image optimization, no config.
SvelteKit
Deployed with the official Node adapter, ready to serve.
Nuxt
Self-contained Nitro server output — one folder, one process.
React Router / Remix
Full-stack React Router v7 apps, loaders and actions included.
Astro
Server-rendered or fully static — both presets work.
Node & Express
Express, Fastify, Hono — any server with an entry file.
Go & binaries
Rust, Zig, anything compiled that listens on a port.
Static sites
Vite, CRA, plain HTML — served fast with smart caching.
Three steps from repo to running service.
Import your repository
Connect GitHub, pick a repo and a server. Infraa commits the build workflow and wires the deploy secrets — you never write a line of YAML.
Push to deploy
Every push builds in your own GitHub Actions, on your account. The artifact is checksummed, shipped to your VPS, and held for your approval — or auto-deployed if you say so.
Runs like an operator set it up
A locked-down systemd service bound to localhost — put the nginx module with a free Let’s Encrypt certificate in front. A deploy that fails its health check rolls back to the previous release automatically.
Set up the way a careful sysadmin would — automatically.
Every deploy follows the same rules, on every server. Nothing to configure, nothing to remember.
Builds run on your GitHub, not ours
Your source stays in your repo and builds on your own GitHub account, just like your CI does today. Infraa receives only the finished, checksummed artifact.
What you built is what runs
Before starting your app, the server checks the download matches the build byte-for-byte. No tampering, no surprises.
Your app can’t take over the server
It runs as its own limited user in a sandboxed systemd unit, bound to localhost until you put a proxy in front.
HTTPS one module away
Install the nginx module in front of your app and get a free Let’s Encrypt certificate for your domain — one approval, no config files.
A bad deploy rolls itself back
Older releases stay on the server. A deploy that fails its health check flips back to the previous release automatically — no rebuild, no waiting for CI.
Nothing goes live without your OK
Review every deploy before it ships — or, once you trust an app, turn on auto-deploy and stop thinking about it.
Your app needs a database? Postgres, Redis, and 20+ more services install on the same server with one click.