Permanent binary archive for vx provider downloads.
Some upstream release sources are unreliable or temporary:
- Official download sites (ffmpeg.org) host only the latest build
- Third-party mirrors (johnvansickle.com, evermeet.cx) occasionally go offline
- GitHub releases from small projects can be deleted or renamed by maintainers
- Old versions disappear when projects do
keep_latest: 3
This repository permanently archives every version of each tool, so vx can
always download the exact version it needs — even years later.
vx provider (provider.star)
│
│ download_url → github_asset_url("vx-org", "mirrors", "ffmpeg-8.1.1", asset)
▼
vx-org/mirrors GitHub Releases
│
│ tag: ffmpeg-8.1.1
│ assets:
│ ffmpeg-8.1.1-win64-lgpl.zip
│ ffmpeg-8.1.1-linux64-lgpl.tar.xz
│ ffmpeg-8.1.1-linuxarm64-lgpl.tar.xz
▼
Permanent archive ✓ (releases are never deleted)
Each tool release uses a namespaced tag to avoid conflicts:
| Tool | Mirror Tag | Example |
|---|---|---|
| ffmpeg | ffmpeg-{ver} |
ffmpeg-8.1.1 |
| witr | witr-{ver} |
witr-0.3.1 |
Each tool has a mirrors/<tool>/sync.yml that declares:
- Upstream source (GitHub owner/repo, tag prefix, pre-release policy)
- Asset patterns to download (with optional rename for stable naming)
- keep_versions: 0 — archive all versions forever
| Tool | Upstream | Platforms | Notes |
|---|---|---|---|
| ffmpeg | BtbN/FFmpeg-Builds | win64, linux64, linuxarm64 | Official static builds from ffmpeg.org |
| witr | pranshuparmar/witr | all platforms | Process introspection tool |
- Create
mirrors/<toolname>/sync.yml:
tool: mytool
upstream:
type: github_release
owner: upstream-owner
repo: upstream-repo
tag_prefix: "v" # strip "v" from tag to get version
include_prerelease: false
assets:
- pattern: "mytool-{version}-linux-amd64.tar.gz"
platforms: [linux/x64]
- pattern: "mytool-{version}-windows-amd64.zip"
platforms: [windows/x64]
tag_prefix: "mytool-" # mirror tag prefix
keep_versions: 0 # 0 = archive all versions permanently
license: MIT
source_url: https://github.com/upstream-owner/upstream-repo-
Open a PR — the sync workflow validates and runs on merge.
-
Update the corresponding
vxprovider'sdownload_urlto usevx-org/mirrors.
- Nightly at 02:00 UTC — detects new upstream releases automatically
- Manual trigger —
Actions → Sync Mirrors → Run workflow- Optional: specify a single tool, enable dry-run, or force re-sync
# In your provider.star:
load("@vx//stdlib:github.star", "make_fetch_versions", "github_asset_url")
# Fetch available versions from our mirror tags
fetch_versions = make_fetch_versions("vx-org", "mirrors", tag_prefix = "ffmpeg-")
# Download from our mirror
def download_url(ctx, version):
asset = "ffmpeg-{}-win64-lgpl.zip".format(version)
return github_asset_url("vx-org", "mirrors", "ffmpeg-" + version, asset)Binary files in releases remain under their original upstream licenses.
No files are modified — this is a pure mirror for reliability.
See each tool's sync.yml for the original license and source URL.