Skip to content

How do I…? ​

You know what you want to do. This page tells you which page does it.

Harbor's working documentation lives in three tracks, each answering a different shape of question. This page maps jobs to pages — it distills nothing and links everything. If you came here to learn rather than to do, jump to Concepts or start fresh at Get Started.

How the working docs are organized ​

TrackAnswersShapeIndex
Operator skills"How do I run this with the CLI / Console?"Step-by-step playbooks for a harbor operator/skills/
Recipes"How do I do this in Go?"Copy-paste how-tos against the runtime API/recipes/
Protocol"How do I drive this over the wire?"Choreographies against the versioned Protocol — curl is a complete client/protocol/

Why three tracks

The split mirrors Harbor's four-layer architecture: the CLI and Console are both Protocol clients of a headless Runtime, and the Runtime is also an embeddable Go library. So the same capability shows up three ways — as an operator command, as a Go call, and as a wire exchange. Pick the track that matches how you're holding Harbor.

I want to… ​

Each row points at the operator skill to run it, the recipe to code it, and the concept to understand it. Cells are blank where a track doesn't cover that job — that's a signal, not an omission.

I want to…Operator skillGo recipeConcept
Start a projectScaffold an agentScaffold an agentArchitecture
Build the agentDefine the agent YAMLConfigure a plannerRuntime & planner
Wire an LLMWire the LLM provider— see config referenceGovernance & security
Add a toolAdd an in-process toolDefine a toolTools
Configure memory & skillsConfigure memory and skillsUse memory & skills from GoMemory & skills
Drive it interactivelyRun the dev loop · Drive the PlaygroundRun harbor devSessions, tasks & events
Steer & pause a runUse the Harbor ProtocolSteer & resume a runPause, resume & steering
Observe & debugObserve with the ConsoleObserve an embedded runtimeObservability
Embed Harbor in Go—Embed Harbor headlessRuntime & planner
Build a custom clientUse the Harbor Protocol—Build a client
Validate & shipValidate and packageTest an agentProductionization playbook
Handling heavy outputs and attachments

Two adjacent jobs that don't fit the table above: when a tool returns large payloads, route them through the artifact store and control how they reach the model. See Control attachment disposition and Provider-native attachments, backed by the artifacts & context-safety concept — a runtime-wide invariant fails loudly rather than letting raw heavy content reach the LLM. For semantic recall, see Embed & retrieve.

Browse by surface ​

Every operator skill carries a metadata.surface tag — the part of Harbor it plays against. If you know the surface but not the verb, scan here, then open the full skills index.

SurfaceCoversStart with
cliThe harbor binary — scaffold, dev, validate, packageRun the dev loop
agent-yamlThe agent manifest the runtime loadsDefine the agent YAML
toolsThe transport-agnostic tool catalog (in-process, HTTP, MCP, A2A)Add an in-process tool
llmThe LLM provider edgeWire the LLM provider
memoryThe declared-policy, identity-scoped memory subsystemConfigure memory and skills
playgroundThe interactive single-agent chat surfaceDrive the Playground
consoleThe observability & control planeObserve with the Console
protocolThe versioned wire contractUse the Harbor Protocol

Browse the full tracks ​

When you'd rather read a track end-to-end than chase a single job:

New here? ​

Two on-ramps

  • Just want it running? Get Started walks the shortest path from clone to a live agent.
  • Want the why first? Concepts explains the design — the swappable planner, the mandatory identity triple, the unified pause primitive — before you touch a command. For design authority, everything defers to the RFC.

Apache-2.0 licensed — see LICENSE.