anomalyco/models.dev — 6.3k★ on GitHub (TypeScript). An open-source database of AI models.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Models.dev is a comprehensive open-source database of AI model specifications, pricing, and capabilities.
There's no single database with information about all the available AI models. We started Models.dev as a community-contributed project to address this. We also use it internally in opencode.
API
You can access this data through an API.
curl https://models.dev/api.json
Use the Model ID field to do a lookup on any model; it's the identifier used by AI SDK.
Provider-agnostic model metadata is available separately:
curl https://models.dev/models.json
Use this for facts about the model itself, independent of where it is served. If you need both provider endpoints and model-only metadata in one response:
curl https://models.dev/catalog.json
Logos
Provider logos are available as SVG files:
curl https://models.dev/logos/{provider}.svg
Replace {provider} with the Provider ID (e.g., anthropic, openai, google). If we don't have a provider's logo, a default logo is served instead.
Contributing
The data is stored in the repo as TOML files; organized by provider and model. The logo is stored as an SVG. This is used to generate this page and power the API.
We need your help keeping the data up to date.
Adding Model Metadata
Model-only facts live in models/, using the same path-style IDs as provider models. For example, models/openai/gpt-5.toml defines metadata for the underlying GPT-5 model, while providers/openai/models/gpt-5.toml defines OpenAI-specific serving details such as pricing.
Provider fields win over model metadata during generation. Use this when the underlying model is the same but a provider serves it with different context limits, modalities, features, or pricing.
Adding a New Provider Model
To add a new model, start by checking if the provider already exists in the providers/ directory. If not, then:
1. Create a Provider
If the provider isn't already in providers/:
Create a new folder in providers/ with the provider's ID. For example, providers/newprovider/.
Add a provider.toml with the provider details:
name = "Provider Name"
npm = "@ai-sdk/provider" # AI SDK Package name
env = ["PROVIDER_API_KEY"] # Environment Variable keys used for auth
doc = "https://example.com/docs/models" # Link to provider's documentation
If the provider doesn’t publish an npm package but exposes an OpenAI-compatible endpoint, set the npm field accordingly and include the base URL:
npm = "@ai-sdk/openai-compatible" # Use OpenAI-compatible SDK
api = "https://api.example.com/v1" # Required with openai-compatible
2. Add a Logo (required for new providers)
To add a logo for the provider:
Add a logo.svg file to the provider's directory (e.g., providers/newprovider/logo.svg)
Use SVG format with no fixed size or colors - use currentColor for fills/strokes
Example SVG structure:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<!-- Logo paths here -->
</svg>
3. Add a Model Definition
Create a new TOML file in the provider's models/ directory where the filename is the model ID.
If the model ID contains /, use subfolders. For example, for the model ID openai/gpt-5, create a folder openai/ and place a file named gpt-5.toml inside it.
name = "Model Display Name"
attachment = true # or false - supports file attachments
reasoning = false # or true - supports reasoning / chain-of-thought
tool_call = true # or false - supports tool calling
structured_output = true # or false - supports a dedicated structured output feature
temperature = true # or false - supports temperature control
knowledge = "2024-04" # Knowledge-cutoff date
release_date = "2025-02-19" # First public release date
last_updated = "2025-02-19" # Most recent update date
open_weights = true # or false - model’s trained weights are publicly available
[cost]
input = 3.00 # Cost per million input tokens (USD)
output = 15.00 # Cost per million output tokens (USD)
reasoning = 15.00 # Cost per million reasoning tokens (USD)
cache_read = 0.30 # Cost per million cached read tokens (USD)
cache_write = 3.75 # Cost per million cached write tokens (USD)
input_audio = 1.00 # Cost per million audio input tokens (USD)
output_audio = 10.00 # Cost per million audio output tokens (USD)
[limit]
context = 400_000 # Maximum context window (tokens)
input = 272_000 # Maximum input tokens
output = 8_192 # Maximum output tokens
[modalities]
input = ["text", "image"] # Supported input modalities
output = ["text"] # Supported output modalities
[interleaved]
field = "reasoning_content" # Name of the interleaved field "reasoning_content" or "reasoning_details"
3a. Reuse Model Metadata with base_model
For wrapper providers that mirror an existing model, prefer referencing the model-only metadata instead of duplicating provider-agnostic fields.
Use base_model when the provider serves the same underlying model and only provider-specific fields differ.
base_model = "anthropic/claude-opus-4-6"
# Match lab/peer controls for this model (not a stripped L/M/H guess)
reasoning_options = [
{ type = "effort", values = ["low", "medium", "high", "max"] },
{ type = "budget_tokens", min = 1_024 },
]
[cost]
input = 5.00
output = 25.00
Rules:
base_model must point to a TOML file in models/ using <provider>/<model-id>.
Override-only: after base_model, write only provider-specific fields and values that differ from the base. Do not restate the same description, structured_output, modalities, tool_call, dates, etc.
You may override any top-level model field when the provider actually differs.
If you override a nested table like [cost], [limit], or [modalities], include the full values needed for that table (arrays/primitives replace; plain objects deep-merge).
base_model_omit is optional and removes inherited model metadata fields after local overrides are merged. Use dot-path strings, for example base_model_omit = ["limit.input"].
Provider-specific fields (cost, reasoning_options, interleaved, status, provider, experimental) belong on the provider model when needed.
id still comes from the filename; do not add it to the TOML.
Reasoning options (short): classify first-party lab vs multi-model relay (not by npm). Copy the underlying model’s controls from the lab entry and same-surface peers — often low/medium/high on GPT-style relays, but DeepSeek V4 is toggle+high/max, etc. Do not use [] from uncertainty on relays. Full policy: AGENTS.md.
Use base_model when the wrapper model is materially the same as the source model and only differs by provider-specific pricing, limits, modalities, provider request shape, or lifecycle flags.
Sync and generator scripts should preserve existing base_model / base_model_omit fields when updating provider TOMLs. Do not use legacy [extends] tables.
4. Submit a Pull Request
Fork this repo
Create a new branch with your changes
Add your provider and/or model files
Open a PR with a clear description
Validation
There's a GitHub Action that will automatically validate your submission against our schema to ensure:
All required fields are present
Data types are correct
Values are within acceptable ranges
TOML syntax is valid
When moving existing provider fields into model metadata, compare generated output before and after the change:
bun run compare:migrations
This prints a diff for each changed model TOML so you can confirm the generated JSON only changed where you intended.
Schema Reference
Models must conform to the following schema, as defined in packages/core/src/schema.ts.
Provider Schema:
name: String - Display name of the provider
npm: String - AI SDK Package name
env: String[] - Environment variable keys used for auth
doc: String - Link to the provider's documentation
api(optional): String - OpenAI-compatible API endpoint. Required only when using @ai-sdk/openai-compatible as the npm package
TopGit's last sync did not record any GitHub topics for anomalyco/models.dev. GitHub topics appear in the right sidebar of a repository page; that's the authoritative place to check.
How active is development on anomalyco/models.dev?
The most recent commit recorded on anomalyco/models.dev was 7 days ago, based on the GitHub push timestamp. The repository has 1.4k forks — one of the better signals of community interest.
How many stars does anomalyco/models.dev have?
anomalyco/models.dev has 6.3k GitHub stars — refresh the page for the live number, or check github.com/anomalyco/models.dev. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What language is anomalyco/models.dev written in?
anomalyco/models.dev is written primarily in TypeScript. GitHub's language field is based on the largest share of bytes in the default branch.
What license does anomalyco/models.dev use?
anomalyco/models.dev is released under the MIT license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
Where can I see anomalyco/models.dev in action?
The project maintains a homepage at https://models.dev. The README tab on this page also usually contains screenshots and a quickstart.
Where do I read more about anomalyco/models.dev?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/anomalyco/models.dev is the definitive source.
Read full README in the tab above.
Want a second opinion on models.dev?
Ask an AI that can read this page — one click and you get its take on models.dev.