> ## Documentation Index
> Fetch the complete documentation index at: https://docs.genesiscomputing.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Model Universe

> Curate the approved set of models available to Genesis users, tasks, and agents.

## Overview

**Model Universe** is the governance page for model availability. It lets admins browse the provider catalog, add approved models into the Genesis universe, define display names, and assign which workloads each model is available for.

<img src="https://mintcdn.com/genesiscomputing/veD1H6lmZZSkMTgm/images/model_universe_actual.png?fit=max&auto=format&n=veD1H6lmZZSkMTgm&q=85&s=ce70c5c4f771b7f084530b5aa82fe280" alt="Actual Genesis Model Universe page showing provider catalog models and the configured model universe." width="1440" height="1024" data-path="images/model_universe_actual.png" />

## Workspace layout

| Pane | Purpose |
| - | - |
| **Available Models** | Browse the provider catalog and inspect recommended models. |
| **Your Model Universe** | Review the models Genesis actually exposes to users and agents. |

When you open Model Universe from **Change Models** or the **Embeddings** tab,
Genesis appends `?from=chat` or `?from=embeddings` to the URL. The back link
returns to the matching **AI Providers** tab — on **Stable**
(`?tab=llm` or `?tab=embeddings` at `/config/llm-providers/`) or on **Beta**
(`?tab=chat` or `?tab=embeddings` at `/config/ai-providers/`).

On Genesis Desktop, provider selection and model actions are available only for
Genesis AI; interacting with another provider's catalog opens the Genesis
Enterprise modal. See [AI Providers](/docs/Setup/Setup-AI-Model) for the
provider restriction.

## Common tasks

* add a recommended model to the universe,
* register a custom model name,
* review LiteLLM Proxy models auto-discovered after provider save (`source_type: discovered`),
* inspect the underlying backend model for a proxy alias,
* change a display name,
* assign which workloads a model is available for,
* remove a non-required model.

<Note>
  If Genesis cannot load a provider catalog live, it falls back to the
  recommended-model catalog in `config/llm_config.yaml` rather than a separate
  built-in list. Chat-model fallbacks come from `llm_models.<provider>`,
  embedding fallbacks come from `embedding_models.<provider>`, and the `Fast`
  tier uses models marked `is_fast: true`; if a provider has no `is_fast`
  entries, Genesis reuses that provider's main chat fallback list.

  For `litellm_gemini`, the shipped fast-tier catalog entry is
  `gemini/gemini-3.5-flash-lite`; the shipped default chat entry is
  `gemini/gemini-3.8-flash`. These are catalog defaults and can be replaced from
  **Change Models**.

  For Anthropic-family models loaded through LiteLLM-managed providers,
  Genesis also applies the deployment's `llm_context_overrides` from
  `config/llm_config.yaml` when it resolves model metadata. The current
  `claude-fable-5-1.max_input_tokens` override is `900000`, the
  `anthropic.family_default.max_input_tokens` cap is `200000`, the shipped
  `claude-opus-5-5.max_input_tokens` and `claude-opus-5.max_input_tokens`
  overrides are `900000`, the
  `claude-opus-4-8.max_input_tokens` and `claude-opus-4-7.max_input_tokens`
  overrides are `300000`. Databricks' provider-qualified
  `databricks-claude-opus-5-5` identifier resolves to the `claude-opus-5-5`
  override and `databricks-claude-opus-5` to `claude-opus-5`, so both caps
  are `900000` as well.
  The `llm_context_overrides.openai.gpt-6.max_input_tokens` override is
  `900000` for the GPT-6 family, including later `gpt-6*` SKUs, on OpenAI,
  Azure, and LiteLLM routes.
  Technical model
  identifiers that include `-1m` keep the provider-advertised 1M input
  window.

  Open-weight SKUs served under bare **Snowflake Cortex** technical names (for
  example `llama3.1-70b` or `mistral-large`) no longer carry a Genesis-side
  `llm_context_overrides` entry — LiteLLM's own catalog does not advertise a
  context window for them either, so a custom model of that kind falls back to
  the generic context default. Claude models served through Cortex still
  resolve through the `anthropic` family overrides above.

  For **LiteLLM Proxy**, catalog and universe entries use the normalized bare
  proxy model id; Genesis strips `litellm_proxy/` and `proxy/` transport
  prefixes from discovery responses before persisting technical names. Saving or
  updating the LiteLLM Proxy provider materializes discovered models into **Your
  Model Universe** with `source_type: discovered`. The **Change Models** picker
  reads those materialized rows when present. Opening **Change Models**, the
  **Embeddings** model step, or the models step in the new-connection drawer
  also calls `POST /api/config/model-universe/refresh?provider=litellm_proxy`
  (throttled per process; see `llm.proxy_universe_refresh_interval_seconds`) so
  models added to the proxy after the connection was saved appear without
  re-saving that connection. Tier assignments are not re-inferred on refresh.
  When the universe is empty, opening **Change Models** or saving main-provider
  assignments triggers an idempotent self-heal: Genesis runs discovery and
  materializes rows once (no extra proxy round-trip when rows already exist) so
  underlying-model metadata is available without re-saving the provider
  connection. When `/models` discovery fails during materialization or refresh,
  Genesis preserves existing materialized rows instead of reconciling against
  an empty failed fetch. Live `/models` discovery is still used as a fallback
  when the universe is empty and materialization cannot reach the proxy.
  Discovered rows that include an
  underlying model show it in the model details dialog; custom rows you add
  manually keep `source_type: custom` and are not overwritten by discovery
  refresh. Proxy entries whose catalog mode is `image_generation` are labeled
  **Image** in the universe and are available for `image_generation`, not chat
  roles.
</Note>

## Automation surface

| Endpoint family | Use |
| - | - |
| `/api/config/llm-providers/` | Load configured providers (Stable page). |
| `/api/config/ai-providers/overview` | Load the Beta **AI Providers** page overview (setup stages, active assignments, masked subtitles). |
| `/api/config/models/main/models/{provider}` | List main chat models for a provider (used by the **Change Models** modal). Live-discovery proxies also return `discovery_status`, `discovery_error`, and `discovered_models`. |
| `/api/config/models/embeddings/models/{provider}` | List embedding models for a provider (used by the **Embeddings** tab picker). |
| `/api/config/model-universe/catalog` | Read the provider model catalog. |
| `/api/config/model-universe/models` | Add, update, or remove universe entries. List responses include `underlying_model` and `proxy_model_info` for materialized LiteLLM Proxy aliases. |
| `/api/config/model-universe/test-model` | Validate a custom model name before adding it. |
| `/api/config/model-universe/refresh` | Re-discover a live-discovery proxy (`litellm_proxy`) into the universe. Called automatically when model-picking screens open; throttled by `llm.proxy_universe_refresh_interval_seconds`. |

## Related pages

* [OAuth Providers](/docs/Setup/OAuth-Providers)
* [Config Profiles](/docs/Setup/Config-Profiles)
