leather

TGPSKI/leather

Local agent runtime in one stdlib-only Go binary.

v0.3.0 GPL-3 go1.26 examples pass

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.

binary
stdlib only — zero external deps
queues
backpressure, retries, dead-letter in-process
context
oversized inputs paged into bounded cuts
lineage
JSONL run history, deterministic replay
triggers
cron + HMAC-validated webhooks, one process
tools
YAML skillsets, stdio MCP, shell-mcp
install
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
write an agent

An *.agent.md — front matter declares identity, body is the system prompt.

---
name: summarizer
---
You are a concise planning assistant. Output bullet points only.
schedule it

*.lifecycle.yaml carries the when and how.

agent: summarizer
schedule: "0 9 * * *"
model: qwen3
prompt: Summarize the three most important things to do today.
run
leather validate
leather run ~/.leather/agents/summarizer.agent.md
leather serve --pretty --stats

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.

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