Model muxing
Overview
Model muxing (or multiplexing), allows you to configure your AI assistant once and use CodeGate workspaces to switch between LLM providers and models without reconfiguring your development environment. This feature is especially useful when you're working on multiple projects or tasks that require different AI models.
In each of your CodeGate workspaces, you can select the AI provider and model
combinations to use, even dynamically switching the active model based on the
request type and file types found in your prompt. Then, configure your AI coding
tool to use the CodeGate muxing endpoint http://localhost:8989/v1/mux
as an
OpenAI-compatible API provider.
To change the model(s) currently in use, simply switch your active CodeGate workspace.
Use cases
- You have a project that requires a specific model for a particular task, but you also need to switch between different models during the course of your work.
- You're working in a monorepo with several different languages/file types and want to dynamically switch to an optimal model as you move between different parts of the codebase.
- You want to experiment with different LLM providers and models without having to reconfigure your AI assistant/agent every time you switch.
- Your AI coding assistant doesn't support a particular provider or model that you want to use. CodeGate's muxing provides an OpenAI-compatible abstraction layer.
- You're working on a sensitive project and want to use a local model, but still have the flexibility to switch to hosted models for other work.
- You want to control your LLM provider spend by using lower-cost models for some tasks that don't require the power of more advanced (and expensive) reasoning models.
Configure muxing
To use muxing with your AI coding assistant, you need to add one or more AI providers to CodeGate, then select the model(s) you want to use on a workspace.
CodeGate supports the following LLM providers for muxing:
- Anthropic
- llama.cpp
- LM Studio
- Ollama
- OpenAI (and compatible APIs)
- OpenRouter
- vLLM
Add a provider
- In the CodeGate dashboard, open the Providers page from the Settings menu.
- Click Add Provider.
- Enter a display name for the provider, then select the type from the drop-down list. The default endpoint and authentication type are filled in automatically.
- If you are using a non-default endpoint, update the Endpoint value.
- Optionally, add a Description for the provider.
- If the provider requires authentication, select the API Key authentication option and enter your key.
When you save the settings, CodeGate connects to the provider to retrieve the available models.
For locally-hosted models, you must use http://host.docker.internal
instead of
http://localhost
when running CodeGate with Docker Desktop.
Configure workspace models
Open the settings of one of your workspaces from the workspace selection menu or the Manage Workspaces screen.
In the Model Muxing section, select the default ("catch-all") model to use with the workspace.
To assign a different model based on request type or filename, click Add Filter.
In the Request Type column, select the type of prompt to match:
FIM & Chat
matches all prompt typesFIM
matches fill-in-the-middle (completion) requestsChat
matches chat prompts
In the Filter by column, enter a pattern for file name matching. Filters can be an exact match or Unix shell-style wildcards (reference). Common examples:
- Match a specific file extension:
*.go
- Match files ending in ".ts" and ".tsx":
*.ts*
- Match all Python files starting with "test*":
test*\*.py
Finally, select the model to use for prompts that match the rule.
Filter rules are evaluated top-down. CodeGate selects the active model for a request using the first matching rule. If the prompt contains multiple files in context, the first rule that matches any of the files is used. If no filter is matched, the catch-all rule applies.
Example configuration


An example showing muxing rules for several file types
Breaking down the above example:
- All requests for Markdown files (
*.md
) use the gpt-4o-mini model via the OpenAI provider. - Chat prompts for JavaScript and JSX files (
*.js*
) use claude-3.7-sonnet from Anthropic. - FIM requests for all files except
*.md
(since it's higher in the list) use Ollama with the qwen2.5-coder:1.5b model. - All other requests use deepseek-r1 via OpenRouter.
- A request containing both a JavaScript and Markdown file will match the
.md
rule first and use OpenAI.
You can validate which provider was used for a given request by checking the conversation summary in the CodeGate dashboard.
Manage existing providers
To edit a provider's settings, click the Manage button next to the provider in the list. For providers that require authentication, you can leave the API key field blank to preserve the current value.
To delete a provider, click the trash icon next to it. If this provider was in use by any workspaces, you will need to update their settings to choose a different provider/model.
Refresh available models
To refresh the list of models available from a provider, in the Providers list, click the Manage button next to the provider to refresh, then save it without making any changes.
Configure your client
Configure the OpenAI-compatible API base URL of your AI coding assistant/agent
to http://localhost:8989/v1/mux
. If your client requires a model name and/or
API key, you can enter any values since CodeGate manages the model selection and
authentication.
For specific instructions, see the integration guide for your client.