-
Notifications
You must be signed in to change notification settings - Fork 1
CLI
Sia edited this page May 31, 2026
·
2 revisions
Single-file bash + curl wrapper around the REST API. Useful for shell
automation, CI/CD, and quick one-liners that don't need a full Go/Rust
binary.
Source: cli/vibe in the server repo.
# Option 1 — install system-wide
sudo install -m 0755 cli/vibe /usr/local/bin/vibe
# Option 2 — symlink for development
ln -s "$(pwd)/cli/vibe" ~/.local/bin/vibe
# Option 3 — drop in any PATH dir
cp cli/vibe ~/.local/bin/ && chmod +x ~/.local/bin/vibe| Tool | Required? | Why |
|---|---|---|
bash 4+ |
✅ | The script |
curl |
✅ | HTTP transport |
jq |
⛓ optional | Pretty-prints JSON responses (raw passthrough if missing) |
$ vibe login
Server URL [http://localhost:17880]:
Username: admin
Password: ********
TOTP code: 123456 # only if 2FA enabled
logged in as admin → http://localhost:17880
config saved to /home/wody/.config/vibe-coder/config
Behind the scenes:
- POST
/api/auth/login. - If 2FA is enabled the server returns
401 totp_required; the script detects the error code, prompts for a 6-digit code, and retries. - The returned token is stored in
$XDG_CONFIG_HOME/vibe-coder/config(defaults to~/.config/vibe-coder/config) withchmod 0600.
| Command | What it does |
|---|---|
vibe login |
Interactive login + token persistence |
vibe logout |
Delete the local config file |
vibe whoami |
Show server URL, username, token prefix |
vibe projects |
GET /api/projects (JSON) |
vibe status |
GET /api/server/status (JSON) |
vibe console <id> <prompt...> |
POST /api/projects/<id>/claude/console/prompt |
vibe build <id> |
POST /api/projects/<id>/build/debug |
vibe help |
Built-in help |
The console and build commands fire and return immediately — no
WebSocket streaming. Use the browser console page to watch live logs.
for pid in $(vibe projects | jq -r '.[].id'); do
echo "→ $pid"
vibe build "$pid"
donevibe console my-app "Run the unit tests; if they pass, build a debug APK."
sleep 60
vibe projects | jq -r '.[] | select(.id == "my-app") | .lastBuildStatus'vibe status | jq -r '.serverVersion'~/.config/vibe-coder/config is just three KEY='value' lines:
VIBE_SERVER_URL='http://localhost:17880'
VIBE_TOKEN='<sha256-hashed-token>'
VIBE_USERNAME='admin'chmod 0600 is enforced by the script. Hand-edit if you need to switch
servers without re-running vibe login.
- Same
device.lastSeenAtidle-timeout as browser sessions (security.sessionIdleTimeoutMinutes, default 30 min). After idle, the nextvibecall gets401— runvibe loginagain. -
vibe logoutonly removes the local config file. To revoke server-side (kill the token everywhere), use the browser at/devicesand revoke the device row namedvibe-cli.
- WebSocket subscribe. No live console log following. Run the browser in another window.
- Project create / register. Clone-from-git, template scaffolding, keystore generation — all browser-only for now.
-
File upload. Use
curl -Fdirectly against the multipart endpoint if you need this from a script. -
APK download.
vibe artifacts <id>is not implemented; the build-id-aware curl is documented in REST API Reference.
A real Go/Rust port that handles all of the above is on the roadmap (separate repo planned).
| Symptom | Likely cause | Fix |
|---|---|---|
vibe: not logged in. run 'vibe login' first. |
No config file | Run vibe login
|
login failed: invalid_credentials |
Wrong password (or 2FA disabled but you supplied TOTP) | Re-check |
login failed: totp_required |
Loop bug in your shell (very rare) | Re-run, enter code at the second prompt |
curl: (6) Could not resolve host |
DNS / firewall | Try http://<IP>:17880 directly |
| All API calls return 401 | Idle timeout |
vibe login again |
missing dependency: jq |
Optional, but you asked for jq install |
apt install jq or brew install jq
|
AGPL-3.0 (same as the server).