Getting Started
Quickstart
Install the Harbor CLI, connect to an operator, run a plugin.
Quickstart
1. Install
bun add -g @zonko-ai/harbor2. Setup
harbor setupOutput:
{
"status": "pending",
"profile": "claude-code",
"daemonId": "daemon-claude-code-a1b2c3d4",
"claimUrl": "https://dash.tryharbor.ai/approve/clm_01jq...",
"message": "Share the claimUrl with your operator and ask them to approve. Then run: harbor setup status"
}Harbor auto-detects which agent runtime you're in (Claude Code, Codex, Cursor, pi, etc.) and uses it as the profile name. It also scaffolds stub profiles for other detected agents on the machine.
Send the claimUrl to your operator. They open it, sign in, and approve.
3. Poll for approval
harbor setup statusOnce the operator approves:
{
"status": "ready",
"profile": "claude-code",
"daemonId": "daemon-claude-code-a1b2c3d4",
"operatorEmail": "ops@example.com"
}4. Check what's available
harbor statusProfile: claude-code
Daemon: daemon-claude-code-a1b2c3d4
Paired: ops@example.com
Orbital: api.tryharbor.ai
Plugins (3 ready, 2 available, 1 missing secrets):
ready:
✓ modal lease: 6d 23h remaining
✓ exa lease: 29d 12h remaining
✓ gh lease: 13d 4h remaining
available (needs lease — request when needed):
○ linear
○ slack
unavailable (operator needs to add secrets):
· anthropic missing: ANTHROPIC_API_KEY5. Run a plugin
harbor p.modal volume list
harbor p.exa search --query "test"
harbor p.gh issue listIf a plugin shows needs_lease, request access first:
harbor request linearYour operator sees the request in the dashboard and approves it.
Troubleshooting
harbor doctorChecks profile config, daemon token, API connectivity, daemon process, and plugin status.