VibeHost
Guides

Quickstart

From zero to a live URL in under two minutes — install, sign in, deploy, share, iterate.

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), jump to MCP — but doing this once locally builds the right mental model for everything else.

1. Install the CLI

curl -fsSL https://vibehost.com/install.sh | sh
iwr -useb https://vibehost.com/install.ps1 | iex
vibehost --version

You should see a version like 4.x.x. If "command not found", reopen your terminal — the installer wrote to ~/.vibehost/bin and may have updated your $PATH.

The installer drops a single static binary; no Node runtime needed. Config lives at ~/.config/vibehost/config.json (mode 600 — never shared, never committed).

2. Sign in

vibehost login

The CLI opens vibehost.com/login/device and prompts you to approve. Google sign-in works out of the box. New email accounts will be prompted to verify their inbox before deploys are allowed.

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 secret manager.

vibehost whoami

Shows 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 workspace-scoped, lowercase, 2–40 chars ([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 --json

inspect is the single most useful agent-facing command — it returns runtime, visibility, password status, channels, recent deployments, custom domains, grants, and active share links in one call. You'll use it a lot.

4. Deploy

We need something to deploy. The simplest possible site:

mkdir -p hello && echo '<h1>Hello, VibeHost</h1>' > hello/index.html

Now deploy:

vibehost deploy ./hello --app my-first-site

You'll see something like:

{
  "ok": true,
  "data": {
    "id": "depl_abc123...",
    "url": "https://my-first-site-your-workspace.vibehost.space",
    "immutableUrl": "https://depl_abc123.vibehost.space",
    "deployKind": "static",
    "status": "healthy"
  }
}

Two URLs to understand:

  • url — the alias URL. Moves to whatever's current on this channel. Share this with humans.
  • immutableUrl — the permanent URL for this exact artifact. Use this when you need to reference a specific version that won't change under you (bug reports, code review, archived demos).

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

5. Share it

By default new apps are private — only you can view. Three ways to share:

vibehost app visibility my-first-site public

Anyone with the URL can view. No sign-in required.

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 to be indexed, attach a custom domain — the noindex 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-site

They sign in with Google / email and can view. Roles: viewer (read-only), deployer (push + promote + rollback), admin (above + grants + custom domains). Invite-before-signup works — 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 deploy

The alias URL refreshes immediately (within ~5s of healthy status). The previous deployment is still accessible at its own immutableUrl — VibeHost never deletes deployments on redeploy, only the channel alias moves.

Roll back if v2 is broken:

vibehost rollback --app my-first-site

Alias snaps back to v1's immutableUrl. No re-upload, instant.

What just happened

Common first-deploy failures

SymptomLikely causeFix
EMAIL_NOT_VERIFIEDPassword signup, email not confirmedvibehost auth resend-verification, click link
app already existsName collision in your workspacePick another name (workspace-scoped uniqueness)
TARBALL_INVALID: no index.htmlBuild dir doesn't have index.html at rootPoint deploy at the build output, not the source
RATE_LIMITEDMore than ~30 deploys/min/workspaceWait 60s, or batch your changes into one deploy
cert=NOT_FOUND on custom domainDNS not propagated yetvibehost domain verify again in 5–10 min

Hit something else? Run vibehost doctor — it probes auth, API reachability, version skew, and config gotchas in one shot.

Next

On this page