GitHub Models shuts down July 30. Permanently. The playground disappears, the inference API goes dark, and any code pointing at models.github.ai
stops working without warning. Today’s brownout is not a glitch — it is a scheduled preview of what permanent looks like. You have 13 days. If your team has been skimming changelogs, now is a good time to pay attention.
What Actually Goes Away #
The shutdown is broader than most announcements make it sound. On July 30, GitHub removes:
-
The browser-based model playground
-
The model catalog (the browsable list of available models)
-
The inference REST API at
models.github.ai -
Bring-Your-Own-Key (BYOK) endpoints
-
The
actions/ai-inference
GitHub Actions integration - All
gh models
CLI commands
A second brownout is scheduled for July 23 before the final cutoff. Missing the July 30 deadline means broken workflows, not degraded ones.
The Real Risk: It Is Not the Playground #
Developers who used GitHub Models as a browser playground for casual model comparisons will be mildly inconvenient. They can switch to OpenAI’s playground, Google AI Studio, or Anthropic’s Console with no code changes.
The teams that should be worried right now are the ones who embedded the inference API into infrastructure. Release note generators, PR summarizers, test triage bots, CI/CD evaluation steps — these break on July 30. Not degrade. Break.
The uncomfortable reality: many teams built these automations when GitHub Models launched, added the token to their secrets, and stopped thinking about it. The dependency is invisible until the pipeline starts failing. Start your audit before July 30 does it for you.
Step 1: Find Your Dependencies #
Before choosing a migration target, know what you’re migrating. Run these in your codebase:
grep -r "models.inference.ai.azure.com" . --include="*.py" --include="*.js" --include="*.ts" --include="*.yml"
grep -r "models.github.ai" . --include="*.py" --include="*.js" --include="*.ts" --include="*.yml"
grep -r "actions/ai-inference" .github/
grep -r "gh models" . --include="*.sh" --include="*.yml"
Any hit is a dependency that needs a new home before July 30.
Your Migration Options #
GitHub’s official answer is Azure AI Foundry. It is not the only answer.
Azure AI Foundry (Official Path)
Same OpenAI-compatible API format — your SDK calls stay the same, only the base URL and key change. Microsoft’s migration guide walks through the deployment steps. The catch: you need an Azure subscription, billing configuration, and you must explicitly deploy each model (GitHub Models pre-loaded them all). One developer benchmarked the cost difference: the same workload ran at $147 per week on Azure and under five cents on OpenRouter. Azure is not wrong — it is the right answer for enterprise governance requirements. But eyes open on the onboarding friction.
OpenRouter (The Portable Option)
One API key. One endpoint. Hundreds of models. https://openrouter.ai/api/v1
is OpenAI-compatible, which means migrating from GitHub Models is mostly a find-and-replace on your base URL. No Azure account required. OpenRouter charges a per-token rate plus a platform markup. There is no formal SLA, and the SaaS-only architecture makes it a poor fit for GDPR and HIPAA regulated workloads. If your data is not sensitive and you want portability, OpenRouter is the fastest migration path.
Direct Provider APIs
If you have already committed to one model family — GPT, Claude, Gemini — going direct is worth the setup. You get the best pricing, an actual SLA, and no intermediary. The OpenAI SDK works as-is; other providers may require their own SDK or an OpenAI-compatible wrapper.
Local Models (Ollama, LM Studio)
Free, private, offline. Not appropriate for production CI/CD unless you control the infrastructure, but worth considering for local development workflows where GitHub Models was a cheap prompt-testing tool.
Build the Abstraction Now #
Whichever provider you choose, do not hardcode the endpoint. The lesson of the GitHub Models shutdown is that “boring infrastructure” gets cut. Provider abstraction via environment variables turns future migrations from rewrites into config changes:
import os
from openai import OpenAI
PROVIDER = os.environ["LLM_PROVIDER"] # "azure" | "openrouter" | "direct"
MODEL = os.environ["LLM_MODEL"]
BASE_URLS = {
"azure": "https://YOUR-RESOURCE.services.ai.azure.com/models",
"openrouter": "https://openrouter.ai/api/v1",
"direct": "https://api.openai.com/v1",
}
client = OpenAI(
base_url=BASE_URLS[PROVIDER],
api_key=os.environ["LLM_KEY"]
)
response = client.chat.completions.create(model=MODEL, messages=messages)
Swap LLM_PROVIDER
and LLM_KEY
in your environment and nothing else changes. That is a five-minute configuration update, not a sprint.
Timeline #
July 16 (today)— Brownout #1. API requests fail temporarily.** July 23**— Brownout #2.** July 30**— Full shutdown. No grace period.
The brownouts are not optional warnings — they are scheduled disruptions designed to surface dependencies before the final cutoff. If your monitoring flagged errors today, you now have a list of what needs migrating. The full impact analysis from DevOps.com has more on how this affects different team sizes. Thirteen days is enough time to fix this — if you start now.