Curated catalog of LLM providers and chat models that are verified to work with Spettro. Built automatically and published to catalog.spettro.app.
Published files (the only two files served):
https://catalog.spettro.app/providers.json— pretty-printed, for humanshttps://catalog.spettro.app/providers.min.json— minified, what the Spettro CLI downloads
The catalog is rebuilt on every push to main and every six hours (via
GitHub Actions cron) to pick up new models from
models.dev.
{
"version": 1,
"updated": "2026-07-13",
"providers": {
"groq": {
"name": "Groq",
"api": "openai",
"base_url": "https://api.groq.com/openai/v1",
"env": "GROQ_API_KEY",
"models": {
"llama-3.3-70b-versatile": {
"name": "Llama 3.3 70B",
"tool_call": true,
"context": 131072
}
}
}
}
}apiis"openai"or"anthropic"— the wire protocol Spettro uses to talk to the provider. These are the only two protocols Spettro supports.base_urlis the API endpoint. Forapi: "openai"it is the OpenAI-compatible root, usually ending in/v1. Forapi: "anthropic"it is the root without/v1(the Anthropic client appends/v1/messagesitself).envis the environment variable Spettro reads the API key from.- Model flags (
reasoning,tool_call,vision) are omitted when false;contextis the context window in tokens;status(alpha/beta) is omitted when stable. Only chat models are included — embeddings, image/audio generation, rerankers etc. are filtered out.
Curated providers come from models.dev, filtered by config.json. To propose
a new one, open a PR adding its models.dev id to the curated map with at
least a base_url override (and api/env if needed). Please state in the
PR that you actually tested the provider with Spettro.
Add a file custom/<your-provider-id>.json following
custom/_example.json: id, display name, api
(openai or anthropic), base_url, env, and the list of models with
their capabilities. Files starting with _ are ignored by the build.
CI validates every PR by running the full build; a provider with a missing
field, an invalid api value, or a duplicate id fails the check.
node scripts/build.mjs # writes dist/providers.json + dist/providers.min.json
# offline (reuse a downloaded models.dev dump):
MODELS_DEV_JSON=/path/to/api.json node scripts/build.mjsRequires Node 18+, no dependencies.
Deployed to GitHub Pages via .github/workflows/deploy.yml. One-time setup:
- Repo Settings → Pages → Source: GitHub Actions.
- Set the custom domain to
catalog.spettro.appand add a DNSCNAMErecord pointingcatalog.spettro.appto<user>.github.io.