An open API service indexing awesome lists of open source software.

https://github.com/smallmain/vscode-unify-chat-provider

Integrate multiple LLM API providers into VS Code's GitHub Copilot Chat using the Language Model API. Aggregates the latest free mainstream models, configurable in just a few steps! One-click use of your Claude Code, Gemini CLI, Antigravity, Github Copilot, Qwen Code, OpenAI CodeX (ChatGPT Plus/Pro) account quotas.
https://github.com/smallmain/vscode-unify-chat-provider

ai chat copilot custom-chat custom-models github-copilot language-model language-model-api llm ucp

Last synced: about 1 month ago
JSON representation

Integrate multiple LLM API providers into VS Code's GitHub Copilot Chat using the Language Model API. Aggregates the latest free mainstream models, configurable in just a few steps! One-click use of your Claude Code, Gemini CLI, Antigravity, Github Copilot, Qwen Code, OpenAI CodeX (ChatGPT Plus/Pro) account quotas.

Awesome Lists containing this project

README

          




Unify Chat Provider


Integrate multiple LLM API providers into VS Code's GitHub Copilot Chat using the Language Model API.




English |
简体中文

## Features

- 🐑 **Free Tier Access**: Aggregates the latest free mainstream models, configurable in just a few steps!
- 🔌 **Perfect Compatibility**: Supports all major LLM API formats (OpenAI Chat Completions, OpenAI Responses, Anthropic Messages, Ollama Chat, Gemini).
- 🎯 **Deep Adaptation**: Adapts to special API features and best practices of 45+ mainstream providers.
- 🚀 **Best Performance**: Built-in recommended parameters for 200+ mainstream models, allowing you to maximize model potential without tuning.
- 📦 **Out of the Box**: One-click configuration, or one-click migration from mainstream applications and extensions, with automatic syncing of official model lists, no tedious operations required.
- 💾 **Import and Export**: Complete import/export support; import existing configs via Base64, JSON, URL, or URI.
- 💎 **Great UX**: Visual interface configuration, fully open model parameters, supports unlimited provider and model configurations, and supports coexistence of multiple configuration variants for the same provider and model.
- ✨ **One More Thing**: One-click use of your Claude Code, Gemini CLI, Antigravity, Github Copilot, OpenAI Codex (ChatGPT Plus/Pro) account quotas.

## Installation

- Search for [Unify Chat Provider](https://marketplace.visualstudio.com/items?itemName=SmallMain.vscode-unify-chat-provider) in the VS Code Extension Marketplace and install it.
- Download the latest `.vsix` file from [GitHub Releases](https://github.com/smallmain/vscode-unify-chat-provider/releases), then install it in VS Code via `Install from VSIX...` or by dragging it into the Extensions view.

## Quick Start

Check out the [Cookbook](#-cookbook), you can start using it in minutes:

- **Free Claude 4.5 & Gemini 3 / 3.1 Series Models**:
- [Add Gemini CLI / Antigravity Account](#add-gemini-cli--antigravity-account)
- **Partially Free Claude, GPT, Gemini, Grok Series Models**:
- [Add GitHub Copilot Account](#add-github-copilot-account)
- **Free Kimi K2.5, GLM 4.7, MiniMax M2.1 Series Models**:
- [Add Nvidia Account](#add-nvidia-account)
- **Kimi, GLM, MiniMax, Qwen, DeepSeek, Llama Series Models**:
- [Add Synthetic Account](#add-synthetic-account)
- More Recipes:
- [Impersonate Claude Code Client](#impersonate-claude-code-client)

You can also check the [Provider Support Table](#provider-support-table):

- Browse all providers with **long-term free quotas**.
- [One-Click Configuration](#one-click-configuration) to start.

When you have added multiple providers or models:

- Use the [Manage Providers](#manage-providers) interface for unified management.
- Use [Import and Export](#import-and-export) to backup or share configurations with others.

Currently, you might also be looking for:

- [One-Click Migration](#one-click-migration): Migrate from other apps or extensions.
- [Manual Configuration](#manual-configuration): Add any provider and model completely from scratch.

If the above content still doesn't help you, please continue reading the rest of this document, or create an Issue for help.

## 🍱 Cookbook

#### Add Gemini CLI / Antigravity Account

> ⚠️ Warning: This may violate Google's Terms of Service, please be aware of the risk of account banning!

0. You need to prepare a Google account.
1. Open the VS Code Command Palette and search for `Unify Chat Provider: Add Provider From Well-Known Provider List`.
2. Select `Google Antigravity` in the list, leave `Project ID` blank and press Enter.
3. Allow the extension to open the browser for authorized login, and log in to your account in the browser.
4. After logging in, return to VS Code and click the `Save` button at the bottom of the configuration interface to complete.
5. Optional: Repeat the above steps to add the `Google Gemini CLI` provider.

The quotas for Antigravity and Gemini CLI for the same account are independent, so it is recommended to add both to get more free quotas.

**Gemini CLI Permission Error Solution:**

When using Gemini CLI models, you may see:

- Permission 'cloudaicompanion.companions.generateChat' denied on resource '//cloudaicompanion.googleapis.com/projects/...'
- 'No project ID found for Gemini CLI.'

That means you need to have your own `Project ID`.

1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create or select a project
3. Enable the **Gemini for Google Cloud API** (`cloudaicompanion.googleapis.com`)
4. When authorizing, explicitly fill in the `Project ID` instead of leaving it blank.

#### Add GitHub Copilot Account

VS Code's Copilot Chat itself supports logging into a GitHub Copilot account, so this is generally used to quickly switch between multiple accounts.

0. You need to prepare a Github account.
1. Open the VS Code Command Palette and search for `Unify Chat Provider: Add Provider From Well-Known Provider List`.
2. Select `Github Copilot` in the list, and choose `Github.com` or `Github Enterprise` depending on whether your account is an enterprise subscription.
3. Allow the extension to open the browser for authorized login, and log in to your account in the browser.
4. After logging in, return to VS Code and click the `Save` button at the bottom of the configuration interface to complete.

#### Add Nvidia Account

0. You need to prepare an Nvidia account.
1. Open the VS Code Command Palette and search for `Unify Chat Provider: Add Provider From Well-Known Provider List`.
2. Select `Nvidia` in the list, fill in the API Key generated in the user panel and press Enter.
3. Click the `Save` button at the bottom of the configuration interface to complete.

> If you need to use the Kimi K2.5 model, please add it from the built-in model list, as the official API may not have returned this model information yet.

#### Add Synthetic Account

0. You need to prepare a Synthetic account.
1. Open the VS Code Command Palette and search for `Unify Chat Provider: Add Provider From Well-Known Provider List`.
2. Select `Synthetic` in the list, fill in the API Key generated in the user panel and press Enter.
3. Click the `Save` button at the bottom of the configuration interface to complete.

#### Impersonate Claude Code Client

> ⚠️ Warning: This may violate the provider's Terms of Service, please be aware of the risk of account banning!

When do you need to use this?

- Some Coding Plan subscriptions or relay sites require you to strictly use their API Key in Claude Code.
- You need to use Claude Code's account quota in Github Copilot.

Steps:

0. You need to prepare a Claude Code account or API Key (whether official Key or not).
1. Open the VS Code Command Palette and search for `Unify Chat Provider: Add Provider From Well-Known Provider List`.
2. Select `Claude Code` in the list, and choose from two verification methods:
- `API Key`: Fill in the API Key used in Claude Code.
- `Claude Code`: Allow the extension to open the browser for authorized login, and log in to your account in the browser.
3. If your `Base URL` is not the official `https://api.anthropic.com`:
- In the pop-up configuration interface, click `Provider Settings...` -> `API Base URL` and fill in the URL you want to use.
- Return to the previous interface.
4. Click the `Save` button at the bottom of the configuration interface to complete.

## Basic Operations

The UI is integrated into the VS Code Command Palette for a more native experience. Here’s the basic workflow:

1. Open the Command Palette:
- From the menu: `View` -> `Command Palette...`
- Or with the shortcut: `Ctrl+Shift+P` (Windows/Linux) or `Cmd+Shift+P` (Mac)
2. Search commands:
- Type `Unify Chat Provider:` or `ucp:` to find all commands.
3. Run a command:
- Select a command with mouse or arrow keys, then press Enter.



## One-Click Migration

See the [Application Migration Support Table](#application-migration-support-table) to learn which apps and extensions are supported.

> If your app/extension is not in the list, you can configure it via [One-Click Configuration](#one-click-configuration) or [Manual Configuration](#manual-configuration).

**Steps:**

1. Open the VS Code Command Palette and search for `Unify Chat Provider: Import Config From Other Applications`.




- The UI lists all supported apps/extensions and the detected config file paths.
- Use the button group on the far right of each item for additional actions:
1. `Custom Path`: Import from a custom config file path.
2. `Import From Config Content`: Paste the config content directly.

2. Choose the app/extension you want to import, then you’ll be taken to the config import screen.
- This screen lets you review and edit the config that will be imported.
- For details, see the [Provider Settings](#provider-settings) section.

3. Click `Save` to complete the import and start using the imported models in Copilot Chat.



## One-Click Configuration

See the [Provider Support Table](#provider-support-table) for providers supported by one-click configuration.

> If your provider is not in the list, you can add it via [Manual Configuration](#manual-configuration).

**Steps:**

1. Open the VS Code Command Palette and search for `Unify Chat Provider: Add Provider From Well-Known Provider List`.



2. Select the provider you want to add.
3. Follow the prompts to configure authentication (usually an API key, or it may require logging in via the browser), then you’ll be taken to the config import screen.
- This screen lets you review and edit the config that will be imported.
- For details, see the [Provider Settings](#provider-settings) section.

4. Click `Save` to complete the import and start using the models in Copilot Chat.



## Manual Configuration

This section uses DeepSeek as an example, adding the provider and two models.

> DeepSeek supports [One-Click Configuration](#one-click-configuration). This section shows the manual setup for demonstration purposes.

0. Preparation: get the API information from the provider docs, at least the following:
- `API Format`: The API format (e.g., OpenAI Chat Completions, Anthropic Messages).
- `API Base URL`: The base URL of the API.
- `Authentication`: Usually an API key; obtained from the user center or console after registration.

1. Open the VS Code Command Palette and search for `Unify Chat Provider: Add Provider`.




- This screen is similar to the [Provider Settings](#provider-settings) screen, and includes in-place documentation for each field.

2. Fill in the provider name: `Name`.
- The name must be unique and is shown in the model list. Here we use `DeepSeek`.
- You can create multiple configs for the same provider with different names, e.g., `DeepSeek-Person`, `DeepSeek-Team`.

3. Choose the API format: `API Format`.
- DeepSeek uses the `OpenAI Chat Completion` format, so select that.
- To see all supported formats, refer to the [API Format Support Table](#api-format-support-table).

4. Set the base URL: `API Base URL`.
- DeepSeek’s base URL is `https://api.deepseek.com`.

5. Configure authentication: `Authentication`.
- DeepSeek uses API Key for authentication, so select `API Key`.
- Enter the API key generated from the DeepSeek console.

6. Click `Models` to go to the model management screen.



7. Enable `Auto-Fetch Official Models`.
- This example uses auto-fetch to reduce configuration steps; see [Auto-Fetch Official Models](#auto-fetch-official-models) for details.
- For model fields and other ways to add models, see [Manage Models](#manage-models).

8. Click `Save` to finish. You can now use the models in Copilot Chat.



## Manage Providers

- You can create unlimited provider configurations, and multiple configs can coexist for the same provider.
- Provider names must be unique.

### Provider List

Open the VS Code Command Palette and search for `Unify Chat Provider: Manage Providers`.



- `Add Provider`: Add a new provider via [Manual Configuration](#manual-configuration).
- `Add From Well-Known Provider List`: Add a new provider via [One-Click Configuration](#one-click-configuration).
- `Import From Config`: Import an existing provider config (or an array of provider configs). See [Import and Export](#import-and-export).
- `Import From Other Applications`: Import configs from other apps/extensions via [One-Click Migration](#one-click-migration).
- `Export All Providers`: Export all provider configs. See [Import and Export](#import-and-export).

The UI also shows all existing providers. Click a provider item to enter the [Model List](#model-list) screen.

The button group on the right of each provider item provides additional actions:

- `Export`: Export this provider config. See [Import and Export](#import-and-export).
- `Duplicate`: Clone this provider config to create a new one.
- `Delete`: Delete this provider config.

### Provider Settings



- `Models`: This button only appears while adding or importing a config; click it to enter the [Model List](#model-list) screen.

This screen shows all configuration fields for the provider. For field details, see [Provider Parameters](#provider-parameters).

## Manage Models

- Each provider can have unlimited model configurations.
- The same model ID can exist under different providers.
- Within a single provider config, you cannot have multiple identical model IDs directly, but you can create multiple configs by adding a `#xxx` suffix.
- For example, you can add both `glm4.7` and `glm4.7#thinking` to quickly switch thinking on/off.
- The `#xxx` suffix is automatically removed when sending requests.
- Model names can be duplicated, but using distinct names is recommended to avoid confusion.

### Model List



- `Add Model`: Go to [Add Model Manually](#add-model-manually).
- `Add From Well-Known Model List`: Go to [One-Click Add Models](#one-click-add-models).
- `Add From Official Model List`: Fetch the latest official model list via API. See [One-Click Add Models](#one-click-add-models).
- `Import From Config`: Import an existing model config (or an array of model configs). See [Import and Export](#import-and-export).
- `Auto-Fetch Official Models`: Enable or disable [Auto-Fetch Official Models](#auto-fetch-official-models).
- `Provider Settings`: Go to [Provider Settings](#provider-settings).
- `Export`: Export this provider config or the model array config. See [Import and Export](#import-and-export).
- `Duplicate`: Clone this provider config to create a new one.
- `Delete`: Delete this provider config.

### Add Model Manually

This screen is similar to the [Model Settings](#model-settings) screen; you can read the in-place documentation to understand each field.

### One-Click Add Models



This screen lists all models that can be added with one click. You can import multiple selected models at once.

See the [Model Support Table](#model-support-table) for the full list of supported models.

### Auto-Fetch Official Models

This feature periodically fetches the latest official model list from the provider’s API and automatically configures recommended parameters, greatly simplifying model setup.

> Tip
>
> A provider’s API may not return recommended parameters. In that case, recommended parameters are looked up from an internal database by model ID. See the [Model Support Table](#model-support-table) for models that have built-in recommendations.



- Auto-fetched models show an `internet` icon before the model name.
- If an auto-fetched model ID conflicts with a manually configured one, only the manually configured model is shown.
- Auto-fetched models are refreshed periodically; you can also click `(click to fetch)` to refresh manually.
- Run the VS Code command `Unify Chat Provider: Refresh All Provider's Official Models` to trigger refresh for all providers.

### Model Settings



- `Export`: Export this model config. See [Import and Export](#import-and-export).
- `Duplicate`: Clone this model config to create a new one.
- `Delete`: Delete this model config.

This screen shows all configuration fields for the model. For field details, see [Model Parameters](#model-parameters).

### Sync Built-in Parameters to All Configs

Run `Unify Chat Provider: Sync Built-in Parameters to All Configs` to sync local model parameters with the built-in model parameters.

This is typically used after a new version updates or optimizes built-in model parameters, allowing you to sync existing configs in one click.

## Commit Message Generation

You can generate commit messages via the following commands:

- `Unify Chat Provider: Generate Commit Message`
- `Unify Chat Provider: Generate Commit Message(Staged Changes)`
- `Unify Chat Provider: Generate Commit Message(Unstaged Changes)`

You can also click the commit message generation button in the Source Control view. Different button locations correspond to different context ranges:

- Repository view: all changes
- Staged Changes group: staged changes
- Changes group: unstaged changes

## Balance Monitoring

Use this feature to monitor provider balances in `Provider Settings`.

- Run the VS Code command `Unify Chat Provider: Provider Balance Monitoring` to open the balance monitoring panel.
- Configure it from the `Balance Monitor` field.
- Built-in methods:
- `Moonshot AI Balance`: no extra config required; uses provider `baseUrl` and API key.
- `Kimi Code Usage`: no extra config required; uses provider `baseUrl` and API key.
- `New API Balance`: always shows API key balance; user balance is optional and requires `userId` + `systemToken` (sensitive data).
- `DeepSeek Balance`: no extra config required; uses provider `baseUrl` and API key.
- `OpenRouter Balance`: no extra config required; uses provider `baseUrl` and API key.
- `SiliconFlow Balance`: no extra config required; uses provider `baseUrl` and API key.
- `AIHubMix Balance`: no extra balance config required; uses provider `baseUrl`, API key, and optional `APP-Code` from provider `extraHeaders`.
- `Claude Relay Service Balance`: no extra config required; uses provider `baseUrl` and API key.
- `Antigravity Usage`: no extra config required; uses the provider OAuth credential and project settings.
- `Gemini CLI Usage`: no extra config required; uses the provider OAuth credential and optional project settings.
- `Codex Usage`: no extra config required; uses provider credential (API key or Codex auth token).
- Run the VS Code command `Unify Chat Provider: Refresh All Providers' Balance Information` to force refresh balances for all configured providers.

## Adjust Parameters

### Global Settings

- Most `unifyChatProvider.*` settings are application-scoped and shared across profiles on the same device.
- Commit message generation settings are window-scoped and can be configured per workspace.

| Name | ID | Description |
| ---------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| Global Network Settings | `networkSettings` | Network timeout/retry settings, which only affect chat requests. |
| Model Display Name Template | `modelDisplayNameTemplate` | Template for chat model names. Example: `{modelName} ({modelId}) [{providerName}{remainingBalance}]`. |
| Balance Refresh Interval | `balanceRefreshIntervalMs` | Periodic refresh interval for provider balances (milliseconds). |
| Balance Throttle Window | `balanceThrottleWindowMs` | Throttle window for post-request balance refresh (milliseconds). |
| Store API Key in Settings | `storeApiKeyInSettings` | Please see [Cloud Sync Compatibility](#cloud-sync-compatibility) for details. |
| Enable Detailed Logging | `verbose` | Enables more detailed logging for troubleshooting errors. |
| Commit Message Buttons | `commitMessageGeneration.enableButtons` | Controls whether commit message generation buttons are shown in the Source Control view. |
| Commit Message Model | `commitMessageGeneration.model` | Model selection used for commit message generation. |
| Commit Message Format | `commitMessageGeneration.format` | Commit message format used for commit message generation. |
| Commit Message Custom Instructions | `commitMessageGeneration.customInstructions` | Additional instructions appended to the commit message generation system prompt. |
| Commit Message Exclude Files | `commitMessageGeneration.excludeFiles` | VS Code glob patterns for files whose diffs should be omitted from commit message generation prompts. |

### Provider Parameters

The following fields correspond to `ProviderConfig` (field names used in import/export JSON).

| Name | ID | Description |
| --------------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| API Format | `type` | Provider type (determines the API format and compatibility logic). |
| Provider Name | `name` | Unique name for this provider config (used for list display and references). |
| API Base URL | `baseUrl` | API base URL, e.g. `https://api.anthropic.com`. |
| Transport Mode | `transport` | Preferred transport mode for this provider. Leave empty to use the provider default. |
| Service Tier | `serviceTier` | Default processing tier for requests from this provider. |
| Context Cache | `contextCache` | Context cache configuration (used by providers that support prompt caching). |
| Context Cache Type | `contextCache.type` | `only-free` (default): use context cache only when it's free. `allow-paid`: use it even if it may incur cost. |
| Context Cache TTL (seconds) | `contextCache.ttl` | TTL in seconds. Leave empty to use the provider's default TTL. Some providers may quantize this to supported TTL presets; paid presets may require `allow-paid`. |
| Authentication | `auth` | Authentication config object. |
| Balance Monitor | `balanceProvider` | Provider-level balance monitoring config. |
| Models | `models` | Array of model configurations (`ModelConfig[]`). |
| Extra Headers | `extraHeaders` | HTTP headers appended to every request (`Record`). |
| Extra Body Fields | `extraBody` | Extra fields appended to request body (`Record`), for provider-specific parameters. |
| Timeout | `timeout` | Timeout settings for HTTP requests and SSE streaming (milliseconds). |
| Connection Timeout | `timeout.connection` | Maximum time to wait for establishing a TCP connection; default `60000` (60 seconds). |
| Response Interval Timeout | `timeout.response` | Maximum time to wait between SSE chunks; default `300000` (5 minutes). |
| Retry | `retry` | Retry settings for transient errors (chat requests only). |
| Max Retries | `retry.maxRetries` | Maximum number of retry attempts; default `10`. |
| Initial Delay | `retry.initialDelayMs` | Initial delay before the first retry (milliseconds); default `1000`. |
| Max Delay | `retry.maxDelayMs` | Maximum delay cap for retries (milliseconds); default `60000`. |
| Backoff Multiplier | `retry.backoffMultiplier` | Exponential backoff multiplier; default `2`. |
| Jitter Factor | `retry.jitterFactor` | Jitter factor (0-1) to randomize delay; default `0.1`. |
| Auto-Fetch Official Models | `autoFetchOfficialModels` | Whether to periodically fetch and auto-update the official model list from the provider API. |

### Model Parameters

The following fields correspond to `ModelConfig` (field names used in import/export JSON).

| Name | ID | Description |
| ---------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Model ID | `id` | Model identifier (you can use a `#xxx` suffix to create multiple configs for the same model; the suffix is removed when sending requests). |
| Display Name | `name` | Name shown in the UI (usually falls back to `id` if empty). |
| Model Family | `family` | A grouping identifier for grouping/matching models (e.g., `gpt-4`, `claude-3`). |
| Max Input Tokens | `maxInputTokens` | Maximum input/context tokens (some providers interpret this as total context for “input + output”). |
| Max Output Tokens | `maxOutputTokens` | Maximum generated tokens (required by some providers, e.g., Anthropic’s `max_tokens`). |
| Tokenizer | `tokenizer` | Tokenizer used for VS Code token counting (`provideTokenCount`). Default: `default`. |
| Token Count Multiplier | `tokenCountMultiplier` | Multiplier applied to the token count before returning it to VS Code. Default: `1.0`. |
| Capabilities | `capabilities` | Capability declaration (for UI and routing logic; may also affect request construction). |
| Tool Calling | `capabilities.toolCalling` | Whether tool/function calling is supported; if a number, it represents the maximum tool count. |
| Image Input | `capabilities.imageInput` | Whether image input is supported. |
| Edit Tools | `capabilities.editTools` | Edit tool hint preset for VS Code / Copilot Chat. |
| Streaming | `stream` | Whether streaming responses are enabled (if unset, default behavior is used). |
| Temperature | `temperature` | Sampling temperature (randomness). |
| Top-K | `topK` | Top-k sampling. |
| Top-P | `topP` | Top-p (nucleus) sampling. |
| Frequency Penalty | `frequencyPenalty` | Frequency penalty. |
| Presence Penalty | `presencePenalty` | Presence penalty. |
| Parallel Tool Calling | `parallelToolCalling` | Whether to allow parallel tool calling (`true` enable, `false` disable, `undefined` use default). |
| Service Tier | `serviceTier` | Processing tier for official OpenAI / Anthropic requests. `auto` lets the provider choose; `standard` maps to OpenAI `default` and Anthropic `standard_only`; `flex` / `scale` / `priority` are OpenAI-specific and fall back to Anthropic `standard_only`. Leave empty to omit the field. |
| Verbosity | `verbosity` | Constrain verbosity: `low` / `medium` / `high` (not supported by all providers). |
| Thinking | `thinking` | Thinking/reasoning related config (support varies by provider). |
| Thinking Mode | `thinking.type` | `enabled` / `disabled` / `auto` |
| Thinking Budget Tokens | `thinking.budgetTokens` | Token budget for thinking. |
| Thinking Effort | `thinking.effort` | `none` / `minimal` / `low` / `medium` / `high` / `xhigh` / `max` |
| Thinking Summary | `thinking.summary` | Reasoning / thinking summary mode: `none` / `auto` / `concise` / `detailed` |
| Extra Headers | `extraHeaders` | HTTP headers appended to this model request (`Record`). |
| Extra Body Fields | `extraBody` | Extra fields appended to this model request body (`Record`). |
| Preset Templates | `presetTemplates` | Configured preset templates can be selected from the VS Code model configuration submenu. Each template corresponds to one enum option group. Templates are applied in declaration order, and later templates override earlier fields with the same name. |

### Service Tier Notes

- `serviceTier` is only sent automatically when the provider `baseUrl` matches the official OpenAI or Anthropic endpoints.
- Leaving `serviceTier` empty means this extension omits the `service_tier` field and keeps the provider default behavior.
- Mapping for the official OpenAI API:
- `auto` -> `auto`
- `standard` -> `default`
- `flex` -> `flex`
- `scale` -> `scale`
- `priority` -> `priority`
- Mapping for the official Anthropic API:
- `auto` -> `auto`
- `standard` / `flex` / `scale` / `priority` -> `standard_only`
- For non-official relay, proxy, or compatible endpoints, this extension does not inject `service_tier` automatically because providers may use different semantics.

### Preset Template Notes

You can configure multiple preset templates for a single model. Each template corresponds to one enum option group displayed in the VS Code model selection submenu.



You can define custom preset templates to switch model parameters quickly. For example:

```json
{
"presetTemplates": [
{
"name": "Reasoning Effort",
"id": "reasoningEffort",
"presets": [
{
"name": "High",
"description": "Suitable for tasks involving planning, coding, synthesis, or more difficult reasoning.",
"id": "high",
"config": {
"thinking": {
"type": "enabled",
"effort": "high"
},
"temperature": 0.7
}
},
{
"name": "Low",
"description": "A small amount of extra thinking can improve reliability with almost no added latency.",
"id": "low",
"config": {
"thinking": {
"type": "enabled",
"effort": "low"
},
"temperature": 0.4
}
},
{
"name": "Default",
"description": "Use the model's current configuration.",
"id": "default",
"config": {}
}
],
"default": "default"
}
]
}
```

- `config` overrides fields in the model configuration. In the example above, `high` and `low` override `thinking` and `temperature`, while `default` overrides nothing and uses the model's current configuration.
- If multiple templates override the same field, they are applied in declaration order, and later templates override earlier fields with the same name.

## Import and Export

Supported import/export payloads:

- Single provider configuration
- Single model configuration
- Multiple provider configurations (array)
- Multiple model configurations (array)

Supported import/export formats:

- Base64-url encoded JSON config string (export uses this format only)
- Plain JSON config string
- A URL pointing to a Base64-url encoded or plain JSON config string

## URI Support

Supports importing provider configs via VS Code URI.

Example:

```
vscode://SmallMain.vscode-unify-chat-provider/import-config?config=
```

`` supports the same formats as in [Import and Export](#import-and-export).

### Override Config Fields

You can add query parameters to override certain fields in the imported config.

Example:

```
vscode://SmallMain.vscode-unify-chat-provider/import-config?config=&auth={"method":"api-key","apiKey":"my-api-key"}
```

The import will override the `auth` field before importing.

### Provider Advocacy

If you are a developer for an LLM provider, you can add a link like the following on your website so users can add your model to this extension with one click:

```
Add to Unify Chat Provider
```

## Cloud Sync Compatibility

Extension configs are stored in `settings.json`, so they work with VS Code Settings Sync.

However, sensitive information is stored in VS Code Secret Storage by default, which currently does not sync.

So after syncing to another device, you may be prompted to re-enter keys or re-authorize.

If you want to sync sync-safe sensitive data (e.g., API keys), enable [`storeApiKeyInSettings`](vscode://settings/unifyChatProvider.storeApiKeyInSettings).

OAuth credentials are always kept in Secret Storage to avoid multi-device token refresh conflicts.

This can increase the risk of user data leakage, so evaluate the risk before enabling.

## API Format Support Table

| API | ID | Typical Endpoint | Notes |
| :------------------------------------------------------------------------------------------- | :----------------------- | :------------------------------- | :---------------------------------------------------------------------------------- |
| [OpenAI Chat Completion API](https://platform.openai.com/docs/api-reference/chat) | `openai-chat-completion` | `/v1/chat/completions` | If the base URL doesn’t end with a version suffix, `/v1` is appended automatically. |
| [OpenAI Responses API](https://platform.openai.com/docs/api-reference/responses) | `openai-responses` | `/v1/responses` | If the base URL doesn’t end with a version suffix, `/v1` is appended automatically. |
| [Google AI Studio (Gemini API)](https://ai.google.dev/aistudio) | `google-ai-studio` | `/v1beta/models:generateContent` | Automatically detect the version number suffix. |
| [Google Vertex AI](https://cloud.google.com/vertex-ai) | `google-vertex-ai` | `/v1beta/models:generateContent` | Provide different base URL based on authentication. |
| [Anthropic Messages API](https://platform.claude.com/docs/en/api/typescript/messages/create) | `anthropic` | `/v1/messages` | Automatically removes duplicated `/v1` suffix. |
| [Ollama Chat API](https://docs.ollama.com/api/chat) | `ollama` | `/api/chat` | Automatically removes duplicated `/api` suffix. |

## Provider Support Table

The providers listed below support [One-Click Configuration](#one-click-configuration). Implementations follow the best practices from official docs to help you get the best performance.

> Tip
>
> Even if a provider is not listed, you can still use it via [Manual Configuration](#manual-configuration).

| Provider | Supported Features | Free Quota | Balance Monitor |
| :------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------- | :------------------------- | :-------------: |
| [Open AI](https://openai.com/) | | |
| [Google AI Studio](https://aistudio.google.com/) | | |
| [Google Vertex AI](https://cloud.google.com/vertex-ai) |

  • Authentication | |
    | [Anthropic](https://www.anthropic.com/) |
  • InterleavedThinking
  • FineGrainedToolStreaming | |
    | [xAI](https://docs.x.ai/) | | |
    | [Hugging Face (Inference Providers)](https://huggingface.co/docs/inference-providers) | | |
    | [OpenRouter](https://openrouter.ai/) |
  • CacheControl
  • ReasoningParam
  • ReasoningDetails | [Details](#openrouter) | ✅ |
    | [AIHubMix](https://aihubmix.com/) | | | ✅ |
    | [Cerebras](https://www.cerebras.ai/) |
  • ReasoningField
  • DisableReasoningParam
  • ClearThinking | [Details](#cerebras) |
    | [OpenCode Zen (OpenAI Chat Completion)](https://opencode.ai/) |
  • ReasoningContent | [Details](#opencode-zen) |
    | [OpenCode Zen (OpenAI Responses)](https://opencode.ai/) |
  • ReasoningContent | [Details](#opencode-zen) |
    | [OpenCode Zen (Anthropic Messages)](https://opencode.ai/) |
  • InterleavedThinking
  • FineGrainedToolStreaming | [Details](#opencode-zen) |
    | [OpenCode Zen (Gemini)](https://opencode.ai/) | | [Details](#opencode-zen) |
    | [Nvidia](https://build.nvidia.com/) | | [Details](#nvidia) |
    | [Kilo Code](https://kilo.ai/) |
  • RawBaseUrl | [Details](#kilo-code) |
    | [Alibaba Cloud Model Studio (China)](https://www.aliyun.com/product/bailian) |
  • ThinkingParam3
  • ReasoningContent | |
    | [Alibaba Cloud Model Studio (Coding Plan)](https://www.aliyun.com/product/bailian) |
  • ThinkingParam3
  • ReasoningContent | |
    | [Alibaba Cloud Model Studio (Coding Plan - International)](https://www.alibabacloud.com/help/en/model-studio) |
  • ThinkingParam3
  • ReasoningContent | |
    | [Alibaba Cloud Model Studio (International)](https://www.alibabacloud.com/help/en/model-studio) |
  • ThinkingParam3
  • ReasoningContent | |
    | [Model Scope (API-Inference)](https://modelscope.cn/) |
  • ThinkingParam3
  • ReasoningContent | [Details](#model-scope) |
    | [Cline Bot](https://docs.cline.bot/api/overview) | | [Details](#cline-bot) |
    | [Volcano Engine](https://www.volcengine.com/product/ark) |
  • AutoThinking
  • ThinkingParam2
  • VolcContextCaching | [Details](#volcano-engine) |
    | [Volcano Engine (Coding Plan)](https://www.volcengine.com/activity/codingplan) |
  • AutoThinking
  • ThinkingParam2 | |
    | [Byte Plus](https://www.byteplus.com/en/product/modelark) |
  • AutoThinking
  • ThinkingParam2
  • VolcContextCaching | |
    | [Tencent Cloud (China)](https://cloud.tencent.com/product/hunyuan) | | |
    | [DeepSeek](https://www.deepseek.com/) |
  • ThinkingParam
  • ReasoningEffortParam
  • ReasoningContent | | ✅ |
    | [Gitee AI](https://ai.gitee.com/) | | |
    | [Xiaomi MIMO](https://mimo.xiaomi.com/) |
  • ThinkingParam
  • ReasoningContent | |
    | [Xiaomi MIMO (China, Token Plan)](https://mimo.xiaomi.com/) |
  • ThinkingParam
  • ReasoningContent | |
    | [Xiaomi MIMO (Singapore, Token Plan)](https://mimo.xiaomi.com/) |
  • ThinkingParam
  • ReasoningContent | |
    | [Xiaomi MIMO (Europe, Token Plan)](https://mimo.xiaomi.com/) |
  • ThinkingParam
  • ReasoningContent | |
    | [Ollama Local](https://ollama.com/) | | |
    | [Ollama Cloud](https://ollama.com/) | | |
    | [StepFun (China)](https://platform.stepfun.com/) |
  • ReasoningField | |
    | [StepFun (International)](https://platform.stepfun.com/) |
  • ReasoningField | |
    | [ZhiPu AI](https://open.bigmodel.cn/) |
  • ThinkingParam
  • ReasoningContent
  • ClearThinking | [Details](#zhipu-ai--zai) |
    | [ZhiPu AI (Coding Plan)](https://open.bigmodel.cn/) |
  • ThinkingParam
  • ReasoningContent
  • ClearThinking | |
    | [Z.AI](https://z.ai/) |
  • ThinkingParam
  • ReasoningContent
  • ClearThinking | [Details](#zhipu-ai--zai) |
    | [Z.AI (Coding Plan)](https://z.ai/) |
  • ThinkingParam
  • ReasoningContent
  • ClearThinking | |
    | [MiniMax (China)](https://www.minimaxi.com/) |
  • ReasoningDetails | |
    | [MiniMax (International)](https://www.minimax.io/) |
  • ReasoningDetails | |
    | [LongCat](https://longcat.chat/) | | [Details](#longcat) |
    | [Moonshot AI (China)](https://www.moonshot.cn/) |
  • ReasoningContent | | ✅ |
    | [Moonshot AI (International)](https://www.moonshot.ai/) |
  • ReasoningContent | | ✅ |
    | [Moonshot AI (Coding Plan)](https://www.kimi.com/coding) |
  • ReasoningContent | | ✅ |
    | [StreamLake Vanchin (China)](https://streamlake.com/) | | [Details](#streamlake) |
    | [StreamLake Vanchin (China, Coding Plan)](https://streamlake.com/) | | |
    | [StreamLake Vanchin (International)](https://www.streamlake.ai/) | | [Details](#streamlake) |
    | [StreamLake Vanchin (International, Coding Plan)](https://www.streamlake.ai/) | | |
    | [SiliconFlow (China)](https://siliconflow.cn/) |
  • ThinkingParam3
  • ThinkingBudgetParam
  • ReasoningContent | [Details](#siliconflow) | ✅ |
    | [SiliconFlow (International)](https://siliconflow.com/) |
  • ThinkingParam3
  • ThinkingBudgetParam
  • ReasoningContent | [Details](#siliconflow) | ✅ |

    Experimental Supported Providers:

    > ⚠️ Warning: Adding the following providers may violate their Terms of Service!
    >
    > - Your account may be suspended or permanently banned.
    > - You need to accept the risks yourself; all risks are borne by you.

    | Provider | Free Quota | Balance Monitor |
    | :----------------------------------------------------- | :----------------------------- | :-------------: |
    | [OpenAI Codex (ChatGPT Plus/Pro)](https://openai.com/) | | ✅ |
    | [GitHub Copilot](https://github.com/features/copilot) | [Details](#github-copilot) |
    | [Google Antigravity](https://antigravity.google/) | [Details](#google-antigravity) | ✅ |
    | [Google Gemini CLI](https://geminicli.com/) | [Details](#google-gemini-cli) | ✅ |
    | [Claude Code](https://claude.ai/) | |
    | [Synthetic](https://synthetic.new/) | [Details](#synthetic) | ✅ |

    Long-Term Free Quotas:

    #### Kilo Code

    - Often includes free models, including stealth models and limited-time frontier models.
    - Availability can change frequently, so check Kilo's latest listing in-app.

    #### Cline Bot

    - Supported models:
    - `minimax/minimax-m2.5`
    - `kwaipilot/kat-coder-pro`
    - `z-ai/glm-5`

    #### GitHub Copilot

    - Some models have free quotas, others require Copilot subscription. After subscription, it is completely free with monthly refreshing quotas.
    - Supported models: Claude, GPT, Grok, Gemini and other mainstream models.

    #### Google Antigravity

    - Each model has a certain free quota, refreshing over time.
    - Supported models: Claude 4.5 Series, Gemini 3.1 Series, Gemini 3 Series.

    #### Google Gemini CLI

    - Each model has a certain free quota, refreshing over time.
    - Supported models: Gemini 3.1 Series, Gemini 3 Series, Gemini 2.5 Series.

    #### Synthetic

    - Provides various mainstream models via OpenAI-compatible API.
    - Supported models: MiniMax M2.5, Qwen 3.5, Kimi K2.5, GLM 4.7, DeepSeek V3.2 / V3 / R1, Llama 3.3 and others.

    #### Cerebras

    - Some models have free quotas, refreshing over time.
    - Supported models:
    - GLM 4.7
    - GPT-OSS-120B
    - Qwen 3 235B Instruct
    - ...

    #### Nvidia

    - Completely free, but with rate limits.
    - Supports almost all open-source weight models.

    #### Volcano Engine

    - Each model has a certain free quota, refreshing over time.
    - Supported models: Doubao, Kimi, DeepSeek and other mainstream models.

    #### Model Scope

    - Each model has a certain free quota, refreshing over time.
    - Supported models: GLM, Kimi, Qwen, DeepSeek and other mainstream models.

    #### ZhiPu AI / Z.AI

    - Some models are completely free.
    - Supported models: GLM Flash series models.

    #### SiliconFlow

    - Some models are completely free.
    - Supported models: Mostly open-source weight models under 32B.

    #### StreamLake

    - Completely free, but with rate limits.
    - Supported models:
    - KAT-Coder-Pro V2
    - KAT-Coder-Pro V1
    - KAT-Coder-Exp-72B-1010
    - KAT-Coder-Air V1

    #### LongCat

    - Has a certain free quota, refreshing over time.
    - Supported models:
    - LongCat-Flash-Chat
    - LongCat-Flash-Thinking
    - LongCat-Flash-Thinking-2601
    - LongCat-Flash-Lite

    #### OpenRouter

    - Some models have certain free quotas, refreshing over time.
    - Supported models: Frequently changing, models with 'free' in the name.

    #### OpenCode Zen

    - Some models are completely free.
    - Supported models: Frequently changing, models with 'free' in the name.

    #### Ollama Cloud

    - Each model has a certain free quota, refreshing over time.
    - Supports almost all open-source weight models.

  • ## Model Support Table

    The models listed below support [One-Click Add Models](#one-click-add-models), and have built-in recommended parameters to help you get the best performance.

    > Tip
    >
    > Even if a model is not listed, you can still use it via [Add Model Manually](#add-model-manually) and tune the parameters yourself.

    | Vendor | Series | Supported Models |
    | :--------------- | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **OpenAI** | GPT-5 Series | GPT-5, GPT-5.1, GPT-5.2, GPT-5.4, GPT-5.4 pro, GPT-5.4 Mini, GPT-5.4 Nano, GPT-5.2 pro, GPT-5 mini, GPT-5 nano, GPT-5 pro, GPT-5-Codex, GPT-5.1-Codex, GPT-5.2-Codex, GPT-5.3-Codex, GPT-5.3-Codex-Spark, GPT-5.1-Codex-Max, GPT-5.1-Codex-mini, GPT-5.2 Chat, GPT-5.1 Chat, GPT-5 Chat |
    | | GPT-4 Series | GPT-4o, GPT-4o mini, GPT-4o Search Preview, GPT-4o mini Search Preview, GPT-4.1, GPT-4.1 mini, GPT-4.1 nano, GPT-4.5 Preview, GPT-4 Turbo, GPT-4 Turbo Preview, GPT-4 |
    | | GPT-3 Series | GPT-3.5 Turbo, GPT-3.5 Turbo Instruct |
    | | o Series | o1, o1 pro, o1 mini, o1 preview, o3, o3 mini, o3 pro, o4 mini |
    | | oss Series | gpt-oss-120b, gpt-oss-20b |
    | | Deep Research Series | o3 Deep Research, o4 mini Deep Research |
    | | Other Models | babbage-002, davinci-002, Codex mini, Computer Use Preview |
    | **Google** | Gemini 3.1 Series | gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview |
    | | Gemini 3 Series | gemini-3-pro-preview, gemini-3-flash-preview |
    | | Gemini 2.5 Series | gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite |
    | | Gemini 2.0 Series | gemini-2.0-flash, gemini-2.0-flash-lite |
    | | Gemma 4 Series | Gemma 4 31B, Gemma 4 26B A4B, Gemma 4 E4B, Gemma 4 E2B |
    | **Anthropic** | Claude 4 Series | Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.5, Claude Sonnet 4, Claude Opus 4.1, Claude Opus 4 |
    | | Claude 3 Series | Claude Sonnet 3.7, Claude Sonnet 3.5, Claude Haiku 3.5, Claude Haiku 3, Claude Opus 3 |
    | **xAI** | Grok 4.20 Series | Grok 4.20 0309 (Reasoning), Grok 4.20 0309 (Non-Reasoning) |
    | | Grok 4 Series | Grok 4.1 Fast (Reasoning), Grok 4.1 Fast (Non-Reasoning), Grok 4, Grok 4 Fast (Reasoning), Grok 4 Fast (Non-Reasoning) |
    | | Grok Code Series | Grok Code Fast 1 |
    | | Grok 3 Series | Grok 3, Grok 3 Mini |
    | | Grok 2 Series | Grok 2 Vision |
    | **Meta** | Llama 3 Series | Llama 3.1 8B, Llama 3.1 70B, Llama 3.1 405B, Llama 3.3 70B |
    | **NVIDIA** | Nemotron 3 Series | Nemotron 3 Super 120B A12B |
    | **DeepSeek** | DeepSeek V4 Series | DeepSeek V4 Flash, DeepSeek V4 Pro |
    | | Compatibility Aliases | DeepSeek Chat, DeepSeek Reasoner |
    | | DeepSeek V3 Series | DeepSeek V3.2, DeepSeek V3.2 Exp, DeepSeek V3.2 Speciale, DeepSeek V3.1, DeepSeek V3.1 Terminus, DeepSeek V3, DeepSeek V3 (0324) |
    | | DeepSeek R1 Series | DeepSeek R1, DeepSeek R1 (0528) |
    | | DeepSeek V2.5 Series | DeepSeek V2.5 |
    | | DeepSeek V2 Series | DeepSeek V2 |
    | | DeepSeek VL Series | DeepSeek VL, DeepSeek VL2 |
    | | DeepSeek Coder Series | DeepSeek Coder, DeepSeek Coder V2 |
    | | DeepSeek Math Series | DeepSeek Math V2 |
    | **ByteDance** | Doubao 2.0 Series | Doubao Seed 2.0 Pro, Doubao Seed 2.0 Lite, Doubao Seed 2.0 Mini, Doubao Seed 2.0 Code Preview |
    | | Doubao 1.8 Series | Doubao Seed 1.8, Doubao Seed Code Preview |
    | | Doubao 1.6 Series | Doubao Seed 1.6, Doubao Seed 1.6 Lite, Doubao Seed 1.6 Flash, Doubao Seed 1.6 Vision |
    | | Doubao 1.5 Series | Doubao 1.5 Pro 32k, Doubao 1.5 Pro 32k Character, Doubao 1.5 Lite 32k |
    | | Other Models | Doubao Lite 32k Character |
    | **MiniMax** | MiniMax M2 Series | MiniMax-M2.7, MiniMax-M2.7-Highspeed, MiniMax-M2.5, MiniMax-M2.5-Highspeed, MiniMax-M2.1, MiniMax-M2.1-Highspeed, MiniMax-M2 |
    | **LongCat** | LongCat Flash Series | LongCat Flash Chat, LongCat Flash Thinking, LongCat Flash Thinking 2601, LongCat Flash Lite |
    | **StreamLake** | KAT-Coder Series | KAT-Coder-Pro V2, KAT-Coder-Pro V1, KAT-Coder-Exp-72B-1010, KAT-Coder-Air V1 |
    | **Moonshot AI** | Kimi K2.6 Series | Kimi K2.6 |
    | | Kimi K2.5 Series | Kimi K2.5