GitHub Action · OpenAI · Anthropic · Google

Know before your model disappears.

AI providers retire models on a schedule. Driftline finds every model ID in your code, flags the ones that are going away, and runs your real prompts on the replacement so you see what changes before you switch.

Runs in your CI with your own keys. No account, no server.

Retiring
How it works

Three checks.
Every push.

Driftline runs as one step in your GitHub workflow. It reads your repository, compares what it finds with the providers' own retirement pages, and reports back on the pull request.

01 · Scan

Finds every model ID

Code, .env files and configs, in JavaScript, Python, Go and 20 more file types. It skips node_modules and build folders.

02 · Check

Knows the dates

Each ID is matched against the official OpenAI, Anthropic and Google retirement pages. You get a warning on the exact file and line.

03 · Test · Pro

Runs your prompts on both

Your saved prompts run on the current model and its replacement. Each one gets a similarity score, and a hard fail if JSON stops parsing.

Two minutes to install.

Add one workflow file. The scan is free and needs no key. Add a license key and your provider keys to turn on drift tests.

  • Annotations on the file and line of every retired or retiring model.
  • A report in the job summary, plus one GitHub issue that updates itself.
  • Fail the build on retired models, on soon-to-retire models, or never.
.github/workflows/driftline.yml
name: Driftline
on:
  schedule:
    - cron: "17 6 * * 1"   # every Monday
  pull_request:

jobs:
  driftline:
    runs-on: ubuntu-latest
    permissions: { contents: read, issues: write }
    steps:
      - uses: actions/checkout@v4
      - uses: AI-Driftline/driftline@v0
        with:
          create-issue: "true"
          fail-on: retired
          # Pro: license-key: ${{ secrets.DRIFTLINE_LICENSE_KEY }}
Drift tests · Pro

Same prompt.
New model.
See what changes.

List the 5 to 20 prompts your app really sends in .driftline/prompts.yml. Driftline runs each one on the current model and on its replacement, then scores the difference.

sentimentgpt-4o-2024-05-13↓gpt-5.6-sol
Current model

negative

Replacement

negative

1.00
✓ Same
ticket-summaryclaude-sonnet-4-5-20250929↓claude-sonnet-5-5
Current model

The customer's printer keeps jamming and they need someone to fix it today.

Replacement

The customer's printer keeps jamming and they need it fixed today.

0.76
● Changed
invoice-jsonexpect: jsongpt-4o-2024-05-13↓gpt-5.6-sol
Current model

{"vendor": "ACME GmbH", "total": 1250.00, "currency": "EUR"}

Replacement

Vendor: ACME GmbH. Total: 1,250.00 EUR.

0.00
✕ Broken · not JSON
✓ Samesimilarity 0.90 or higher ● Changed0.60 to 0.90, worth a look ✕ Brokenbelow 0.60, or JSON stopped parsing

Example answers written for this page. The scores are what Driftline's scoring code returns for them. Text is compared by word and word-pair overlap; JSON field by field.

Retirement timeline

The clock
is already running.

Text models with a fixed retirement date, from the providers' own pages. If any of these IDs are in your code, they stop answering on that day.

Checked against OpenAI, Anthropic and Google on 10 Oct 2026. Google publishes only earliest shutdown dates, so Driftline reports those as "may stop working".

Privacy by design

Your keys and prompts
never leave your pipeline.

Driftline is code that runs inside your own GitHub Actions job. There is no Driftline server to send anything to.

0servers between you and your AI provider
223model IDs tracked across three providers
0dependencies. Plain Node, easy to audit
Your GitHub runneryour code, your keys
OpenAI · Anthropic · Googleprompts, with your API key
Lemon Squeezylicense key only (Pro)
Pricing

Cheaper than
one outage.

The scan is free forever. Pro adds drift tests. API calls in drift tests run on your own provider keys: two calls per prompt per run.

Free
$0
forever, any number of repositories
  • Scan for OpenAI, Anthropic and Google model IDs
  • Retirement warnings on the exact file and line
  • Job summary report and a self-updating issue
  • Fail the build on retired models
Add the free Action

No account. No key.

Pro
$19/ month
billed monthly, cancel any time
  • Everything in Free
  • Drift tests: your prompts on the current and the replacement model
  • Similarity score per prompt
  • Hard fail when a JSON answer stops parsing
  • Full before and after answers in the report
Get Pro

Secure checkout by Lemon Squeezy. 14-day refund.

FAQ

Questions,
answered.

Does Driftline see my code or my API keys?

No. Driftline is a step inside your own GitHub Actions job. Prompts go from your runner straight to OpenAI, Anthropic or Google with your own keys. The only call Driftline makes for itself is the Pro license check with Lemon Squeezy, and that sends only the license key.

Where do the retirement dates come from?

From the providers' official deprecation pages, checked by hand and dated in the registry. Google lists only the earliest shutdown date, so those models are reported as "may stop working". Anthropic's "not sooner than" dates are shown for information and never fail a build.

Which models does it cover?

223 OpenAI, Anthropic and Google model IDs, including audio, image, video and embedding models. All of them are scanned and reported. Drift tests run on text models only.

What does a drift test cost me in API usage?

Two calls per prompt per run: one to the current model, one to the replacement. Ten prompts on a weekly schedule is 20 calls a week, billed by your provider on your own key. If the current model is already retired, only the replacement is called.

What happens if I cancel Pro?

Drift tests stop at the end of your paid period. The free scan keeps running. You can cancel any time from the Lemon Squeezy receipt email, and you can ask for a full refund within 14 days of your first payment.

Who is behind Driftline?

Driftline is built and run by one developer, Mirza Tontowi. Questions go straight to me at hello@aidriftline.com.

Ship on your schedule.
Not theirs.