skip to content
conifer
Conductor, cmux & Zed

CONIFER · DOCS

Your tools

Conductor, cmux & Zed

Wrappers that run an agent for you take the same redirect the agent takes alone. The only question is where each one reads its endpoint.


Every harness, however closed its UI, ends at a process sending HTTP to a base URL. Swap that base URL for Conifer’s and keep the wire, and the harness follows; that is the whole drop-in contract. The Claude Code and Codex pages deliver the redirect through two shell variables. A wrapper that launches those same binaries needs the same two values, delivered wherever the wrapper actually reads them: its own environment settings, the agent’s config file, or the shell that starts it. Each app below picks a different one of those three.

Conductor

Conductor runs parallel Claude Code, Codex, OpenCode, and Cursor sessions, each against an isolated copy of your repo. It documents Claude-compatible providers through environment variables, which is exactly the drop-in seam. In Settings → Environment, add:

Conductor › Settings › Environment
ANTHROPIC_BASE_URL=https://api.conifer.build
ANTHROPIC_AUTH_TOKEN=sk-conifer-

Conductor’s own docs carry the warning that matters: leave ANTHROPIC_API_KEY unset, both in Conductor and in the shell that launches it, or Claude Code may authenticate with Anthropic directly and skip the redirect. Pin a concrete Anthropic model in the session; named requests are served as named or refused, never substituted.

Codex sessions need nothing extra here. Conductor drives the same local codex, which reads the same ~/.codex/config.toml, so the provider block on the Codex page covers the wrapper too.

cmux

cmux panes are ordinary local shells on real ptys, so the terminal recipes mostly work as-is. The one trap is real and we have measured it: cmux’s agent launcher manages the child environment and strips ANTHROPIC_* variables on spawn. On our own machine a correct shell preset lost ANTHROPIC_MODEL inside a pane, and an open cmux issue asks for opt-in passthrough of ANTHROPIC_BASE_URL precisely because today there is none. So do not ride the shell environment. Put the endpoint where a wrapper cannot scrub it: the agent’s own settings file.

~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.conifer.build",
    "ANTHROPIC_AUTH_TOKEN": "sk-conifer-…"
  }
}

Two honest costs. The env block is machine-global: every Claude Code session on the machine, inside cmux or not, moves onto Conifer at its next session start. And the key sits in plaintext in the file. Delete the block to undo both. Model pins are safe either way: claude --model rides argv, which passes through the wrapper untouched.

Codex inside cmux needs no countermeasure at all: ~/.codex/config.toml is a file, not an environment variable, so the standard Codex block holds.

Zed

Zed carries first-class custom providers for both wires Conifer serves. Two blocks in settings.json put Conifer models in the agent panel’s picker:

~/.config/zed/settings.json
{
  "language_models": {
    "anthropic_compatible": {
      "Conifer": {
        "api_url": "https://api.conifer.build",
        "available_models": [
          {
            "name": "claude-haiku-4-5",
            "display_name": "Claude Haiku (Conifer)",
            "max_tokens": 200000,
            "max_output_tokens": 32000
          }
        ]
      }
    },
    "openai_compatible": {
      "conifer": {
        "api_url": "https://api.conifer.build/v1",
        "available_models": [
          { "name": "gpt-5.5", "display_name": "GPT-5.5 (Conifer)", "max_tokens": 1050000 }
        ]
      }
    }
  }
}

The key never goes in the file. Zed derives an environment variable from the provider name, upper snake case plus _API_KEY, so a provider named conifer reads CONIFER_API_KEY: the variable you already export. Copy max_tokens from the catalog; Zed budgets context by the number you write. For a local model, point api_url at http://127.0.0.1:8080/v1 from a serve door and name the model the door serves.

The closed ones

A harness with no environment settings, no config file, and no base-URL field has no supported path, and this page will say so rather than recommend a TLS interception proxy. Antigravity is in that state today: its agent is pinned to its own models, and the community workarounds re-sign traffic in ways we will not put in a recipe. Claude Desktop is the documented exception with a real but organisation-scale route, the Claude apps gateway.