@vibezro/cli
v0.0.4
Published
Vibezro CLI — manage projects, deploys, and logs from your terminal.
Downloads
19
Maintainers
Readme
@vibezro/cli
Vibezro CLI — manage projects, MCP servers, deploys, and logs from your terminal.
The same surface Claude gets through @vibezro/mcp, now as a traditional command-line tool. Use it on your laptop, in CI pipelines, or in shell scripts — anywhere a human or a Bash script needs to drive Vibezro.
Install
# global (recommended for daily use)
npm i -g @vibezro/cli
# one-off, no install
npx @vibezro/cli --helpBoth vibezro and the shorter vbz are on your PATH after install.
Authenticate
The CLI authenticates with a platform key (prefix vbz_pat_…) minted at app.vibezro.com/platform-keys. Keys are scoped to your account and never expire until you rotate them.
vbz login # interactive — paste your key at the prompt
vbz login --key vbz_pat_xxx # non-interactive (CI / scripts)Sanity:
vbz whoami # show the active user + redacted key
vbz logout # forget the local copyQuick start
# List everything you own
vbz project list
vbz mcp list <projectId>
# Create a new MCP under a project
vbz mcp create --project <projectId> --name pdf-extractor \
--runtime node22 --entrypoint src/index.ts
# Upload code
vbz file write <mcpId> src/index.ts --content "$(cat src/index.ts)"
vbz file bulk-write <mcpId> --dir ./src --mode replace
# Deploy + watch it live
vbz deploy wait <mcpId>
# Stream the running MCP's logs (Ctrl+C to stop)
vbz logs tail <mcpId>Command reference
Every command supports --json for machine-readable output (pipeable to jq, xargs, etc.) and --key <…> to override the stored credential for one-off calls.
Projects
vbz project list # all your projects
vbz project get <id> # one project's metadata
vbz project create --name <name> [--description <text>]
vbz project archive <id> [--yes] # soft-delete (skips confirm prompt with --yes)
vbz project redeploy-all-dirty <id> [--execute]
# dry-run by default; --execute appliesMCPs
vbz mcp list <projectId> # all MCPs in a project
vbz mcp get <id> # one MCP's metadata
vbz mcp create --project <projectId> --name <s> --runtime <r>
[--entrypoint <path>] [--description <text>]
vbz mcp update <id> [--name <s>] [--description <d>]
[--runtime <r>] [--entrypoint <path>]
vbz mcp archive <id> [--yes]
vbz mcp rotate-key <id> [--yes] # new key printed ONCE; save it.
vbz mcp lint-exposed # flags MCPs leaking secrets
vbz mcp suggest-runtime <mcpId> # recommends a runtime from the file treeFiles
vbz file list <mcpId>
vbz file read <mcpId> <path> # writes content to stdout (pipe-safe)
vbz file write <mcpId> <path> --content <s> # or pipe via stdin: `vbz file write … -`
vbz file bulk-write <mcpId> --dir <localDir> [--mode replace|merge]
# uploads a local directory; merge is default
vbz file delete <mcpId> <path> [--yes]Deploys
vbz deploy <mcpId> # kicks off, returns immediately
vbz deploy list <mcpId> [--limit <n>]
vbz deploy get <mcpId> <deployId>
vbz deploy wait <mcpId> [--timeout <s>] # streams progress until live/failedLogs
vbz logs <mcpId> [--deploy <id>] [--limit <n>]
# historical pull, newest last
vbz logs tail <mcpId> [--deploy <id>] # live stream; Ctrl+C to exit
vbz logs export <mcpId> <deploymentId> [-o file.md]
# full deploy log as Markdown (stdout by default)
vbz logs export <mcpId> --latest [-o file.md] # same, but pick the newest deploymentAuth resolution
The CLI looks for the key in this order, first hit wins:
--key vbz_pat_…flag on the command (one-off override)VIBEZRO_API_KEYenvironment variable (CI / scripts)- The credentials file written by
vbz login
Override the API base URL globally with --api-url https://... or VIBEZRO_API_URL=....
Credentials file
| OS | Path |
| ------------- | ------------------------------------ |
| macOS / Linux | ~/.config/vibezro/credentials.json |
| Windows | %APPDATA%\vibezro\credentials.json |
File mode is 0o600 (owner read/write only). It holds the raw API key — keep it out of backups and version control.
Recipes
Deploy from a CI pipeline
# .github/workflows/deploy-mcp.yml
- name: Deploy MCP via vbz
env:
VIBEZRO_API_KEY: ${{ secrets.VIBEZRO_API_KEY }}
run: |
npx @vibezro/cli mcp bulk-write $MCP_ID --dir ./dist --mode replace
npx @vibezro/cli deploy wait $MCP_ID --timeout 600Tail logs from a specific deploy
LATEST=$(vbz deploy list "$MCP_ID" --json | jq -r '.[0].id')
vbz logs tail "$MCP_ID" --deploy "$LATEST"Find every MCP that needs a redeploy
vbz mcp lint-exposed --json | jq '.[] | select(.violations | length > 0)'Rotate keys on a schedule
# Cron / systemd timer — rotate weekly and stash in your secret store
NEW_KEY=$(vbz mcp rotate-key "$MCP_ID" --yes --json | jq -r '.apiKey')
echo "$NEW_KEY" | gh secret set "MCP_${MCP_ID//-/_}_KEY"Streaming commands
Two commands stream progress in real time:
vbz deploy wait— replaces the spinner status as build phases advance (Preparing → Building → Publishing → Live). Exits 0 on success, non-zero on failure.vbz logs tail— prints each new log line on stdout as it arrives. Pipe-safe (vbz logs tail … | grep ERROR | awk …works). Press Ctrl+C to stop cleanly — the server-side stream is cancelled too.
Both honour the standard MCP cancellation semantics under the hood.
Output modes
Every command defaults to a human-readable layout (cli-table3 + chalk). Pass --json to get the raw payload:
$ vbz project list
ID NAME MCPs
e8f1a2-… weather-bots 3
b3c4d5-… pdf-extractor 1
Found 2 projects.
$ vbz project list --json
[
{ "id": "e8f1a2-...", "name": "weather-bots", "mcpCount": 3 },
{ "id": "b3c4d5-...", "name": "pdf-extractor", "mcpCount": 1 }
]vbz file read always writes raw content to stdout (no colors, no metadata) so you can redirect it: vbz file read $MCP src/index.ts > index.ts.
Troubleshooting
**No credentials found. Run \vbz login`.** — the credentials file is missing or unreadable. Re-run vbz login, or pass --key/ setVIBEZRO_API_KEY` for one-off use.
401 unauthorized — the platform key was revoked or rotated. Mint a fresh one at app.vibezro.com/platform-keys, then vbz login again.
Failed to authenticate during vbz login — usually a wrong-key paste or the api isn't reachable. Test with curl -I "$VIBEZRO_API_URL/api/v1/me" -H "Authorization: Bearer $YOUR_KEY".
vbz logs tail hangs forever — the MCP probably has no live deploy. vbz deploy list <mcpId> and confirm there's a live row; if there isn't, vbz deploy <mcpId> first.
Streaming commands not exiting on Ctrl+C — let it run one more second; the abort signal needs the in-flight HTTP request to settle before the process exits.
Requirements
- Node.js ≥ 20 (binary ships as ESM with a
#!/usr/bin/env nodeshebang). - A Vibezro account + at least one platform key from /platform-keys.
License
UNLICENSED. © Ronniery B. Correa. See LICENSE for terms.
Links
- Vibezro platform: vibezro.com
- Mint a key: app.vibezro.com/platform-keys
- Sibling MCP server:
@vibezro/mcp— same tool registry, MCP transport instead of argv - Source: github.com/ronniery/vibezro
- Issues: github.com/ronniery/vibezro/issues
