Pre-flight check: is this LLM model ID still alive?
Project description
Model Alive
517 models · 21 providers · 130+ aliases — OpenAI, Anthropic, Google, Qwen, DeepSeek, Llama, Groq, Together, Fireworks, Bedrock, Azure, OpenRouter, Ollama, and more.
Hardcoded model IDs break silently until production fails. Model Alive answers in one call — with source links, breaking change notes, and host-aware lifecycle status.
Quality scorecard → · Universal registry guide → · 60-second quickstart →
Install
pip install modelalive
JavaScript/TypeScript:
npm install modelalive
Quick examples
# Retired model → exit 1
modelalive check claude-sonnet-4-20250514
# Resolve alias + replacement
modelalive resolve claude-3-5-sonnet-latest
# List all retired Anthropic models
modelalive list --status retired --provider anthropic
# Validate registry integrity
modelalive validate --strict
# Pre-flight: print safe model ID (auto-replaces retired)
modelalive ensure claude-sonnet-4-20250514
# Production CI: fail on unknown models too
modelalive check "$MODEL_ID" --strict-unknown --warn-deprecated
import modelalive
# Pre-flight: auto-replace retired models
model_id = modelalive.ensure("claude-sonnet-4-20250514")
# → "claude-sonnet-4-6"
# Context manager for call sites
with modelalive.gate("gemini-2.0-flash") as safe:
call_api(safe) # → gemini-3.5-flash
result = modelalive.alive("claude-mythos-preview")
print(result.days_until_retirement) # 2 (as of 2026-06-28)
print(result.source_url) # Anthropic deprecation docs
print(result.confidence) # "verified"
TypeScript / Node
cd js && npm install && npm run build
import { alive, ensure, resolve } from "modelalive";
ensure("claude-sonnet-4-20250514"); // → "claude-sonnet-4-6"
alive("gemini-2.0-flash").status; // → "retired"
HTTP API
uvicorn api.main:app --port 8787
| Method | Path | Description |
|---|---|---|
| GET | /v1/alive?model= |
Lifecycle check (410 if retired) |
| POST | /v1/alive/batch |
Check up to 100 models |
| GET | /v1/ensure?model= |
Pre-flight: return safe model ID |
| GET | /v1/resolve?model= |
Best model ID + breaking changes |
| GET | /v1/registry |
Filter by status, provider |
| GET | /v1/sources |
Official doc URLs + last checked date |
| GET | /v1/validate |
Registry integrity report |
| GET | /v1/expiring?days= |
Models retiring within N days |
| GET | /openapi.json |
OpenAPI 3 schema |
| GET | /v1/health |
Version + model count |
CI gate (GitHub Actions)
- uses: Ahaozandaburada/modelalive@main
with:
models: claude-sonnet-4-20250514 gpt-5-2025-08-07
warn-deprecated: "true"
Or plain shell:
- run: pip install modelalive && modelalive check ${{ env.MODEL_ID }}
Trust & accuracy
Every verified entry includes:
source— provider key (anthropic,openai,google,groq)source_url— official deprecation page (returned in API/SDK)source_checked_at— date registry was last synced with docsconfidence—verified(in registry) orunknown(not listed)
Registry rules enforced in CI:
- Retired/deprecated models must have
replacement+retired_at - Past
retired_atauto-marks model dead even if status lags - Aliases resolve before lookup (
claude-3-5-sonnet-latest→ dated snapshot) modelalive validate --strictfails on errors before release
Canonical registry: edit registry/models.json, then:
python scripts/sync_registry.py # copies to package bundle
modelalive validate --strict
pytest
Sources (as of 2026-06-28):
Response shape
{
"queried_model": "claude-sonnet-4-20250514",
"canonical_model": "claude-sonnet-4-20250514",
"alive": false,
"status": "retired",
"provider": "anthropic",
"retired_at": "2026-06-15",
"replacement": "claude-sonnet-4-6",
"breaking_changes": [],
"source_url": "https://platform.claude.com/docs/en/about-claude/model-deprecations",
"source_checked_at": "2026-06-28",
"confidence": "verified"
}
Coverage
| Provider | Active | Deprecated | Retired |
|---|---|---|---|
| Anthropic | Sonnet 4.6, Opus 4.8, Haiku 4.5, Mythos 5, … | Opus 4.1, Mythos Preview | Sonnet 4, Opus 4, 3.x series |
| OpenAI | gpt-5.5, gpt-4o, … | gpt-5 snapshots, gpt-5.2-chat-latest, … | gpt-4-0314, gpt-3.5-turbo-0301, … |
| gemini-3.5-flash, … | 2.5 Flash, embeddings, image previews | gemini-2.0-flash (June 1), gemini-3-pro-preview | |
| Groq | llama-3.3-70b-versatile, … | — | llama3-70b-8192, mixtral-8x7b-32768 |
See docs/ACCURACY.md for source policy and error reporting.
Unknown models return status: unknown, confidence: unknown, alive: true — we never block what we haven't verified.
Docker (self-host API)
docker compose up --build
curl "http://localhost:8787/v1/alive?model=gemini-2.0-flash"
Deploy to Fly.io:
fly launch --copy-config --yes
fly deploy
Keep registry fresh
pip install modelalive[http]
python scripts/refresh_sources.py # fetch provider docs, update checked_at
modelalive validate --strict
python scripts/sync_registry.py
Weekly automated refresh runs via .github/workflows/registry-refresh.yml.
Sources (as of 2026-06-28):
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file modelalive-1.3.0.tar.gz.
File metadata
- Download URL: modelalive-1.3.0.tar.gz
- Upload date:
- Size: 5.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f75954d6ad8c6ada9f9415d46f7269b2288f61f5658a74095e2c483deef5356a
|
|
| MD5 |
521468543f4cff5110833a12d67257dd
|
|
| BLAKE2b-256 |
4ab104c449d89a63aba4fafd8622d80ca59eb2f8dab22fbed49490c1f1704945
|
File details
Details for the file modelalive-1.3.0-py3-none-any.whl.
File metadata
- Download URL: modelalive-1.3.0-py3-none-any.whl
- Upload date:
- Size: 33.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9641dbb9bc04c122e4ef310a8be8f2771311153d7607e9b6d316d76d59eb32bd
|
|
| MD5 |
3d76487fbcd1568a4c305b4858346e30
|
|
| BLAKE2b-256 |
9925bf8c221e733efec0bb4abc952ad9678947c6c2f4f8b953579d720f3b6080
|