JavaScript worker runtime.
git push to deploy.

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.

index.js → cloud.remoapps.site
// your entire app
export default {
  async fetch(request) {
    return new Response(
      "hello from my VPS",
      { headers: { "content-type": "text/plain" } }
    );
  }
};

$ git push remo main
Deployed myapp @ a1b2c3d4
https://alice-myapp.cloud.remoapps.site

The runtime
How it works

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.

JavaScript / TypeScript

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.

Isolate per request

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.

Custom domains + TLS

remo domain set myapp example.com writes an nginx vhost and runs certbot. The cert renews automatically. No manual nginx config.

SSH key auth, no dashboard

Git push authenticates with your existing SSH key. The CLI uses a bearer token. There is no web UI to log into.


Getting started
From zero to deployed in four steps
01

Install the CLI

Download the binary and point it at your remo server.

remo login --server https://cloud.remoapps.site --token <token>
02

Create an app

One command, instant subdomain.

remo app create myapp
03

Add the remote

Wire your local repo to the remo SSH endpoint.

git remote add remo git@cloud.remoapps.site:myapp
04

Push and ship

Every push is a deploy. Instant rollback if something breaks.

git push remo main

Open source
Self-host on your own VPS

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.

github.com/gleicon/remo →
# download and install wget -qO /usr/local/bin/remo \ https://github.com/gleicon/remo/releases/\ latest/download/remo-linux-amd64 chmod +x /usr/local/bin/remo # provision the VPS (run as root) remo server install \ --domain apps.yourdomain.tld # enable the service systemctl enable --now remo ✓ remo 0.5.9 running on :7070

Request access

cloud.remoapps.site is invite-only. Leave your email and I'll get back to you.