ocx-mirror¶
Upstream projects publish their releases as loose archives on GitHub Releases or ad-hoc download pages. Consuming them from CI means hand-maintaining URL matrices per platform, re-checking for new versions, and hoping nobody published a broken binary.
ocx-mirror automates that. You describe one tool in a YAML spec — where releases come from, which asset belongs to which platform, where to publish — and ocx-mirror mirrors every matching upstream version into an OCI registry as an OCX package. Consumers then install the tool with ocx install, on any platform, from your registry.
What it does¶
- Sources — GitHub Releases or URL indexes (remote JSON, inline versions, or a generator command).
- YAML spec — one
mirror.ymlper tool: source, per-platform asset regexes, target registry, version bounds. - Two-phase pipeline — prepare (download, verify, bundle) runs concurrently; push runs sequentially by version so cascade tags (
X.Y.Z→X.Y→X→latest) always land in semver order. - Generated CI pipelines —
pipeline generate cirenders complete GitHub Actions workflows that discover new versions on a schedule, smoke-test every(version, platform)pair before publishing, and report results to Discord.
Install¶
ocx-mirror is itself distributed as an OCX package:
ocx --global add ocx.sh/ocx/mirror
Where to go next¶
- Getting Started — write your first
mirror.yml, dry-run it, sync it, and scaffold a mirror repository. - mirror.yml reference — every spec field.
- CLI reference — all subcommands and flags.
- Environment reference — variables read by
ocx-mirrorand set by generated workflows.