Durable
Run state is persisted, not held in a goroutine. Pauses survive a process restart via trajectory checkpoints; serialization failures are loud (ErrUnserializable), never silent.
A runtime SDK and one static binary. Agents that pause for approval, survive restarts, and stay observable — without the agent's author writing orchestration code.
go install github.com/hurtener/Harbor/cmd/harbor@latest
mkdir my-agent && cd my-agent
harbor init # tiered harbor.yaml + companion docs
# edit harbor.yaml — uncomment one LLM provider block + set its API key env var
harbor validate ./harbor.yaml # fail-loud config check
harbor scaffold --name my-agent # materialise the Go project + worked agent + test
harbor dev # local runtime + protocol server on :18080The first-five-minutes chain walks this path step by step: scaffold-a-harbor-agent → run-the-dev-loop → drive-the-playground.
import (
_ "github.com/hurtener/Harbor/sdk/drivers/prod"
"github.com/hurtener/Harbor/sdk/assemble"
"github.com/hurtener/Harbor/sdk/config"
)
cfg := config.Defaults()
// populate cfg.LLM, validate with cfg.ValidateCore() ...
stack, err := assemble.Assemble(ctx, cfg, assemble.Options{})No CLI, no HTTP listener, no Console — one call turns a validated config into a running stack. The full path is the Embed Harbor headless recipe.
| Surface | Page |
|---|---|
| Operator skills — numbered playbooks for building agents | /skills/ |
| Recipes — copy-paste how-to guides grounded in current APIs | /recipes/ |
| Build a third-party client — the Protocol adoption track (executed quickstart, generated reference, choreographies, certification) | /protocol/ |
Every harbor.yaml knob | Configuration reference |
| The design RFC | RFC-001 |
| Vocabulary | Glossary |
| Settled architectural decisions (D-001…) | Decisions log |
| How Harbor was built, phase by phase | Master phase plan |
| Hardening an agent for production | Productionization playbook |
| Release history | Changelog |
This site renders from the canonical files in the repository — the repo stays the source of truth; drift between source and site is impossible by construction. For the per-package API, read the godoc.