Project 01 · runs in your browser
LLM Inventory
Point it at a repo. It tells you every model that repo calls, how hard it would be to change them, and what each one becomes on the destinations you pick.
Model ids were checked against each vendor's own docs on 4 September 2026. They rot fast, so confirm against the destination's live model list before acting on a plan.
On the OpenAI and Cursor split: OpenAI has said it intends to stop supplying its models to Cursor on 12 November 2026, in its own notice. That is one side's stated intent in an open negotiation. Cursor has published no deprecation notice and still lists and sells every OpenAI model, so this tool treats the date as proposed rather than settled.
Where do you want to run?
Pick as many as you like. Swaps are only ever chosen from what these carry, and a coding surface is never offered for embeddings, images, audio, or moderation.
What comes back
- Inventory
- Every model id in the repo, with its vendor, whether it is pinned or floating, and how often it appears.
- Switch table
- What each id becomes on the destinations you picked, matched on capability and tier rather than on vibes.
- Portability
- A score for how hard a model change would be here at all, before you choose which model.
- Risks
- Retiring ids, mixed pinning, inline credentials, and the embedding index nobody plans to rebuild.
- Plan
- Ordered steps built from what is actually in the repo, exportable as markdown for a PR description.
Where your code goes
| Source | Where it is scanned | What leaves your machine |
|---|---|---|
| zip or folder | your browser | nothing |
| private repo, with a token | your browser | nothing to this site; GitHub sees its own token |
| public repo, no token | this site's function | the repo name; the function downloads it from GitHub |
The scanner is the same TypeScript in all three cases, so a local run and a server run produce the same report. Nothing uploaded is executed, and key-shaped strings are redacted out of snippets before they are stored in the report at all.
Destinations it knows about
- Cursor surface
- IDE picker, CLI, SDKs and Cloud Agents. Coding work only, not product traffic.
- Anthropic api
- Claude, direct API or Claude Code. Full inference surface plus an agent runtime.
- OpenAI api
- Stay where you are. Shows you what is legacy or retiring rather than what to swap.
- Google api
- Gemini API or Vertex AI. Strong multimodal and long-context coverage.
- xAI api
- Grok, direct API. Frontier reasoning, thin coverage outside text.
- Antigravity surface
- Google's agentic IDE. A coding surface, like Cursor, not an inference API.
- GitHub Copilot surface
- Multi-model coding surface in the editor and on github.com.
- Replit surface
- Replit Agent. A hosted build-and-deploy surface, not a raw model endpoint.
- AWS Bedrock gateway
- One AWS-side endpoint over several vendors. Good when procurement is the constraint.
- OpenRouter gateway
- One OpenAI-shaped endpoint over most vendors. The cheapest way to stop being locked in.
- Self-hosted self-hosted
- Ollama, vLLM, llama.cpp. Open-weight models on your own hardware.
A surface runs agents over a workspace and cannot serve product traffic. An API is a callable endpoint. Mixing those two up is the most common way one of these migrations goes wrong, so the report separates them rather than pretending a coding surface is a drop-in for a Chat Completions call.
What it is not
A static grep, not a runtime trace. It reads text sources and executes nothing, so it sees the model ids you wrote down and misses the ones you assemble at runtime. It has no pricing, no benchmarks, and no opinion about which model is better: swaps are matched on capability and tier, and the catalog behind them is a hand-maintained file with a date on it. Zip and folder runs are capped at 400 files, private-repo runs at 300, and public GitHub at whatever the function can download inside its timeout.
Where it came from
It started as a narrower tool, built from scratch in Cursor in one session, that answered a single question: which OpenAI models would stop working in Cursor after the November cutoff. That question has a short shelf life, and the interesting version of it is the general one, because the same problem recurs every time a vendor changes a deal. So the scanner grew a vendor-agnostic catalog, destination toggles, a portability score, and the two risks nobody audits for: model ids that float when they should be pinned, and vector indexes welded to one embedder. The original commit history is kept.