Sophon Docs
Models & Providers

Model CatalogNEW

The bundled model registry — capabilities, limits, and per-1M-token pricing for 20+ models, plus per-session model selection and custom overrides.

Sophon ships with a bundled model catalog — a registry of 20+ pre-configured models across Anthropic, OpenAI, Google Gemini, and Ollama. Every entry carries a display name, capability flags, context and output limits, and flat per-1M-token input/output pricing. The catalog is what powers the model pickers in the Dashboard and CLI, the Settings capability matrix, and cost tracking.

The catalog is metadata only. It never adds or configures a provider — Sophon stays bring-your-own-key. It describes the models your providers expose, so pickers and cost tracking have accurate names, capabilities, and prices.

What's in the catalog

Each catalog entry describes one model:

FieldMeaning
Display nameHuman-readable name shown in pickers and Settings
ProviderWhich provider type serves the model (anthropic, openai, gemini, ollama, …)
CapabilitiesVision, function calling, streaming, reasoning, code generation
Context windowMaximum input tokens
Max outputMaximum generated tokens
Input / output costFlat USD price per 1M tokens, each direction

A model that isn't in the catalog — a custom endpoint, a freshly released model, or a local Ollama pull — falls back to the capabilities its provider reports. Custom and local models keep working without a catalog entry; they just show provider-supplied metadata instead of curated names and pricing.

Per-session model selection

By default, routing picks the highest-priority active provider. You can override that per session — useful for sending one conversation to a cheaper model, or testing a new model without touching priorities:

  • Dashboard — the chat inspector has a model dropdown listing every active provider's models with display names and pricing inline.
  • CLI — the /provider slash command in Interactive Chat:
CommandWhat it does
/providerList configured providers — id, type, status, default model — with the active one marked
/provider <id | type> [modelId]Route this session through a specific provider (and optionally a specific model)
/provider resetClear the override; the session goes back to default priority routing

The override is session-scoped: it affects only that conversation and disappears when you reset it or start a new session. Cost tracking always prices the model actually used — including overrides — so budget numbers stay honest no matter what you pick.

Settings matrix

Settings → Models in the Dashboard shows the full catalog as a capability and pricing matrix: model, provider, context window, max output tokens, vision, function calling, streaming, reasoning, and input/output cost per 1M tokens.

Admins with the ManageModels permission can additionally hide models. A hidden model disappears from pickers and the visible-catalog API, but its pricing data is retained so historical cost reports stay accurate. Non-admins see the matrix but can't toggle visibility.

Custom models & overrides

The bundled catalog is extended — never replaced — by an optional user file:

~/.sophon/config/models-catalog.json

It's plain JSON with no secrets, so you can edit it freely or check it into your dotfiles. Entries are matched against the bundled catalog by providerType::modelId, and an override entry fully replaces the bundled entry for that key — so to correct a bundled model's pricing, repeat the complete entry (capabilities included) with the new prices. A separate suppressions list hides models without removing their pricing data:

{
  "entries": [
    {
      "providerType": "ollama",
      "modelId": "qwen3:32b",
      "displayName": "Qwen 3 32B (local)",
      "capabilities": {
        "supportsVision": false,
        "supportsFunctionCalling": true,
        "supportsStreaming": true,
        "supportsReasoning": true,
        "supportsCodeGeneration": true,
        "maxContextTokens": 131072,
        "maxOutputTokens": 16384,
        "costPer1MInputTokens": 0,
        "costPer1MOutputTokens": 0
      }
    }
  ],
  "suppressions": ["openai::gpt-4o-mini"]
}

Hiding a model from Settings → Models writes to the same suppressions list. A malformed override file is ignored with a warning — the bundled catalog keeps working.

API

EndpointWhat it returns / doesAccess
GET /api/models/catalogVisible (non-hidden) models with display names, capabilities, and pricingAny authenticated user
GET /api/models/catalog/allFull catalog including hidden entriesAdmin (ManageModels)
PUT /api/models/catalog/{providerType}/{modelId}/hiddenToggle a model's hidden flag; persists to the override fileAdmin (ManageModels)
PUT /api/sessions/{sessionId}/model-overrideSet or reset the per-session model override — what the Dashboard picker callsSession owner

Where to go next