TGPSKI/leather
Local agent runtime in one stdlib-only Go binary.
what it is
Scheduled jobs, one-shot runs, webhook-driven pipelines, tool calling, and auditable outputs. No Python stack. No hosted control plane. No broker, telemetry, or dependency pile. go.mod has zero require entries.
Runs on your workstation, server, or Raspberry Pi as a single local process. Loopback API by default.
quickstart
go install github.com/tgpski/leather/cmd/leather@latest
go install github.com/tgpski/leather/cmd/shell-mcp@latest
leather --version # no LLM endpoint required
An *.agent.md — front matter declares identity, body is the system prompt.
--- name: summarizer --- You are a concise planning assistant. Output bullet points only.
*.lifecycle.yaml carries the when and how.
agent: summarizer schedule: "0 9 * * *" model: qwen3 prompt: Summarize the three most important things to do today.
leather validate leather run ~/.leather/agents/summarizer.agent.md leather serve --pretty --stats
pipelines
Curings
A curing binds one agent to one input queue. Compose pipelines by writing one curing's output into the next curing's input queue — all under leather serve, dispatched by HMAC-validated webhook. Raw inputs arrive as hides, get sliced into bounded cuts, and finished outputs are promoted to artifacts with full lineage.
Add a tannery.yaml and leather serve stands up HMAC webhooks, content-addressed hides, and artifacts queryable over the HTTP API.
this site
A site-consistency agent runs this site's validation suite on schedule. The run persists to JSONL and replays in the browser DevTools.
make tannery-replay # → http://127.0.0.1:7749/ui/devtools.html
stack