remo runs JavaScript apps in V8 isolates on a server you control. Export a fetch handler, push to deploy, get a subdomain. No containers, no build pipeline.
nano-rs is the execution engine — a Rust process that embeds V8 and runs each JavaScript app in an isolated context. remo is the deploy layer on top of it.
Apps export a fetch(request): Response handler. nano-rs calls it for each incoming HTTP request inside a V8 isolate. If you've written a Cloudflare Worker, the model is the same.
No shared global state between requests by default. Isolates start in microseconds. Multiple worker processes run in parallel under load and are scaled with remo scale.
remo domain set myapp example.com writes an nginx vhost and runs certbot. The cert renews automatically. No manual nginx config.
Git push authenticates with your existing SSH key. The CLI uses a bearer token. There is no web UI to log into.
Download the binary and point it at your remo server.
remo login --server https://cloud.remoapps.site --token <token>
One command, instant subdomain.
remo app create myapp
Wire your local repo to the remo SSH endpoint.
git remote add remo git@cloud.remoapps.site:myapp
Every push is a deploy. Instant rollback if something breaks.
git push remo main
remo is MIT-licensed. It runs as a single binary, uses SQLite for state, and expects nginx and nano-rs already running on the same host.
remo server install writes the nginx config, creates the git system user, and generates a master token. After that, deploys happen over SSH.
cloud.remoapps.site is invite-only. Leave your email and I'll get back to you.