baton tracks the follow-up work that a change in one repository owes the others in a multi-repository project.
A release of a library owes a bump in each consumer, then a release of
each consumer, then a deploy. A copied schema owes a sync when the
source changes. These rules usually live in maintainers' heads, and
the work gets missed or arrives late. baton records them in one
baton.yml and checks them on a schedule. Each owed action stays open
as an issue in the owing repository until baton can verify, from the
repositories or the running service, that it's done.
Preview. baton is pre-1.0.
applywrites issues only to a sandbox owner given with--redirect-owner, never to the component repositories. Useplanto see what it would do there.
baton.ymllives in a dedicated<project>-batonrepository. It lists the components, the rollouts each release triggers (a trigger plus obligations ordered byneeds), standing invariants, and waivers.- Probes answer "is this done?" as of a date, from
go.modfiles, releases, file contents, or a live endpoint, so the same file replays against history. - Issues. Each rollout gets a parent issue in the baton repository with a checklist. Each pending or overdue obligation gets a child issue in the repository that owes it.
The full design, including states, probes, and the threat model, is in docs/design.md. A complete example for OpenSSF Scorecard is in examples/scorecard/baton.yml.
go install github.com/uwu-tools/baton/cmd/baton@latest
baton validate baton.yml # offline checks, for PRs
baton plan baton.yml # states and issue changes; read-only
baton plan --as-of 2026-07-01 baton.yml # the same, as of a past date
baton apply --redirect-owner my-sandbox baton.yml
baton versionplan and apply read GITHUB_TOKEN. Exit status is 0 on success,
1 for bad usage or config, and 2 when an obligation, API call, or
inventory check failed.
- Create a
<project>-batonrepository and add abaton.yml. - Copy templates/workflows/ into its
.github/workflows/. The comments in baton.yml cover the GitHub App and environment it needs. - Run
baton planand review the result before enabling the schedule.
See CONTRIBUTING.md. Please report security issues as described in SECURITY.md.
Distributed under the Apache License 2.0. See LICENSE.