VibeHost
Guides

Deploy from Hermes Agent

Use VibeHost from inside Hermes Agent, Nous Research's open-source self-improving terminal agent. MCP server or vibehost CLI as a tool.

Hermes Agent (github.com/NousResearch/hermes-agent) is Nous Research's open-source coding agent. It is built around a self-improving skill loop, a native MCP client, and multiple terminal backends (local, Docker, SSH, Modal, Vercel Sandbox, etc.), and its MCP config is documented in the MCP setup reference. It talks to VibeHost two ways: through our MCP server (interactive, OAuth) or through the vibehost CLI wrapped as a tool (scripted, PAT).

Add VibeHost as an OAuth-backed MCP server from a local interactive terminal:

hermes mcp add vibehost --url https://api.vibehost.com/mcp --auth oauth

Hermes opens a browser for OAuth 2.1 + PKCE authorization, writes the server under mcp_servers in ~/.hermes/config.yaml, discovers the available tools, and lets you choose whether to enable all tools or only a subset. The generated config entry looks like this; if you choose only a subset, Hermes records that under tools.include using the upstream MCP tool names:

mcp_servers:
  vibehost:
    url: "https://api.vibehost.com/mcp"
    auth: oauth
    enabled: true
    tools:
      include:
        - list_workspaces
        - list_apps
        - create_app
        - get_app
        - check_blobs_missing
        - request_upload
        - deploy
        - get_deployment

After setup, reload MCP with /reload-mcp, or restart Hermes. The interactive CLI can also auto-detect mcp_servers changes and reload them, but /reload-mcp is the portable path across Hermes frontends. After approval, Hermes has access to every VibeHost tool, so it can deploy, promote, roll back, read logs, and manage custom domains.

In a Hermes session, describe what you want:

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

Hermes picks the right VibeHost MCP tools and returns the live URL. In the VibeHost MCP server the tools are named create_app, deploy, etc.; inside Hermes they are registered with a server prefix such as mcp_vibehost_create_app.

Install the CLI:

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

Install the vibehost-deploy skill so Hermes auto-discovers it and picks the right vibehost commands for you:

npx skills add gntc-labs/skills --skill vibehost-deploy -g -y -a hermes-agent

For local interactive use, sign in once with the CLI:

vibehost login
vibehost whoami --json

vibehost login opens a browser approval flow and stores the CLI token in ~/.config/vibehost/config.json.

For CI or unattended scripts (Hermes gateway, cron, Docker / Modal / Vercel Sandbox backends), use a Personal Access Token instead. Store the token in Hermes' env file so every Hermes session picks it up:

hermes config env-path

Add the secret to that .env path:

VIBEHOST_TOKEN=vh_pat_...

Restart the Hermes CLI or gateway process after changing the env file so the running process loads the new token:

hermes gateway restart

Hermes can shell out to vibehost deploy ./dist, vibehost app inspect, etc. through its terminal-tool interface. Every command takes --json and returns {ok, data | error}, which an agent can parse without reading prose. See the CLI reference. For PAT-driven automation, mint the PAT in the workspace you want to act on. A PAT is bound to one workspace at creation, so --workspace <slug> cannot move it elsewhere and returns TOKEN_WORKSPACE_MISMATCH if it disagrees. Under vibehost login (session credentials), --workspace <slug> is the right way to target a workspace without an interactive current-workspace selection:

# PAT: the workspace comes from the token, no flag needed.
VIBEHOST_TOKEN=vh_pat_… vibehost deploy ./dist --app my-hermes-app --json

# Logged-in session: one-off override, persists nothing.
vibehost --workspace acme app inspect my-hermes-app --json

When to pick which

SituationUse
First-time setupMCP (browser sign-in, no token to paste)
Interactive deploys from HermesMCP
Local shell-driven deploysCLI after vibehost login
CI / unattended workflows (gateway, cron)CLI + VIBEHOST_TOKEN env
You want every write to prompt for confirmationMCP
You want raw stdout / stderr from the deployCLI

Both can coexist.

See also

On this page