Skip to main content

Note

AI Gateway is part of AI Governance, which is included with a Premium license.

Xum (formerly Mux) makes it easy to run parallel coding agents, each with its own isolated workspace, from your browser or desktop; it is open source and provider-agnostic.

Xum can be configured to route OpenAI- and Anthropic-compatible traffic through AI Gateway by setting a custom provider base URL and using a Coder-issued token for authentication.

Prerequisites

Configuration

  1. Open Xum settings (Cmd+, / Ctrl+,).
  2. Go to ProvidersOpenAI.
  3. Set API Key to your Coder API token.
  4. Set Base URL to https://coder.example.com/api/v2/ai-gateway/openai/v1.

Replace coder.example.com with your Coder deployment URL.

Environment variables

Xum reads provider configuration from its settings UI and also from environment variables. Environment variables are useful in CI or when running Xum inside a Coder workspace.

Note

Xum treats environment variables as a fallback when a provider is not configured in settings. If you have already configured a provider in the UI, clear it (or update it) for env vars to take effect.

# OpenAI-compatible traffic (GPT, Codex, etc.) export OPENAI_API_KEY="<your-coder-api-token>" export OPENAI_BASE_URL="https://coder.example.com/api/v2/ai-gateway/openai/v1" # Anthropic-compatible traffic (Claude, etc.) export ANTHROPIC_API_KEY="<your-coder-api-token>" export ANTHROPIC_BASE_URL="https://coder.example.com/api/v2/ai-gateway/anthropic"

Run Xum in a Coder workspace

To run Xum inside a Coder workspace (for example, as a Coder app), you can install it with the mux module (still published under its pre-rename name) and pre-configure AI Gateway via environment variables on the agent:

data "coder_workspace" "me" {} data "coder_workspace_owner" "me" {} resource "coder_agent" "main" { # ... other agent configuration env = { OPENAI_API_KEY = data.coder_workspace_owner.me.session_token OPENAI_BASE_URL = "${data.coder_workspace.me.access_url}/api/v2/ai-gateway/openai/v1" ANTHROPIC_API_KEY = data.coder_workspace_owner.me.session_token ANTHROPIC_BASE_URL = "${data.coder_workspace.me.access_url}/api/v2/ai-gateway/anthropic" } } module "mux" { source = "registry.coder.com/coder/mux/coder" version = "~> 1.5" agent_id = coder_agent.main.id }

Advanced: providers.jsonc

If you prefer a file-based config, edit ~/.xum/providers.jsonc:

{ "openai": { "apiKey": "<your-coder-api-token>", "baseUrl": "https://coder.example.com/api/v2/ai-gateway/openai/v1" }, "anthropic": { "apiKey": "<your-coder-api-token>", "baseUrl": "https://coder.example.com/api/v2/ai-gateway/anthropic" } }

References: Xum provider environment variables