Documentation
¶
Overview ¶
Package leather is a stdlib-only Go binary that runs declarative agents locally — scheduled jobs, one-shot runs, webhook-driven workflows, tool calling, and auditable outputs — without a Python stack, hosted control plane, or external dependency pile.
This package is intentionally empty. The runtime lives in the leather binary at github.com/tgpski/leather/cmd/leather and the shell-manifest MCP companion at github.com/tgpski/leather/cmd/shell-mcp. Implementation packages live under internal/ and are not part of the public Go API.
Install ¶
go install github.com/tgpski/leather/cmd/leather@latest go install github.com/tgpski/leather/cmd/shell-mcp@latest
Pre-built binaries ¶
Tagged releases publish linux/darwin × amd64/arm64 tarballs at https://github.com/tgpski/leather/releases.
Documentation ¶
See the project README and docs/ tree on GitHub for full usage, the agent definition format, the curing/tannery workflow model, and the HTTP API surface: https://github.com/tgpski/leather.
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
leather
command
Command leather is the main entrypoint for the leather agent orchestrator.
|
Command leather is the main entrypoint for the leather agent orchestrator. |
|
shell-mcp
command
shell-mcp is a stdlib-only MCP stdio server that exposes fast CLI tools as model-callable tools.
|
shell-mcp is a stdlib-only MCP stdio server that exposes fast CLI tools as model-callable tools. |
|
internal
|
|
|
agent
Package agent implements loading, parsing, and validation of agent definition files.
|
Package agent implements loading, parsing, and validation of agent definition files. |
|
artifact
Package artifact provides a file-backed store for curing output artifacts.
|
Package artifact provides a file-backed store for curing output artifacts. |
|
cache
Package cache provides a sha256-keyed, file-backed response cache with per-entry TTL.
|
Package cache provides a sha256-keyed, file-backed response cache with per-entry TTL. |
|
cli
Package cli implements leather's command dispatch and serve loop.
|
Package cli implements leather's command dispatch and serve loop. |
|
config
Package config loads and merges leather configuration from multiple sources.
|
Package config loads and merges leather configuration from multiple sources. |
|
curing
Package curing loads curing workflow definitions and provides a first-match router for mapping intake events to curing workflows.
|
Package curing loads curing workflow definitions and provides a first-match router for mapping intake events to curing workflows. |
|
devtools/bus
Package bus provides an in-memory event bus for DevTools consumers.
|
Package bus provides an in-memory event bus for DevTools consumers. |
|
devtools/causality
Package causality derives and traverses event lineage for DevTools.
|
Package causality derives and traverses event lineage for DevTools. |
|
devtools/sources
Package sources maps runtime signals to DevTools bus events.
|
Package sources maps runtime signals to DevTools bus events. |
|
hide
Package hide implements the HideBuffer — an in-process store for large tool outputs.
|
Package hide implements the HideBuffer — an in-process store for large tool outputs. |
|
logging
Package logging provides structured logging for leather components.
|
Package logging provides structured logging for leather components. |
|
mcp
Package mcp implements an MCP (Model Context Protocol) client over the stdio transport using JSON-RPC 2.0.
|
Package mcp implements an MCP (Model Context Protocol) client over the stdio transport using JSON-RPC 2.0. |
|
model
Package model defines the shared domain types for leather.
|
Package model defines the shared domain types for leather. |
|
notify
Package notify provides a Notifier interface and concrete backends for delivering agent output to messaging platforms (Telegram, Signal).
|
Package notify provides a Notifier interface and concrete backends for delivering agent output to messaging platforms (Telegram, Signal). |
|
queue
Package queue provides a durable, file-backed FIFO queue for QueueItems.
|
Package queue provides a durable, file-backed FIFO queue for QueueItems. |
|
runner
Package runner executes a single agent turn, including multi-round tool calling.
|
Package runner executes a single agent turn, including multi-round tool calling. |
|
safepath
Package safepath provides root-anchored path joins that reject traversal.
|
Package safepath provides root-anchored path joins that reject traversal. |
|
scheduler
Package scheduler implements cron expression parsing and schedule computation.
|
Package scheduler implements cron expression parsing and schedule computation. |
|
schema
Package schema provides lightweight schema validation for leather definition files.
|
Package schema provides lightweight schema validation for leather definition files. |
|
secret
Package secret resolves credentials from operator-friendly sources without ever passing the resolved value through structured logs.
|
Package secret resolves credentials from operator-friendly sources without ever passing the resolved value through structured logs. |
|
session
Package session manages the context window for a single agent execution.
|
Package session manages the context window for a single agent execution. |
|
tool
Package tool manages the tool registry: loading skill definitions from *.skill.yaml files, validating tool names, and dispatching executions.
|
Package tool manages the tool registry: loading skill definitions from *.skill.yaml files, validating tool names, and dispatching executions. |
|
worker
Package worker loads and runs polling workers that push items into named queues.
|
Package worker loads and runs polling workers that push items into named queues. |
|
Package ui embeds the leather DevTools / overview web UI so that `leather serve` can serve it at /ui/* from the binary, with no need for the operator to know where the repository's ui/ directory lives.
|
Package ui embeds the leather DevTools / overview web UI so that `leather serve` can serve it at /ui/* from the binary, with no need for the operator to know where the repository's ui/ directory lives. |