Small apps don't need to scale. They need a machine and a disk.
Open source projects that already ship a single binary. One click to deploy:
| App | What you get |
|---|---|
| PocketBase | A database, auth, file storage and an admin UI, in one file. |
| Sharkord | A self-hosted chat server with voice, video and screen sharing. |
| Boop | A self-hosted notification inbox for your own apps. |
| Gitea | A self-hosted Git service with repositories, issues, pull requests, packages and CI. |
| OpenConnector | One OAuth hub for 1,000+ providers, with prebuilt actions your agents can call. |
| Context Use | A personal knowledge base your agents read and write over MCP, behind a passkey. |
| nibrun-vitals | The microVM it runs on, as a face you can boop: live CPU, memory, disk, network, visitors and naps. |
| PicoShare | A minimalist file host: upload a file, share a link, no account needed to download. |
| Memos | A place for short notes, one card to a thought, with tags and search. |
| Shiori | Bookmarks, each with a readable copy of the page saved beside it. |
| Fusion | An RSS reader for your own feeds, behind a password. |
| File Browser | A file manager for the volume in a browser: upload, preview, rename, share. |
| MicroBin | A pastebin for text, files and links, with expiry and QR codes. |
| GoatCounter | Web analytics without cookies, and without following anyone between sites. |
| Remark42 | Comments for a static blog, with no tracking and no third party. |
| Traggo | Time tracking where an entry is a set of tags rather than a project. |
| Gotify | A push notification server your own scripts post to, with apps to receive them. |
| Flipt | Feature flags with a UI, evaluated over HTTP or gRPC. |
| Open Sync | Your GitHub pull requests, Gmail and Slack threads and Granola meetings, synced to a copy you keep. |
| PDF Signer | Your handwritten signature, kept once and stamped onto any PDF, behind a passkey. |
| yarr | A small feed reader, driven from the keyboard, that keeps everything in one file. |
A compiled binary is already a whole application in one file. Whatever language produced it, nothing has to be installed on the other side. The only two things it still needs are somewhere to run and somewhere to read and write files.
For an app that five people use, most of the rest is ceremony:
| What it usually gets | What it actually needs |
|---|---|
| ❌ |
✅ A machine to run on |
| ❌ |
✅ A disk to write to |
| ❌ |
|
| ❌ |
|
| ❌ |
|
| ❌ |
|
| ❌ |
|
| ❌ |
nibrun is those two things and nothing else: a Firecracker microVM of its own (1 vCPU, 256 MiB)
and a data/ directory that survives every redeploy. It answers on an HTTPS subdomain the moment
it boots, sleeps after five minutes idle, and wakes on the next request in ~120 ms.
If your app needs to be more than one machine, it has outgrown this — and that is not a roadmap, it is the design.
Create an HTTP app (use the bun-full-stack-starter template) and compile it to a single Linux x86_64 binary. Then deploy it:
Prepare the app and deploy it to nibrun using the deploy-to-nibrun skill.
Install it using:
npx skills add ilbertt/nibrunUse the dashboard
Drag and drop the binary onto app.nibrun.com.
Use the CLI
curl -fsSL https://nibrun.com/install.sh | shnib run ./my-servernib apps export .
tar -xzf my-app.tar.gz
./my-serverThe same binary you uploaded, the same bytes that were on the disk, and a .env of the variables
it was deployed with. There is no managed database to migrate off, because there never was one.
