Pre-flight check: is this LLM model ID still alive?
Project description
Model Alive
Pre-flight check before every LLM API call: is this model ID still alive?
Hardcoded model IDs break silently until production fails. Anthropic retired Claude Sonnet 4 and Opus 4 on June 15, 2026. Mythos Preview retires June 30, 2026. Model Alive answers in one call — with source links and breaking change notes.
Install
pip 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
import modelalive
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"
model_id = modelalive.resolve("claude-sonnet-4-20250514")
# → "claude-sonnet-4-6"
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/resolve?model= |
Best model ID to use |
| GET | /v1/registry |
Filter by status, provider |
| GET | /v1/sources |
Official doc URLs + last checked date |
| GET | /v1/validate |
Registry integrity report |
| 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)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 |
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-0.2.1.tar.gz.
File metadata
- Download URL: modelalive-0.2.1.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d9e8c8fb60d2a4c25b8643f5d1c66e11132d44a396b6d5db59b8738d0e186e9
|
|
| MD5 |
092a962977f03e5fafec9c7a1840c84d
|
|
| BLAKE2b-256 |
bbc92a25770c8cc3f0213b286242c722582170f9c2855e5e08c10a0de926fd69
|
File details
Details for the file modelalive-0.2.1-py3-none-any.whl.
File metadata
- Download URL: modelalive-0.2.1-py3-none-any.whl
- Upload date:
- Size: 12.5 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 |
d27b29ebb499409ef9c9074551ad33a5d3e99c7edc490fc1d1a7dc5271cce329
|
|
| MD5 |
785984e21a1aff6e98a9e19d24781f88
|
|
| BLAKE2b-256 |
604ea02d7f093c0ff9a7497d56a2e0deaf7269a15563ed76a8e34f161f2ac438
|