Quickstart
Install the CLI, sign in, deploy a static site to a live URL, share it, and redeploy.
This guide walks the full first-time loop: install the CLI, sign in, deploy a static site, share it, and iterate. Every step shows the verification you should see, so you know whether to continue or troubleshoot.
If you'd rather skip the local CLI and use a coding agent (Claude Code, Codex, Cursor, Antigravity, Antigravity CLI, Windsurf, OpenCode, Copilot CLI, Hermes Agent) or a chat client (ChatGPT, Claude Desktop, Gemini Spark), go to MCP. Doing this once locally is still worth it, because every other path works the same way underneath.
1. Install the CLI
Download the installer first so you can inspect it before running. It is user-level only (no sudo) and verifies the CLI binary's SHA256 before installing:
curl -fsSL -o vibehost-install.sh https://vibehost.com/install.sh
less vibehost-install.sh
sh vibehost-install.sh && rm vibehost-install.shInvoke-WebRequest -UseBasicParsing https://vibehost.com/install.ps1 -OutFile vibehost-install.ps1
Get-Content .\vibehost-install.ps1
& .\vibehost-install.ps1
Remove-Item .\vibehost-install.ps1vibehost --versionYou should see a version like 4.x.x. If you get "command not found", the installer added the CLI to your PATH only for shells started after it ran. Run the PATH line it printed, or open a new terminal. ~/.vibehost/cli/vibehost always works regardless of PATH.
The installer drops a single static binary, so you don't need a Node runtime. Config lives at ~/.config/vibehost/config.json with mode 600. Don't share or commit it.
2. Sign in
vibehost loginThe CLI opens vibehost.com/login/device and prompts you to approve. Google sign-in needs no setup. A new email account has to verify its inbox before it can deploy.
vibehost login --email you@example.com --password "$VIBEHOST_PASSWORD"Use this for CI runners that can't open a browser. Never paste a password as a literal. Read it from an env var or a secret manager.
vibehost whoamiShows your user id, current workspace, current team (if any), and what abilities your session has. If you see (no workspace), run vibehost workspace create my-ws or accept an invite first.
Hit EMAIL_NOT_VERIFIED (exit code 2) on a fresh password signup?
Run vibehost auth resend-verification. OAuth (Google) signups
skip the gate.
3. Create your first app
Apps are the unit of deployment. Names are unique within a workspace, lowercase, and 2 to 40 characters long ([a-z][a-z0-9-]*).
vibehost app create my-first-site --display-name "My First Site" --description "Hello-world static site from the quickstart"The name is the immutable slug used in URLs; --display-name and --description are optional display metadata the dashboard shows (it falls back to the name when unset). Change them any time with vibehost app update.
Verify:
vibehost app inspect my-first-site --jsoninspect is the agent-facing command you'll use most. It returns runtime, visibility, password status, channels, recent deployments, custom domains, grants, and active share links in one call.
4. Deploy
You need something to deploy. This makes a one-page site:
mkdir -p hello && echo '<h1>Hello, VibeHost</h1>' > hello/index.htmlNow deploy:
vibehost deploy ./hello --app my-first-siteYou'll see something like:
{
"ok": true,
"data": {
"id": "depl_abc123...",
"url": "https://my-first-site-your-workspace.vibehost.space",
"immutableUrl": null,
"deployKind": "static",
"status": "healthy"
}
}The response has two URL fields.
urlis the alias. It moves to whatever deployment is current on this channel, so share this one with people.immutableUrlisnull. It's meant to be a URL pinned to this exact deployment, but vibehost.com doesn't create one yet. To refer to this exact version, for example in a bug report, keep the deploymentid.
Open the alias URL in a browser. You should see "Hello, VibeHost".
Link the directory so you don't need --app every time:
cd hello && vibehost link --app my-first-site
vibehost deploy # uses linked app from .vibehost/project.json5. Share it
New apps are private by default, so only you can view them. There are three ways to share one.
vibehost app visibility my-first-site publicAnyone with the URL can view it without signing in.
By default we stamp X-Robots-Tag: noindex, nofollow on every *.vibehost.space tenant response, even when visibility is public, so the app won't appear in Google or Bing. robots.txt allows crawling so the noindex header is the one search engines see. If you want a public app indexed, attach a custom domain. The noindex header doesn't apply there. Per-app opt-in for the platform subdomain is on the roadmap.
vibehost app grants add-email teammate@example.com viewer --app my-first-siteThey sign in with Google or email and can view the app. Roles: viewer (read-only), deployer (push + promote + rollback), admin (all of that, plus grants and custom domains). You can invite someone before they sign up. The email doesn't need to belong to an existing user.
6. Iterate
Change the HTML and redeploy:
echo '<h1>Hello, world. v2.</h1>' > hello/index.html
vibehost deployThe alias URL points at the new deployment within about 5 seconds of it turning healthy. A redeploy never deletes the previous deployment. Only the channel alias moves.
Roll back if v2 is broken:
vibehost rollback --app my-first-siteThe alias moves back to v1. Nothing is uploaded again.
What just happened
Common first-deploy failures
| Symptom | Likely cause | Fix |
|---|---|---|
EMAIL_NOT_VERIFIED | Password signup, email not confirmed | vibehost auth resend-verification, click link |
app already exists | Name collision in your workspace | Pick another name (workspace-scoped uniqueness) |
TARBALL_INVALID: no index.html | Build dir doesn't have index.html at root | Point deploy at the build output, not the source |
RATE_LIMITED | More than ~30 deploys/min/workspace | Wait 60s, or batch your changes into one deploy |
cert=NOT_FOUND on custom domain | DNS not propagated yet | Run vibehost domain verify again in 5 to 10 minutes |
For anything else, run vibehost doctor. It checks auth, API reachability, version skew, and common config mistakes.
Next
- CLI reference covers every command and flag.
- Channels explains preview deploys, promote, and rollback.
- Custom domains shows how to bring your own hostname.
- Grants and visibility controls who sees what.
- MCP lets you do everything above from Claude, Cursor, or ChatGPT.
- Recipes walks through end-to-end scenarios such as an MVP demo, client delivery, and CI/CD.
- Personal access tokens let you call the API from any HTTP client.