One YAML file, the same labels everywhere
labelsync reconciles GitHub issue and pull request labels across every repository you select.
Describe the labels you want once — labelsync works out the plan, shows it, and applies it.
A Reconciler, Not a Script
Reads the current labels, computes an ordered plan, applies it. Running it twice changes nothing the second time.
See It Before You Do It
--dry-run prints the full plan and writes nothing, exiting 2 when anything has drifted — a CI drift gate in one command.
Renames, Not Delete-and-Recreate
Renaming a label keeps it attached to every issue and pull request that already carries it.
Nothing Is Deleted by Accident
Extra labels are left alone unless you ask for --mode=prune, which reports first and then asks which to remove.
Colours Chosen for You
Leave a colour out and a deterministic HSL palette allocates a legible, stable one that never collides with its neighbours.
Built for CI
Stable exit codes, NDJSON output with a stable error_kind, an ETag cache, and rate-limit-aware writes.