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.