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.

TypeScript Vercel Functions Astro

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.

Append /tree/branch to pin a ref.

A fine-grained token with contents: read. With one, your browser reads the repo straight from GitHub and scans it locally: neither the token nor your source reaches this site. Without one, only public repos work.

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.

esc