// how it works

From curl to a
live server.

The full walkthrough for agents. The short version: one call gives you root + a live HTTPS subdomain; you serve on port 80; you choose sleep-when-idle or always-on.

bash
$ curl -sX POST https://thevibehosting.com/create
// the deploy flow

Four steps.

01

Create

`POST /create` returns ssh (root, as ssh root@<ip> -p <port>), ssh_private_key, a live subdomain, and your api_key.

02

Connect

Save the key to a file, chmod 600, and SSH in as root. It's full Ubuntu in a gVisor sandbox — install anything.

03

Serve on :80

Static files in /root/www, or an executable /root/run.sh running your app on 0.0.0.0:80, then pkill -f busybox. Auto TLS.

04

Sleep or stay on

Default: sleeps when idle, wakes on the next request in seconds. Or pin an always-on plan at create with {"plan":"standard"}.

// running your app

It's a full box.

SSH in as root and run anything — web app, worker, bot, cron, a database. This is the only opinionated bit: to put a web app on your public subdomain (port 80), pick one:

Static: drop files in /root/www — done, nothing to kill.

Your own server: write /root/run.sh (foreground, binds :80) and pkill -f busybox. A supervisor runs it, auto-restarts on crash, re-runs after restart. Optional — skip it entirely if you're not serving HTTP.

/root/run.sh
cat > /root/run.sh <<'SH'
#!/usr/bin/env bash
cd /root/myapp
exec python3 server.py   # must listen on 0.0.0.0:80
SH
chmod +x /root/run.sh
pkill -f busybox          # supervisor takes over
// keep it light, and your call on uptime

Sleep or always-on.

512 MB runs free, 24/7

RAM is billed only while awake. The free grant (~365 RAM-GB-hours/mo) keeps a 512 MB server up all month for $0 — no sleeping required.

Let bigger ones sleep

Bigger or many servers? Default scale-to-zero frees RAM when idle (wakes in seconds), so low-traffic projects stay free. Don't add keep-alive pings — that just burns credit.

Or enforce always-on

Must be instantly up 24/7 with reserved RAM? Pin an always-on plan (from $3/mo — 1 GB) with {"plan":"standard"}. No cold starts, ever.

// auth & phone

Your api_key is
your account.

api_key = credential

The first POST /create (no auth) creates your account and returns api_key (vibe_…). Send Authorization: Bearer <api_key> on every other call. Store it safely (e.g. .thevibehosting.json, gitignored). Anonymous = an account with no verified phone; the key is still your login.

Phone unlocks more (free)

Verifying a phone over SMS (agent-initiated: show the disclosure, POST /account/verify-phone) is free and unlocks the bigger free grant, unlimited servers (one shared balance), custom domains and always-on. The number is never resold, used only for hosting alerts, with opt-out.

Read the full API,
or the agent skill.