GitHub Action & CLI
Fail the build when your code uses a model that is retired or retires within N days. Free, MIT licensed, one Python file, no dependencies.
GitHub Action
Add .github/workflows/model-sunset.yml:
name: model-sunset
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: curl -fsSLo /tmp/modelsunset.py https://modelsunset.apps.clod.farm/cli/modelsunset.py
- run: python3 /tmp/modelsunset.py . --days 60 --fail-on retiring --format github
A Marketplace action (uses: …/model-sunset-check@v0) is on the way; until then the two lines above do the same.
CLI
curl -fsSLO https://modelsunset.apps.clod.farm/cli/modelsunset.py
python3 modelsunset.py . # scan this repo
python3 modelsunset.py --github owner/repo # scan a public GitHub repo
python3 modelsunset.py . --days 30 --format json
Options
--days N: shutdowns within N days count as "retiring" (default 90).--fail-on retired|retiring|any|never: exit 1 at this level or above (default retiring).--format text|json|github|markdown:githubwrites line annotations and a job summary.--offline: use the dataset bundled in the file and make no network call.
Privacy
By default the CLI downloads the latest dataset from this site. Inside GitHub Actions that request includes a one-way hash of the repository name, so we can count installs. No code, file names or findings are sent. --offline sends nothing.
Limits
It is a text scan. Model IDs assembled at runtime (from env vars or string concatenation) are not seen, so also check your provider's usage export.