Skip to content

HarborDurable, steerable, event-driven AI agents in Go.

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.

Five minutes to a working agent

bash
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 :18080

The first-five-minutes chain walks this path step by step: scaffold-a-harbor-agentrun-the-dev-loopdrive-the-playground.

Or embed the runtime in your own program

go
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.

Where everything lives

SurfacePage
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 knobConfiguration reference
The design RFCRFC-001
VocabularyGlossary
Settled architectural decisions (D-001…)Decisions log
How Harbor was built, phase by phaseMaster phase plan
Hardening an agent for productionProductionization playbook
Release historyChangelog

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.

Apache-2.0 licensed — see LICENSE.