CLI reference
Every vibehost command. All accept --json for machine-readable output.
Install
curl -fsSL https://vibehost.com/install.sh | sh # macOS / Linux
iwr -useb https://vibehost.com/install.ps1 | iex # Windows PowerShellConfig lives at ~/.config/vibehost/config.json (chmod 600). Multi-instance support via vibehost init <url>.
JSON output and exit codes
Every command takes --json. Success returns {ok: true, data}, error returns {ok: false, error: {code, message, details?}}. Exit codes:
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Unknown error |
| 2 | Auth (login required, EMAIL_NOT_VERIFIED) |
| 3 | Validation (bad input, missing field) |
| 4 | Upstream (API returned 5xx, runtime down) |
| 5 | Network (DNS, timeout, cert) |
LLM clients should branch on error.code (stable SCREAMING_SNAKE_CASE), not error.message.
Auth
vibehost init https://api.vibehost.com # set base URL (multi-instance)
vibehost register --email you@x.com --password <pw>
vibehost login # device flow, supports Google
vibehost login --email you@... --password <pw> # skip device flow
vibehost whoami # identity + team + abilities
vibehost auth resend-verification # re-mail the verification link
vibehost logoutApps
vibehost app create my-site # default runtime: static
vibehost app create my-app --runtime nextjs
vibehost app list
vibehost app delete --app my-site # prompts; type the app name to confirm
vibehost app delete my-site --force # skip prompt (CI / non-TTY)
vibehost app qr --app my-site # terminal QR of the deployed URL
vibehost app qr https://example.com --png ./qr.png # QR of any URLLink + Deploy
vibehost link --app my-site # save to .vibehost/project.json
vibehost deploy # cwd, app resolved from link
vibehost deploy ./public # explicit dir
vibehost deploy --channel pr-42 # preview channel
vibehost deploy --no-chunked # raw tar upload (default: chunked)
vibehost deploy --build server # opt into sandboxed Builder Job--build server dispatches a gVisor-sandboxed Builder Job for machines
that can't build locally (constrained agents). Default is --build client — your machine builds, the server only accepts the artifact.
Channels, promote, rollback
vibehost channel list --app my-site
vibehost channel delete pr-42 --app my-site
# Promote launches a specific (already-uploaded) deployment into a channel.
vibehost promote <deploymentId> --to-channel production --app my-site
# Rollback flips the channel alias to the previous healthy deployment.
vibehost rollback --app my-site # production by default
vibehost rollback --app my-site --channel pr-42Logs
vibehost logs --app my-app # tail latest deployment
vibehost logs my-app # positional form
vibehost logs --app my-app --deployment <id> # specific deployment
vibehost logs --app my-app --since 10mCustom domains
vibehost domain list --app my-site
vibehost domain add blog.example.com --app my-site # prints DNS instructions
vibehost domain verify blog.example.com --app my-site # re-check DNS TXT after you've set it
vibehost domain remove blog.example.com --app my-site
vibehost domain show blog.example.com # status of any hostnameEnvironment variables
vibehost env set KEY=value --app my-app
vibehost env ls --app my-app
vibehost env rm KEY --app my-appRedirects
vibehost redirects list --app my-site
vibehost redirects add /old-path /new-path --app my-site
vibehost redirects remove <ruleId> --app my-siteGrants, visibility, password, share links
App access lives under vibehost app …. Two grant axes (team + email),
plus visibility (public / workspace / private), plus optional
password gate, plus optional share-link cookies. All compose
AND-style — Hard Rule #8.
# Team + email grants
vibehost app grants ls --app my-site # list both axes
vibehost app grants add-team <team-slug> deployer --app my-site
vibehost app grants remove-team <team-slug> --app my-site
vibehost app grants add-email teammate@x.com viewer --app my-site
vibehost app grants remove-email teammate@x.com --app my-site
vibehost app grants self admin --app my-site # grant your own user
# Visibility
vibehost app visibility public --app my-site # public | workspace | private
# Password gate
vibehost app password set <password> --app my-site
vibehost app password clear --app my-site
vibehost app password status --app my-site
# Share links (per-link cookies, expirable)
vibehost app share-link create --app my-site
vibehost app share-link ls --app my-sitePull (remix a teammate's deploy locally)
vibehost pull my-site # downloads the live static artifact
# → ./my-site/, ready to edit + redeploypull makes deployments source-of-truth: a teammate with grant downloads a static deploy, edits, redeploys. No separate repo needed.
Doctor
vibehost doctor # diagnose CLI / API / network
vibehost doctor --jsonReports: auth state, API reachability, version skew, common config gotchas.
Full command list
Run vibehost --help or any vibehost <cmd> --help for the authoritative list. Every command supports --json, --help, and --workspace <id>.