_ _ _ __ _| |_| |_ _ _ ___| |__ \ \ / / __| __| | | | / __| '_ \ \ V /| |_| |_| |_| |_\__ \ | | | \_/ \__|\__|\__, (_)___/_| |_| |___/ ssh-native microVMs. no signup, no dashboard, no yaml. your keypair is your account. connecting is the API. ── fleet map ────────────────────────────────────────────────────────── ████████░░░░▒▒▒▒▒▒░░░░░░████████████░░░░░░░░▓▓▓▓▓▓▓▓░░░░░░▒▒▒▒░░░░ ░░░░████████████░░░░▒▒▒▒▒▒▒▒░░░░░░░░████░░░░░░░░░░░░████████░░░░░░ ▒▒▒▒▒▒░░░░░░░░████████░░░░░░░░▓▓▓▓░░░░░░████████████░░░░░░░░░░░░░░ █ running ▓ waking ▒ stopped, disk kept ░ free idle VMs cost nothing. the fleet defragments itself. ── usage ────────────────────────────────────────────────────────────── $ ssh new@vtty.sh create a VM + attach $ ssh mybox@vtty.sh attach, wakes it if stopped $ ssh mybox+debian-12@vtty.sh create from a template $ ssh control@vtty.sh vm pin mybox keep it alive, no idle stop $ ssh control@vtty.sh vm share mybox grant a teammate's key access $ ssh control@vtty.sh help --json manage, built for agents ── reach a port ─────────────────────────────────────────────────────── $ ssh -L 8080:localhost:3000 mybox@vtty.sh private tunnel: the VM's :3000 at localhost:8080 $ ssh -N -L 5432:localhost:5432 db@vtty.sh tunnel only, no shell $ ssh control@vtty.sh expose add mybox 3000 plain HTTP -> public HTTPS URL ── control surface ──────────────────────────────────────────────────── $ ssh control@vtty.sh [args] vm ls info new start stop rm resize share unshare pin unpin template ls info save rm expose ls add rm size ls tier ls quota show usage against your plan limits every command speaks --json. exit codes are contractual. ── how it works ─────────────────────────────────────────────────────── real VMs, >1s boots. every session lands in a Firecracker microVM with its own kernel, not a container. cold start to shell in just over a second. idle costs nothing. walk away and the VM stops; your disk stays. reconnecting wakes it. pin a box and it never idles out; resize a stopped one when it outgrows its clusters. you never manage lifecycle; connecting is the state. your key is the ACL. no users, no teams, no invites. vm share grants another public key access to your box; unshare revokes it. that's the whole permission model. reach in, or open up. ssh -L tunnels a VM port to your laptop over the connection you already have; private, no DNS, no new auth. expose takes a plain-HTTP port in your VM and publishes it at an https:// URL on *.apps.vtty.sh; TLS terminated and certs issued automatically, nothing to configure. the VM boots on the first request. agent-first. no browser, no tokens: an agent with a keypair is fully onboarded. every command speaks --json, quota reports headroom before you hit it, and templates make a provisioned box reproducible with one flag. ─────────────────────────────────────────────────────────────────────── (c) 2026 vtty.sh https://vtty.sh