Use this skill when the agent needs to connect to Harbor for the first time or verify an existing connection.
What Harbor is
Harbor is a control plane that lets operators grant AI agents access to tools and services (Modal, GitHub CLI, Exa search, etc.) through a lease-based permission system. The agent runs harbor CLI commands. The operator approves access through a web dashboard.
Rules
- Use
harborCLI commands only. Never access Harbor internals. - If Harbor returns a pending approval, report the URL and wait.
- After approval, run
harbor setup statusto retrieve the daemon token. - Never assume access to a plugin — check with
harbor statusfirst.
Setup flow
# 1. Pair this machine with an operator
harbor setup --profile <name>This prints a claim URL like https://dash.tryharbor.ai/approve/<id>. The operator must open this URL, sign in, and click "Approve this daemon".
# 2. Check if the operator approved
harbor setup status --profile <name>If status: approved, the daemon token is saved locally. If status: pending, the operator hasn't approved yet — wait and retry.
# 3. Verify the connection
harbor whoami --profile <name>Shows the profile name, daemon ID, operator email, and available plugins.
# 4. Check what plugins are available
harbor status --profile <name>
harbor plugins --profile <name>Lists which plugins the operator has enabled and whether they have active leases.
If access is denied
# Request access to a plugin you need
harbor request <plugin-slug> --profile <name>This sends a request to the operator. They can approve it in the dashboard. Common plugin slugs: infra.modal, services.gh, services.linear, search.exa.
Example: full first-time setup
harbor setup --profile myagent
# prints: claimUrl: https://dash.tryharbor.ai/approve/abc123
# → tell the operator to open that URL and approve
# after operator approves:
harbor setup status --profile myagent
# → status: approved, daemonToken saved
harbor whoami --profile myagent
# → profile: myagent, operator: user@company.com
harbor status --profile myagent
# → shows available plugins and lease statusProfile management
Profiles are stored in ~/.harbor/profiles/<name>.json. Each profile pairs with one operator. A machine can have multiple profiles.
--profile defaultis used when no profile is specified- The daemon process auto-starts on first plugin run and auto-exits after 5 minutes idle
- The daemon connects via WebSocket to Harbor for real-time control