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

# Model Manager

> Store provider API keys in your organization's encrypted vault, register the models a project may use, and see the pricing AgentHub uses for every cost figure.

Model Manager is where you bring your own provider keys (BYOK) and decide which models a project can use. Everything in AgentHub that calls a model on your behalf, such as Cost Calculator executions, Agent Audit and LLM-judge evaluators, uses a model registered here. ModelHub's chat also offers the models registered to a project.

The page has three cards:

* **API Key Vault**: provider keys, stored once per organization
* **Add model**: register a model version against one of those keys
* **My Project Models**: the models registered to the current project

<Info>
  Keys belong to the **organization** and are shared by all of its projects. Models belong to a **project**. Saving a key once lets every project in the organization register models against it.
</Info>

## Who can use it

Anyone in the organization can open the page. Saving or revoking keys and adding or removing models needs the `manage_model_keys` or `manage_agents` permission. With the default roles, that means **Owner**, **Admin** and **Editor**. Without it, actions fail with "You do not have permission to manage API keys." (or "...to add models." / "...to remove models."). See [Roles and permissions](/agenthub/settings/roles-and-permissions).

## API Key Vault

"Keys are encrypted at rest and never shown again after saving."

### Save a key

<Steps>
  <Step title="Choose the provider">
    Pick from the **Provider** list. See [Supported providers](#supported-providers) for which endpoint each one talks to.
  </Step>

  <Step title="Add a label (optional)">
    **Label (optional)**, for example "Production OpenAI key". Up to 200 characters. Labels are the only way to tell some keys apart later, so use one.
  </Step>

  <Step title="Paste the key">
    **API key** is a password field and is required. Keys longer than 8,000 characters are rejected with "That API key is too long."
  </Step>

  <Step title="Click Save key">
    The button reads **Validating…** while AgentHub checks the key. On success you see "API key saved successfully." and the key appears in the list below.
  </Step>
</Steps>

**How do I get a key?** next to the card description opens a step-by-step guide for creating a key with Anthropic, OpenAI or Google.

### Validation on save

| Provider | What happens when you click Save key |
| - | - |
| OpenAI | A one-word test request with an 8-token output cap is sent to `gpt-4o-mini`. |
| Anthropic | Same test against `claude-haiku-4-5`. |
| Google | Same test against the cheapest Gemini Flash model in the catalog. |
| All other providers | No test at save time. The key is checked later, when you add a model with it. |

The save is rejected only when the provider's error looks like an authentication failure (for example 401, 403, "invalid api key"). The message is "That API key didn't work — double-check it and try again." followed by the provider's error in parentheses. Other errors, such as the test model being unavailable on your account, do not block the save.

<Note>
  The validation request is a real, billed call to your provider. It is a few tokens, so the cost is a fraction of a cent.
</Note>

### How keys are stored

* The key is encrypted with **AES-256-GCM** on the server before it is written to the database. A fresh random IV is used for every key.
* The ciphertext never leaves the server. The vault list in your browser receives only the provider, label, hint and dates.
* After saving, the key is never shown again, anywhere. You see only a **key hint**: the first 4 and last 4 characters, for example `sk-p…3xQz`. Keys of 8 characters or fewer show as `••••••••`.
* Keys are decrypted only on the server, at the moment a model call needs them.
* Saving and revoking a key each write an entry to your organization's audit log (`api_key.created`, `api_key.revoked`).

### The key list

Each active key shows the provider name, then `label · hint` ("Untitled" when there is no label). Self-hosted server credentials show as **Self-hosted**.

When there are no keys, the card says "No active keys yet. Add one to enable model runs."

### Revoke a key

Click **Revoke** next to a key. The button reads **Revoking…**, then "API key revoked." appears.

* A revoked key disappears from the vault list immediately and can't be restored. To use the provider again, save the key again as a new entry.
* Models that were registered against it stay in **My Project Models**, but their key badge turns red and model calls through them fail. Remove and re-add those models against a new key.
* There is no way to edit or rename a saved key. Revoke it and save it again.

### Platform Demo Key

Some deployments include a **Platform Demo Key**, so you can try AgentHub before you bring your own key. When it is available, it appears as its own card at the top of the key list:

* "Anthropic models · $X.XX of $50.00 left", with a progress bar
* Badge **Platform** while it has balance, **Used up** once it is spent
* An info icon explaining: \$50.00 of demo usage for this organization, works with any Anthropic model in the catalog, and when the balance runs out, models linked to it stop running

Rules:

* The allowance is **\$50 per organization**, not per user or project.
* It works with **Anthropic models only**. Adding a non-Anthropic model against it fails with "The Platform Demo Key only works with Anthropic models."
* It can't be revoked: "The Platform Demo Key is managed by the platform and can't be revoked."
* The key value is never shown, not even as a hint.
* Platform-funded calls draw down the same balance, including model validation when you add a model against it and Cost Calculator executions on models bound to it.
* Once it is used up, it no longer appears in the Add model key picker. Save your own Anthropic key and add the model again against it.

## Supported providers

The **Provider** list in both cards offers eleven hosted providers. Every one of them makes real calls; none is a placeholder.

| Provider in the list | API AgentHub calls | Key you need |
| - | - | - |
| OpenAI | `api.openai.com` Chat Completions | OpenAI API key |
| Anthropic | `api.anthropic.com` Messages | Anthropic API key |
| Google | Gemini API (`generativelanguage.googleapis.com`) | Google AI Studio / Gemini API key |
| Meta | Together AI (`api.together.xyz`), OpenAI-compatible | **Together AI** key |
| Mistral AI | `api.mistral.ai`, OpenAI-compatible | Mistral key |
| xAI | `api.x.ai`, OpenAI-compatible | xAI key |
| DeepSeek | `api.deepseek.com`, OpenAI-compatible | DeepSeek key |
| Cohere | Cohere's OpenAI compatibility API | Cohere key |
| Kimi | Moonshot (`api.moonshot.ai`), OpenAI-compatible | Moonshot key |
| AI21 | AI21 Studio, OpenAI-compatible | AI21 key |
| Qwen | Alibaba Cloud Model Studio international (DashScope), OpenAI-compatible | DashScope key |

There is also **Self-hosted / open source** in the Add model card, covered [below](#self-hosted-and-open-source-models).

<Warning>
  Keys for the eight OpenAI-compatible providers (Meta through Qwen above) are all stored under one internal provider type. The vault list shows them as **Custom**, and when you add, say, a Mistral model, the key picker offers every key saved for any of those eight providers. Give each key a clear label such as "Mistral prod" so you pick the right one.
</Warning>

**Not available:** Amazon (Bedrock) and Perplexity are in the pricing catalog but hidden from the lists because they have no callable models today. Azure OpenAI is not offered in Model Manager.

## Add model

"Choose a provider then a model version."

| Field | Details |
| - | - |
| **Provider** | One of the eleven providers above, or **Self-hosted / open source**. Changing provider clears the model version and any key that no longer matches. |
| **Model version** | The models the catalog lists for that provider, each shown as `name — $input/$output per 1M`. Placeholder "Select a version". |
| **Display name** | Auto-filled from the model's catalog name. You can change it (up to 200 characters). This is the name shown across AgentHub and in ModelHub. |
| **API key** | Only keys saved for this provider are offered, shown as `label · hint`. Placeholder "Select a stored *Provider* key", or "No *Provider* key saved" when there is none, with the hint "Save a *Provider* key in the API Key Vault to add this model." The Platform Demo Key shows as "Platform Demo Key · \$X.XX left". |

Click **Add model**. The button is disabled until a key is selected and reads **Validating…** while AgentHub sends a real test request to that exact model with that key (8 output tokens). On success: "Model added successfully."

Errors you can see:

| Message | Cause |
| - | - |
| "Choose a model version." | No version selected. |
| "This model + key didn't work — check the key has access to *model*." followed by the provider error | The test call failed: wrong key, model not enabled on your account, or the provider is down. |
| "The selected API key is missing or revoked. Add it again." | The key was revoked after you opened the page. |
| "The Platform Demo Key only works with Anthropic models." | Demo key used with another provider. |
| "That key belongs to a different kind of server. Pick a key saved for this provider." | A self-hosted credential was paired with a hosted model, or the reverse. |

What is stored for a model: provider, model identifier, display name, the key it is bound to, and modalities. Modalities are always **text**; there is no image or audio option in the form.

<Note>
  Model configurations also have fields for a default max output token count and a default thinking budget, but Model Manager does not expose them. Models added here leave both unset, and the Cost Calculator then uses a 1,024-token output cap per call.
</Note>

You can register the same model more than once, for example once against your own key and once against the Platform Demo Key. The key badge in the list tells them apart.

## Self-hosted and open-source models

Choose **Self-hosted / open source** as the provider to connect a model running on your own server.

| Field | Details |
| - | - |
| **Runtime** | Ollama, vLLM, LM Studio, llama.cpp server, Hugging Face TGI, LocalAI, or Other OpenAI-compatible. |
| **Base URL** | Your server's address. The placeholder shows the runtime's usual default (for example `http://localhost:11434` for Ollama, `http://localhost:8000/v1` for vLLM). Must start with `http://` or `https://`, up to 500 characters. |
| **API key (optional)** | "Only if your server requires one." |
| **Test connection** | Lists the models your server offers so you can pick one. |
| **Model** | Pick from the list, or type the name exactly as your server lists it ("Pick a model from your server"). |
| **Display name (optional)** | Defaults to `model (Runtime)`. |
| **Advanced: cost override, custom headers** | **Input $/ 1M** and **Output$ / 1M** (0 to 1000). "Self-hosted runs cost \$0 by default. Set a per-1M-token rate to account for your hardware." **Custom headers** (one per line, `Name: value`), for example an access-proxy header. "Stored encrypted with the key." |

When you click **Add model**, AgentHub checks the server is reachable and, if it lists models, that your model name is among them ("Your server doesn't list "*name*". Available: ..."). The API key and headers are encrypted in the vault like any other key, and appear there as a Self-hosted entry labelled `Self-hosted · Runtime · host`.

<Warning>
  Calls to your server are made from CorePillar's servers, not from your browser. A `localhost` or private-network address is only reachable if AgentHub itself runs on that network. On the hosted service, private, loopback and internal addresses are blocked, so expose the server on a public address (behind authentication) instead. Listing models times out after 8 seconds; a generation call times out after 180 seconds.
</Warning>

## My Project Models

"Store a provider API key, then register at least one model to use the Playground." Each row shows:

* The provider icon and **display name**
* A key badge: `label · hint` for your own keys, **Platform Demo Key** for the demo key, or **Unknown key**. The badge is red when the key is revoked, missing, or the demo balance is used up, meaning calls through this model will fail. Hover it to see "Bound to ...".
* `Provider · model identifier · modalities`

To remove a model, click the trash icon, then **Remove** at "Remove this model?" (or **Cancel**). Removing a model does not revoke the key it used. There is no edit action; to change a model's key or display name, remove it and add it again.

**Empty state:** "Add your first model — No models registered yet — use the Add model card above to register one."

Adding and removing models writes `model.created` and `model.deleted` entries to the audit log.

## Pricing

Every cost figure in AgentHub, from the Cost Calculator estimate to the AI Usage dashboard, comes from one built-in pricing table. Prices are in US dollars per 1,000,000 tokens, input and output separately, and were researched against each provider's official pricing page in September 2026. Where a provider publishes a cache-hit input rate, the table carries it too. Open-weight models are priced at a representative host (Meta at Together AI).

The prices are list prices. If your organization has negotiated rates, AgentHub's dollar figures will not reflect them. A self-hosted model is priced at \$0 unless you set a cost override when you add it.

The table as it ships today:

<AccordionGroup>
  <Accordion title="OpenAI (11 models)">
    | Model | Input \$/1M | Output \$/1M | Cached input \$/1M |
    | - | - | - | - |
    | GPT-6 Astra | 10.00 | 50.00 | 1.00 |
    | GPT-6 Sol | 2.00 | 10.00 | 0.20 |
    | GPT-6 Luna | 0.10 | 0.50 | 0.01 |
    | GPT-5.6 Sol | 4.00 | 20.00 | 0.40 |
    | GPT-5.6 Terra | 2.00 | 12.00 | 0.20 |
    | GPT-5.6 Luna | 0.20 | 1.20 | 0.02 |
    | GPT-5.3 Codex | 1.75 | 14.00 | 0.175 |
    | GPT-4.1 | 2.00 | 8.00 | 0.50 |
    | GPT-4.1 mini | 0.40 | 1.60 | 0.10 |
    | GPT-4o | 2.50 | 10.00 | 1.25 |
    | GPT-4o mini | 0.15 | 0.60 | 0.075 |
  </Accordion>

  <Accordion title="Anthropic (12 models)">
    | Model | Input \$/1M | Output \$/1M | Cached input \$/1M |
    | - | - | - | - |
    | Fable 5.1 | 10.00 | 50.00 | 0.25 |
    | Opus 5.5 | 4.00 | 20.00 | 0.20 |
    | Sonnet 5.5 | 2.00 | 10.00 | 0.20 |
    | Fable 5 | 10.00 | 50.00 | 1.00 |
    | Opus 5 | 5.00 | 25.00 | 0.50 |
    | Opus 4.8 | 5.00 | 25.00 | 0.50 |
    | Opus 4.7 | 5.00 | 25.00 | 0.50 |
    | Opus 4.6 | 5.00 | 25.00 | 0.50 |
    | Sonnet 5 | 2.00 | 10.00 | 0.20 |
    | Sonnet 4.6 | 3.00 | 15.00 | 0.30 |
    | Sonnet 4.5 | 3.00 | 15.00 | 0.30 |
    | Haiku 4.5 | 1.00 | 5.00 | 0.10 |
  </Accordion>

  <Accordion title="Google (6 models)">
    | Model | Input \$/1M | Output \$/1M | Cached input \$/1M |
    | - | - | - | - |
    | Gemini 3.8 Flash | 0.75 | 3.75 | 0.075 |
    | Gemini 3.7 Flash | 0.75 | 3.75 | 0.075 |
    | Gemini 3.6 Flash | 0.75 | 3.75 | 0.075 |
    | Gemini 3.5 Flash | 1.50 | 9.00 | 0.15 |
    | Gemini 3.5 Flash-Lite | 0.30 | 2.50 | 0.03 |
    | Gemini 3.1 Pro (preview) | 2.00 | 12.00 | 0.20 |

    The 3.6 to 3.8 Flash rates are promotional until 2027-01-01.
  </Accordion>

  <Accordion title="Meta (2 models, via Together AI)">
    | Model | Input \$/1M | Output \$/1M | Cached input \$/1M |
    | - | - | - | - |
    | Muse Glimmer 30B | 0.35 | 1.50 | 0.04 |
    | Llama 3.3 70B Turbo | 1.04 | 1.04 | — |
  </Accordion>

  <Accordion title="Mistral AI (7 models)">
    | Model | Input \$/1M | Output \$/1M |
    | - | - | - |
    | Mistral Medium 3.5 | 1.50 | 7.50 |
    | Mistral Large 3 | 0.50 | 1.50 |
    | Mistral Small 4 | 0.15 | 0.60 |
    | Codestral | 0.30 | 0.90 |
    | Ministral 3 14B | 0.20 | 0.20 |
    | Ministral 3 8B | 0.15 | 0.15 |
    | Ministral 3 3B | 0.10 | 0.10 |
  </Accordion>

  <Accordion title="xAI (6 models, short-context rates)">
    | Model | Input \$/1M | Output \$/1M | Cached input \$/1M |
    | - | - | - | - |
    | Grok 4.7 | 2.00 | 6.00 | 0.50 |
    | Grok 4.6 | 2.00 | 6.00 | 0.50 |
    | Grok 4.5 | 2.00 | 6.00 | 0.30 |
    | Grok 4.3 | 1.25 | 2.50 | 0.20 |
    | Grok 4.20 Reasoning | 1.25 | 2.50 | 0.20 |
    | Grok 4.20 | 1.25 | 2.50 | 0.20 |
  </Accordion>

  <Accordion title="DeepSeek (2 models, peak-hour rates)">
    | Model | Input \$/1M | Output \$/1M | Cached input \$/1M |
    | - | - | - | - |
    | V4 Pro | 1.32 | 3.96 | 0.044 |
    | V4.1 Flash | 0.30 | 1.20 | 0.006 |

    Off-peak rates are half; AgentHub always prices at the peak rate.
  </Accordion>

  <Accordion title="Cohere (6 models)">
    | Model | Input \$/1M | Output \$/1M |
    | - | - | - |
    | Command A+ | 0.00 | 0.00 |
    | Command A | 2.50 | 10.00 |
    | Command R+ | 2.50 | 10.00 |
    | Command R | 0.15 | 0.60 |
    | Command R7B | 0.0375 | 0.15 |
    | Embed v4 | 0.12 | 0.00 |

    Embed v4 is an embedding model. It appears in the version list but can't generate text, so adding it as a chat model will fail validation.
  </Accordion>

  <Accordion title="Kimi (4 models)">
    | Model | Input \$/1M | Output \$/1M | Cached input \$/1M |
    | - | - | - | - |
    | K3 | 3.00 | 15.00 | 0.30 |
    | K2.7 Code | 0.95 | 4.00 | 0.19 |
    | K2.7 Code High-Speed | 1.90 | 8.00 | 0.38 |
    | K2.6 | 0.95 | 4.00 | 0.16 |
  </Accordion>

  <Accordion title="AI21 (2 models)">
    | Model | Input \$/1M | Output \$/1M |
    | - | - | - |
    | Jamba Large | 2.00 | 8.00 |
    | Jamba Mini | 0.20 | 0.40 |
  </Accordion>

  <Accordion title="Qwen (4 models)">
    | Model | Input \$/1M | Output \$/1M |
    | - | - | - |
    | Qwen3.8 Max | 2.00 | 6.00 |
    | Qwen3.8 Flash | 0.15 | 0.47 |
    | Qwen3.7 Plus | 0.40 | 1.60 |
    | Qwen3.7 Flash | 0.03 | 0.13 |
  </Accordion>
</AccordionGroup>

<Note>
  The page subtitle mentions "13 providers, 84 model versions". The lists you can actually pick from today contain 11 providers and the 62 models above; the two hidden providers have no callable models.
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Cost Calculator" icon="calculator" href="/agenthub/cost-calculator">
    Run generated scenarios against the models you registered here.
  </Card>

  <Card title="Evaluation" icon="list-checks" href="/agenthub/evaluation/overview">
    LLM-judge evaluators run on a model from this page.
  </Card>

  <Card title="AI Usage" icon="chart-column" href="/agenthub/ai-usage">
    See what those models cost across the organization.
  </Card>

  <Card title="Roles and permissions" icon="shield" href="/agenthub/settings/roles-and-permissions">
    Who can manage keys and models.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.