| name | exe |
| description | Deploy a Vibes app to exe.dev VM hosting. Uses nginx on persistent VMs with SSH automation. Supports client-side multi-tenancy via subdomain-based Fireproof database isolation. |
Deploy to exe.dev
Deploy your Vibes app to exe.dev, a VM hosting platform with persistent storage and HTTPS by default.
Prerequisites
- SSH key in
~/.ssh/(id_ed25519, id_rsa, or id_ecdsa) - exe.dev account - run
ssh exe.devonce to create your account and verify email - Generated Vibes app - an
index.htmlfile ready to deploy
Quick Deploy
cd "${CLAUDE_PLUGIN_ROOT}/scripts" && [ -d node_modules ] || npm install
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.html
What It Does
- Creates VM on exe.dev via SSH CLI
- Starts nginx (pre-installed on exeuntu image)
- Uploads your index.html to
/var/www/html/ - Enables public access at
https://myapp.exe.xyz
Multi-Tenant Apps
For apps that need tenant isolation (e.g., alice.myapp.com, bob.myapp.com):
Client-Side Isolation
The same index.html serves all subdomains. JavaScript reads the hostname and uses the subdomain as a Fireproof database prefix:
// In your app:
const hostname = window.location.hostname;
const subdomain = hostname.split('.')[0];
const dbName = `myapp-${subdomain}`;
// Each subdomain gets its own Fireproof database
const { database } = useFireproof(dbName);
Custom Domain Setup
Add
--domainflag:node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --domain myapp.comConfigure wildcard DNS at your DNS provider:
*.myapp.com CNAME myapp.exe.xyz myapp.com ALIAS exe.xyzSet up wildcard SSL on the VM:
ssh myapp.runvm.dev sudo apt install certbot sudo certbot certonly --manual --preferred-challenges dns \ -d "myapp.com" -d "*.myapp.com"
CLI Options
| Option | Description |
|---|---|
--name <vm> |
VM name (required) |
--file <path> |
HTML file to deploy (default: index.html) |
--domain <domain> |
Custom domain for wildcard setup |
--dry-run |
Show commands without executing |
--skip-verify |
Skip deployment verification |
Redeployment
After making changes, redeploy with:
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp
SSH Access
Access your VM directly:
ssh myapp.runvm.dev
Architecture
exe.dev VM (exeuntu image)
├── nginx (serves all subdomains via server_name _)
└── /var/www/html/
└── index.html ← Your Vibes app
- No server-side logic - pure static hosting
- Persistent disk - survives restarts
- HTTPS by default - exe.dev handles SSL for *.exe.xyz