Quick Start
Five minutes, one config file, and you’ll know the next time a model your app calls changes. First download radarmodel-ai and put it on your PATH.
1. Write a config
radarmodel-ai init
That writes radarmodel.json in the current folder. Open it and put the models your app actually calls under watch, as provider:model. Remove the providers you don’t use.
{
"interval": "1h",
"providers": [
{"type": "openai"},
{"type": "openrouter"}
],
"watch": [
"openai:gpt-4o",
"openrouter:anthropic/*"
]
}
A * matches anything, slashes included, so openrouter:anthropic/* watches every Anthropic model on OpenRouter.
2. Set the keys
export OPENAI_API_KEY=...
export ANTHROPIC_API_KEY=... # if you watch Anthropic
export GEMINI_API_KEY=... # if you watch Google
OpenRouter’s list is public and needs no key. Keys go only to each provider’s own host, in a header, and never into files, errors or alerts.
3. Take the baseline
$ radarmodel-ai check
2026-10-17T19:30:11Z RadarModel AI: no changes
openai baseline 3 items recorded; changes are reported from the next scan
openrouter baseline 2 items recorded; changes are reported from the next scan
The first run records what each provider lists today. Snapshots go into .radarmodel/ next to the config file.
4. Check again, later
$ radarmodel-ai check
2026-10-17T19:30:11Z RadarModel AI: no changes
openai ok no changes (3 items)
openrouter ok no changes (2 items)
Say a provider then drops gpt-4o and raises a price. The next check warns about both. The * marks a model you watch:
$ radarmodel-ai check
2026-10-17T19:30:11Z RadarModel AI: 2 warnings
openai WARNING gpt-4o * gone (missing from this scan; breaking if the next scan misses it too)
openai 1 more below warning
openrouter WARNING anthropic/claude-sonnet-4.5 * input_price 0.000003 -> 0.0000035
A removal isn’t called breaking on one scan. If the next one misses gpt-4o too, it is, and check exits 1:
$ radarmodel-ai check
2026-10-17T19:30:11Z RadarModel AI: 1 breaking
openai BREAKING gpt-4o * gone (confirmed by a second scan)
openrouter ok no changes (2 items)
$ echo $?
1
-min info shows the minor changes too, such as new models. radarmodel-ai show openai lists what’s stored for a provider.
5. Run it on a schedule
Pick one.
Cron, hourly:
0 * * * * cd /srv/radar && radarmodel-ai check >> radar.log 2>&1
Watch mode scans every interval until you stop it:
radarmodel-ai watch
CI, as a gate. A GitHub Actions job that fails when a watched model breaks. It keeps the snapshots between runs with the cache:
- uses: actions/cache@v4
with:
path: .radarmodel
key: radarmodel-${{ github.run_id }}
restore-keys: radarmodel-
- run: radarmodel-ai check
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
6. Get alerts where you look
Add an alerts block. Secrets come from environment variables:
"alerts": {
"min_severity": "warning",
"slack": {"url_env": "SLACK_WEBHOOK_URL"}
}
Webhooks get the report as JSON, Slack and email get a short text. The reference has every setting.