LLM model catalog¶
Schema: docs/schemas/runtime/llm-model-catalog.schema.yaml
Data: runtime/src/mas/runtime/spec/llm-model-catalog.yaml (metadata.version)
Loader: mas.runtime.engine.llm_model_catalog
Per-model context window, max output, defaults, and allowed settings — the same shape we want for a small reusable library. This repo ships a curated YAML, not a vendor dump.
Why not import LiteLLM wholesale¶
LiteLLM model_prices_and_context_window.json
is the closest reusable community table (MIT). It is large, changes daily, and
is not a MAS schema. The catalog lists it under spec.sources with
reusable: true so a later mas-llm-models package can wrap that JSON behind
the same ModelCatalog.get(name) API.
Other pointers (not in-process libraries):
| Source | URL | Reuse |
|---|---|---|
| OpenRouter models API | https://openrouter.ai/api/v1/models | live HTTP (supported_parameters) |
| models.dev | https://models.dev | aggregated community catalog |
| Hugging Face model cards | https://huggingface.co/models | cards / TGI |
| vLLM OpenAI server | https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html | think / chat_template_kwargs |
| Ollama API | https://github.com/ollama/ollama/blob/main/docs/api.md | think |
Aider MODEL_SETTINGS |
https://github.com/Aider-AI/aider/blob/main/aider/resources/model-settings.yml | Aider-specific YAML |
| Continue.dev | https://github.com/continuedev/continue | product configs |
| OpenClaw | historical MAS extract | not in this tree as a capability table — git history moved OpenClaw plugins (memory, telemetry), not a model list |
Each catalog settings.<name> entry may carry supported, default, min,
max, and enum (the allowed list). When the spec omits a field, catalog
defaults are applied. Numeric spec values are clamped to min/max when
the model is known. Reasoning knobs (reasoning.*, think, include) are
deny-by-default on known models: omitting the setting means unsupported.
Unknown models keep the spec as written. Do not use a default alias — it
collides with last-path-segment lookup.
Shape¶
apiVersion: mas/v1
kind: LlmModelCatalog
metadata:
name: standard
version: "2026.9.2"
spec:
sources: [...]
models:
gpt-5:
aliases: [openai/gpt-5]
context_window: 400000
max_output_tokens: 128000
defaults:
reasoning.effort: medium
settings:
reasoning.effort: {enum: [none, minimal, low, medium, high, xhigh]}
reasoning.mode: {enum: [standard, pro]}
think: {supported: false}
ModelCatalog.get("openai/gpt-5") resolves aliases. Unknown models are
permitted: the spec still sends what the user set; the catalog does not invent
a deny-by-default filter.
Bump metadata.version when curated numbers change.