VibeHost
Guides

Deploy from Claude Code

Deploy to a live URL from inside Claude Code. Two paths: MCP server (interactive) or vibehost-deploy skill (scripted).

Claude Code has two ways to talk to VibeHost: the MCP server (OAuth, recommended for interactive use) and the vibehost-deploy skill (CLI-driven, recommended for repeatable workflows).

Both can coexist.

claude mcp add vibehost https://api.vibehost.com/mcp --transport http

The first tool call triggers an OAuth flow in your browser. After approval, Claude Code can call every VibeHost MCP tool, so it can deploy, promote, roll back, read logs, and manage custom domains. See the MCP guide for the tool → CLI cheatsheet.

To verify, run this and look for vibehost (http) — connected in the output:

claude mcp list

In Claude Code chat, describe what you want:

Deploy this directory to VibeHost as a new app called my-first-site.

Claude creates the app, uploads the files, deploys them and returns the URL. The tool calls behind that are described once, in Choosing an upload path. Whether Claude Code asks before each step depends on its permission settings (see Confirmation prompts).

Best for:

  • Interactive sessions ("ship this to production")
  • Cross-app operations ("rollback the staging channel on my-app")
  • One-off admin tasks ("add teammate@x.com as a deployer on hello-app")

Option 2: vibehost-deploy skill

The vibehost-deploy skill is a Claude Code skill that wraps the CLI.

The skill is the how-to, not the tool. It teaches Claude which vibehost commands to run, but it does not install the vibehost binary. Install the CLI as well, or the first deploy fails with command not found:

curl -fsSL -o vibehost-install.sh https://vibehost.com/install.sh
less vibehost-install.sh
sh vibehost-install.sh && rm vibehost-install.sh

The installer edits your shell profile, which a shell reads only when it starts, so it cannot change the shell you just ran it in. If it printed a PATH line, run that exact line (it is an export under bash/zsh and a set -gx under fish, where export is a syntax error), then verify:

export PATH="$HOME/.local/bin:$PATH"   # bash / zsh — use the printed line
vibehost --version
set -gx PATH "$HOME/.local/bin" $PATH  # fish — use the printed line
vibehost --version

See the CLI reference for what the installer touches.

Then install the skill as a plugin. These are slash commands, so run them inside the Claude Code prompt, not in a shell. The /plugin marketplace commands need a recent Claude Code (verified on 2.1.150):

/plugin marketplace add gntc-labs/skills
/plugin install vibehost

Or, from a terminal (works for Cursor / Codex / Claude Code) via the open skills tool:

npx skills add gntc-labs/skills --skill vibehost-deploy

The skill knows:

  • The CLI command names + flags
  • The auth flow (vibehost login if whoami returns UNAUTHENTICATED)
  • Which deploy path to pick based on the project layout
  • How to read CLI JSON output and recover from common errors

Best for:

  • Repeatable workflows (the skill activates automatically when you say "deploy this to VibeHost")
  • CI-style automation in Claude Code
  • Cases where you want stdout/stderr from the CLI, not abstracted tool calls

When to pick which

SituationUse
First-time setupMCP (sign in through the browser, no token to paste)
Daily deploys from your editorEither
Cross-machine or CISkill + a PAT (see Personal access tokens)
You want Claude to read deploy logs interactivelyMCP (get_logs tool)
You want Claude to build, then deploy in one shell sessionSkill (it can run npm run build first)
You want zero confirmation promptsSkill (the CLI doesn't prompt unless interactive)

End-to-end first deploy from Claude Code

Assuming you have an existing project to ship:

  1. Add the MCP server (one-time):

    claude mcp add vibehost https://api.vibehost.com/mcp --transport http
  2. Open the project in Claude Code:

    cd ~/projects/my-blog
    claude
  3. Tell Claude what you want:

    Deploy this folder as a new VibeHost app called my-blog. It's a Vite + React build. After deploy, give me the live URL and add a custom domain blog.example.com.

  4. Approve the OAuth prompt (first tool call only). Claude opens a browser, you click approve, and the flow returns to Claude Code.

  5. Confirm the writes as they come. Claude creates the my-blog app, runs npm run build, uploads ./dist and deploys it, then attaches blog.example.com and prints the CNAME record. The tool calls behind the upload and deploy are described once, in Choosing an upload path.

  6. Set the DNS record at your registrar (Claude tells you exactly what to add), then:

    Verify the domain.

    Claude calls verify_custom_domain and reports cert status.

Common prompts

Deploy this project

"Deploy this directory to VibeHost as a new static site called hello-mintlify."

Roll back production

"Roll back my-app's production channel to the previous deploy."

Add a custom domain

"Add www.example.com as a custom domain on my-app and tell me what DNS record to add."

Tail logs

"Stream the latest logs for my-app's production channel."

Audit grants

"List all the apps in my workspace and tell me who has access to each."

Open a PR preview

"Build this branch and deploy it to a pr-123 channel on the marketing app."

Gotchas

  • Installing the skill does not install the CLI. The skill is instructions, and the CLI is the binary those instructions drive. If Claude reports the skill installed but vibehost is not found, run the installer above.
  • Skill autoload depends on your .claude/ config. If the skill isn't activating on "deploy this to VibeHost", check .claude/settings.json has it listed and your Claude Code is recent enough for plugins (the /plugin steps above were verified on 2.1.150).
  • MCP and skill can both be installed. Claude picks based on the request shape. "Deploy this" tends to trigger the skill; "list my apps" tends to trigger MCP. You can be explicit: "Use the VibeHost MCP server to list my apps."
  • OAuth re-auth every 30 days. Refresh token rotation is 30 days. If MCP starts returning UNAUTHENTICATED after a long gap, click the re-auth prompt.
  • Workspace switching. OAuth-issued tokens are workspace-scoped at first login. To switch workspaces, run claude mcp remove vibehost && claude mcp add vibehost https://api.vibehost.com/mcp --transport http and re-auth into the other workspace.

See also

On this page