Fleet management over remotecfg
Alloy agents poll Shepherd with their native remotecfg block. Shepherd resolves
each collector by (cluster, role), and unchanged config is skipped over
content-hash / not-modified responses — no polling overhead for a quiet fleet.
collector.v1 · Connect RPC
Visual pipeline builder
A schema-driven canvas covering every registered Alloy component. Drag components onto
the canvas, wire them by typed ports, and undo/redo freely — the graph compiles to
deterministic Alloy config through the same gate as everything else. Pipelines written
as text, by a wizard or in git — grafana/k8s-monitoring output included — open
in a read-only graph view that draws every wire and shows Alloy modules as groups.
drag-to-wire · undo/redo · graph view
Merge engine & validation gate
Pipelines target collectors with Alertmanager-style matchers, and every config passes a
three-stage gate — syntax, alloy validate against a pinned real Alloy binary,
and a full merge dry-run — before it can ever be stored as servable.
never serve unvalidated config
GitOps from any git server
Point a repo link at a directory of .alloy files on any git host. Authenticate
with a personal access token, HTTPS basic auth, an SSH deploy key, a GitHub App
installation or an Azure DevOps service principal — synced
files pass the same validation gate before they're servable.
PAT · SSH · GitHub App · Azure DevOps
Sandbox simulation
Run a candidate pipeline against synthetic sources in a network-contained sandbox and
inspect the captured series before it ever reaches a collector. Enabled by default as
of v0.0.1 — a default-deny NetworkPolicy contains it, proven with in-cluster probes;
turn it off per-deployment with simulator.enabled=false.
enabled by default
RBAC, orgs, and an audit log
Multi-tenant by design: application admins manage orgs and set each one’s tenant
identity, org admins manage their own collectors and pipelines, org editors author what an
org runs without being able to change where its telemetry ships, teams get scoped write over
the pipelines they own, and viewers get read-only access. Roles come from your identity
provider’s groups or from local accounts — Shepherd runs with or without an IdP.
Every mutating action is written to the audit log.
org-scoped roles
A receiver for your apps, one tenant per route
An optional OTLP/HTTP endpoint behind your Gateway API gateway. Shepherd applies a route
per tenant that sets the tenant header — a client can never choose its
own tenant — and shows whether the gateway attached it. Each active OTLP route comes with
ready-to-paste SDK and IaC snippets for connecting an app. Off by default; turn it on
with receiver.enabled.
opt-in · Gateway API
A beacon, not a survey
Every claimed collector is served a small baseline pipeline that reports which components it is
actually running, and whether they are healthy. Component names only — never config
text, never raw samples. The collector you know nothing about is the one that would never
have opted in — so it is on by default, with a single chart value to turn it off.
inventory + health
An agent interface that cannot apply
An MCP server exposes the fleet to AI agents in read-plus-propose mode. The limit is
enforced by the credential, not by which tools were registered: a propose-scoped service
account is refused at every mutating endpoint, so a tool that does not exist yet would be
refused too. A machine action records both the agent and the human it acts for.
shepherd-mcp ships in the release archives for Linux, macOS and Windows.
read + propose only