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 GoEmbed Harbor headlessRuntime & planner
Build a custom clientUse the Harbor ProtocolBuild 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.