model-metadata-central
v0.4.0
Published
Typed TypeScript registry of LLM model metadata (context windows, pricing, providers)
Maintainers
Readme
model-metadata-central
Typed registry of LLM model metadata — context windows, pricing, provider routing — for TypeScript/Node.js projects.
Install
npm install model-metadata-centralUsage
Full registry
import { getAllModels, getAllProviders } from "model-metadata-central";
// Populate a model selector dropdown
const models = getAllModels();
const modelOptions = models.map((m) => ({
value: m.model_id,
label: m.model_name,
contextWindow: m.context_window,
pricePerMillion: m.cost_per_million_tokens,
}));Look up a single model
import { getModel } from "model-metadata-central";
const model = getModel("gpt-4o");
if (model) {
console.log(model.context_window); // 128000
console.log(model.cost_per_million_tokens); // { input: 5, output: 15 }
}Filter by provider
import { getModelsByProvider } from "model-metadata-central";
const anthropicModels = getModelsByProvider("anthropic");
const openrouterModels = getModelsByProvider("openrouter");Provider routing
import { getProviderModelId, getProvider } from "model-metadata-central";
// Get the model ID for a specific provider
const openaiId = getProviderModelId("gpt-4o", "openai"); // "gpt-4o"
const openrouterId = getProviderModelId("gpt-4o", "openrouter"); // "openai/gpt-4o"
// Get provider config (base URL, auth type, etc.)
const provider = getProvider("openai");
console.log(provider.base_url); // "https://api.openai.com/v1"
console.log(provider.auth_type); // "api_key"Tree-shakeable named exports
Import only the models you need — bundlers will exclude the rest.
import { gpt4o, claudeOpus47 } from "model-metadata-central";
// gpt4o and claudeOpus47 are fully typed ModelMetadata objects
// The full registry + helpers are excluded from the bundleTypeScript types
All types are exported for your own data structures:
import type { ModelMetadata, ProviderMetadata, TokenCosts } from "model-metadata-central";
function logCost(model: ModelMetadata) {
if (model.cost_per_million_tokens) {
const cost = model.cost_per_million_tokens as TokenCosts;
console.log(`$${cost.input} per 1M input tokens`);
}
}API
| Function | Returns | Description |
| -------------------------------------------------- | ------------------------------- | --------------------------------- |
| getModel(id) | ModelMetadata \| undefined | Lookup by model_id |
| getAllModels() | readonly ModelMetadata[] | All models |
| getModelsByProvider(providerId) | readonly ModelMetadata[] | Filter by provider |
| getModelOnProvider(providerId, providerModelId?) | ModelMetadata \| undefined | Find model on a specific provider |
| getProvider(id) | ProviderMetadata \| undefined | Provider config |
| getAllProviders() | readonly ProviderMetadata[] | All providers |
| getProviderModelId(modelId, providerId) | string \| undefined | Provider-specific model ID |
Data
- Registry compiled from
/models/*.yamland/providers/*.yamlat build time - 73 models across 18 providers
- Prices are in USD per 1,000,000 tokens
Schema
Matches model-metadata.schema.json and provider.schema.json.
