α Alpha · expect bugs

Harbor

The environment your agents run in — not another agent to learn.

A self-hosted control plane that gives any AI agent persistent context, room-scoped tool access, and a full audit trail — entirely on your machine, with no vendor lock-in.

harbor — alpha
$ npm i -g ./harbor-tugboat-0.1.0.tgz $ harbor init && harbor setup environment ready · state in ~/.agent-env $ harbor install --for claude-code --write added harbor → claude-code MCP config (backed up) # skill loads now route through Harbor: gated, budgeted, audited

The agent environment,
not the agent.

Every AI coding tool wants to own your workflow. Harbor inverts that — it's the environment your agents run inside, not another agent you have to learn. Bring your own models, your own tools, your own way of working.

Progressive Skill Loading

Agents don't bulk-load skills. Harbor serves a ~50-token index first, a ~3K digest when a skill looks relevant, and the full SKILL.md only when it's actually used — so a large skill pool costs almost nothing until something needs it.

index ~50 tokdigest ~3Kfull on demand

Self-Hosted

Runs entirely on your machine — no telemetry, no cloud. All state lives in local SQLite (scheduler, sessions, budgets, audit) you can open and query yourself. A cooperative control plane, not an OS sandbox.

Agent-Neutral

Works with Claude Code, Codex, OpenCode, Cursor, goose — or any MCP-compatible agent. Harbor provides the runtime, context, and tool wiring underneath, so you switch agents without rebuilding your setup.

Budget Enforcement

Every session carries a token budget, checked and debited in-process on each skill load. Tracked in real time on the local dashboard — no agent quietly blows past its limit.

Pluggable Tools

Tools are just MCP servers or local scripts. Harbor discovers and wires them — filesystem, web search, code execution — no framework gymnastics.

Self-Maintaining

A file-watcher daemon keeps your agent context in sync: when a skill or room changes, Harbor regenerates the AGENTS.md / CLAUDE.md beacons and per-room skill indexes automatically — no manual step. Recurring upkeep runs through the SQLite-backed scheduler.

Every skill load
passes the gate.

Harbor doesn't run your agent — it stands in front of the one thing that matters: what the agent can load. Every request is checked against the room, debited from the budget, and written to the audit trail before it returns.

read_skill("summarize")session · room: research
Room gate
in room
Budget
1,623 / 100k
Audit
allow logged
✓ loaded1,623 tokens
read_skill("deploy-prod")session · room: research
Room gate
not in room
Audit
deny logged
✗ deniedaudited
Set up Harborbash
# Requires Bun ≥ 1.1 · alpha — expect breakage # Install from the alpha tarball (npm release lands at beta) npm i -g ./harbor-tugboat-0.1.0.tgz # Stand up the environment harbor init # seed agent_map.md + AI beacons harbor setup # build the directory tree from config harbor check # verify everything is wired # Print an agent's MCP config (add --write to apply) harbor install --for claude-code
config.tomltoml
# config.toml — rooms, skills, budgets [paths] home = "~" state_dir = "~/.agent-env" # A room scopes which skills + MCP servers a session reaches [skills.rooms.research] skills = ["web-search", "summarize"] capabilities = ["read_skill", "list_skills"] [[skills.rooms.research.mcp.servers]] name = "filesystem" command = "npx" [budgets] default_session_limit = 100000

Read 50 tokens,
not the whole skill.

Most setups paste every skill into the prompt up front. Harbor serves skills in tiers — agents read a tiny index first and expand only what they actually use, so a large skill pool stays nearly free until something needs it.

Index~50 tokens
one line per skill
Always loaded — the agent knows every skill exists.
Digest~3K tokens
summary + when to use it
Loaded when a skill looks relevant to the task.
Full SKILL.mdcomplete file
full instructions + examples
Loaded only on demand — and that load is gated, budgeted, audited.

The full file is fetched through the same gate you saw above — progressive loading and access control are the same mechanism. You pay a skill's tokens only at the moment an agent actually opens it.

A control plane,
not a sandbox.

Harbor governs how cooperating agents load skills, spend budget, and enter rooms — and records every decision. It is not a cage for a hostile process. Here is exactly where the line sits.

What Harbor enforces

Gated skill access
Every skill load runs a room + budget + audit check.
In-process budgets
Token limits debit on the hot path — no quiet overspend.
Full audit trail
Every allow and deny logged with room, session, reason.

Where the boundary ends

Not an OS sandbox
Raw file access can read a skill directly, skipping the gate.
Rooms are cooperative
The room comes from AGENT_ENV_ROOM; Harbor trusts it.
Open by default
A room with no skill list allows all; gating is opt-in.
Harbor makes the cooperative path the easy, observable, budgeted one. It does not claim to be unbypassable OS-level isolation — that is a separate layer, on the roadmap, not in 0.1.

From zero to running
in minutes.

No accounts to create. No SaaS to sign up for. Just install, configure, and go.

01 — Install

Grab the tarball

Alpha ships as a tarball — npm i -g ./harbor-tugboat-0.1.0.tgz. Needs Bun ≥ 1.1. No Docker, no cloud, no account.

02 — Configure

One TOML file

config.toml defines your rooms, the skills and MCP servers each can reach, and per-session budgets.

03 — Connect

Wire an agent

Harbor exposes an MCP server and a CLI. Connect Claude Code, Codex, Cursor, goose, or any MCP-native agent. No adapter needed.

04 — Ship

Build

Your agent gets persistent context, gated tool access, in-process budgets, and a full audit trail — out of the box.

Built by AI. For AI.

Harbor was designed, coded, and shipped by AI agents — the same kind it's designed to manage. A dogfood product in the truest sense.