VibeHost
Guides

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 PowerShell

Config 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:

CodeMeaning
0Success
1Unknown error
2Auth (login required, EMAIL_NOT_VERIFIED)
3Validation (bad input, missing field)
4Upstream (API returned 5xx, runtime down)
5Network (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 logout

Apps

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 URL
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-42

Logs

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 10m

Custom 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 hostname

Environment variables

vibehost env set KEY=value --app my-app
vibehost env ls --app my-app
vibehost env rm KEY --app my-app

Redirects

vibehost redirects list --app my-site
vibehost redirects add /old-path /new-path --app my-site
vibehost redirects remove <ruleId> --app my-site

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-site

Pull (remix a teammate's deploy locally)

vibehost pull my-site                            # downloads the live static artifact
                                                 # → ./my-site/, ready to edit + redeploy

pull 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 --json

Reports: 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>.

On this page