Help us shape the future of Go! Take the 2026 Go Developer Survey

garmd

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2026 License: MIT

README

garmd

The governed tool plane. A policy-enforcing proxy between an agent and the tools it may call, deciding on every call what passes and what the caller is allowed to see of the answer.

A long-running process — systemd or Kubernetes starts it. The command line tool is garm.

Named for the hound that guards the gate in Norse myth, which is what this does.

The catalogue is not compiled in

A garmd build does not know which tools exist. It loads a catalogue artifact — a descriptor set plus the annotations that govern it — at startup, and serves exactly what that artifact declares.

Adding a tool is a catalogue rebuild and a restart, not a release of this binary. Identity is the pair (binary version, catalogue digest), reported at startup, on the health endpoint and on every ledger event, so which tools is this process serving stays exactly answerable.

A binary reads the current annotation schema and the two previous. Backward is generous; forward fails closed at boot rather than loading a policy document it only partly understands.

What is deliberately not here

  • The annotations and the generator — garm.
  • Anything a tool service imports. A tool must not be able to reach this code and attempt the chain locally; a second, unreviewed implementation of enforcement is the failure this boundary prevents.
  • Any tool. This repository never build-depends on one. A catalogue crosses that line as data.
  • Agents. An agent is a tool. garmd has no agent annotation, no dispatch kind and no agent-shaped field.

Status

Skeleton. serve is not implemented and returns an error rather than binding a listener it has nothing to serve on.

MIT licensed.

Directories

Path Synopsis
cmd
garmd command
Command garmd is the garm daemon: a policy-enforcing proxy between an agent and the tools it may call.
Command garmd is the garm daemon: a policy-enforcing proxy between an agent and the tools it may call.
internal
audit/jetstream
Package jetstream writes the audit record to a NATS JetStream stream.
Package jetstream writes the audit record to a NATS JetStream stream.
authn
Package authn turns a signed token into the Principal the tool policy chain consumes.
Package authn turns a signed token into the Principal the tool policy chain consumes.
catalogue
Package catalogue loads the artifact that says which tools this process serves.
Package catalogue loads the artifact that says which tools this process serves.
record
Package record is where a governed call's event goes.
Package record is where a governed call's event goes.
record/jetstream
Package jetstream publishes the ledger to a NATS JetStream stream, in batches.
Package jetstream publishes the ledger to a NATS JetStream stream, in batches.
serve
Package serve is the agent-facing surface: it accepts a tool call, finds the tool in the catalogue, and routes it to whatever implements it.
Package serve is the agent-facing surface: it accepts a tool call, finds the tool in the catalogue, and routes it to whatever implements it.
tool
Package tool is the in-memory form of a tool declaration.
Package tool is the in-memory form of a tool declaration.
toolplane
Package toolplane is the governance chain: ten steps, in a fixed order, around every tool call.
Package toolplane is the governance chain: ten steps, in a fixed order, around every tool call.
transport
Package transport is how garmd reaches the services that implement tools.
Package transport is how garmd reaches the services that implement tools.
transport/nats
Package nats reaches tool services over NATS.
Package nats reaches tool services over NATS.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL