Agents

All 14 AI Coding Agents Prism Configures Automatically

By Kavin M KPublished Updated 9 min read

Quick answer
Prism has one-click setup for Claude Code, Codex Desktop and CLI, Factory Droid, OpenCode, ZCode, Grok Build, Zed, Pi, Oh My Pi, Kimi Code, Prime Agent, Empryo, Hermes and DeepSeek Harness. Cursor, Claude Desktop, the OpenAI SDK and Ollama-based tools work with a manual base URL.

Prism configures fourteen coding agents with one click. That is not a marketing number — it is fourteen separate configuration writers, because no two agents agree on where configuration lives or what shape it takes.

This is the full list, what Prism writes for each, and which clients you still configure by hand.

The one-click list

AgentModel config Prism writesMCP entry
Claude Code~/.claude/settings.json — six env keys~/.claude.json
Codex Desktop & CLI~/.codex/config.toml + codex_catalog.json~/.codex/config.toml (TOML)
Factory Droid~/.factory/settings.json — customModels~/.factory/mcp.json
OpenCode~/.config/opencode/opencode.json — two providers~/.config/opencode/opencode.json
ZCode~/.zcode/v2/config.json~/.zcode/cli/config.json
Zedsettings.json — one provider, per-model capabilitiessettings.json — context_servers
Oh My Pi (OMP)~/.omp/agent/models.yml~/.omp/agent/mcp.json
Grok Build~/.grok/config.toml — [model.prism-*] sections~/.grok/config.toml (TOML)
Pi~/.pi/agent/settings.json + models.json~/.pi/agent/mcp.json
Kimi Code~/.kimi-code/config.toml~/.kimi-code/mcp.json
Prime Agent~/.prime/agent/settings.json~/.prime/agent/settings.json
EmpryoEmpryo config.json (keychain-backed key)Empryo config.json
Hermes~/.hermes/config.yaml — marked YAML region~/.hermes/config.yaml
DeepSeek Harnessprofile cordis.patch.yml under $DSH_HOMEhome-level cordis.patch.yml

"One click" means the Agents tab has a Setup button and Prism writes the file. It does not mean every agent is equally well served by a config file, which is where the interesting differences live.

Why the list is so long

An agent that accepts a base URL and a key is trivial to support. Most of these are not that, and each one needed its own writer for a specific reason.

Agents that fight back

Claude Code re-syncs on every Prism startup because Claude Code's own file watcher rewrites settings.json. Prism watches and reapplies. This is why "Claude Code is talking to Anthropic again" is usually fixed by restarting Prism rather than by re-running Setup.

Zed stores its configuration as JSONC with comments. JSON has no comment syntax, so rewriting the file loses them — Prism keeps a backup before it touches anything. Worth knowing if you have carefully annotated settings.

Empryo keeps credentials in the OS keychain and refuses inline keys entirely, so Prism's setup cannot finish the job alone. One command does it:

empryo --set-key prism prism

Agents with two providers, not one

OpenCode, Pi, OMP and Prime Agent all need two provider entries: one speaking the OpenAI-compatible Chat Completions protocol and one speaking Responses. This is not redundancy — the protocol is chosen per model, and those clients declare it per provider, so a single entry cannot serve both. Their configs end up with prism and prism-responses side by side.

Kimi Code needs the same pair plus a per-model alias block, because it addresses models through a sanitised name rather than the provider's own model id.

Agents where writing the obvious file would be wrong

DeepSeek Harness is the sharpest example. It migrates settings.yaml into each profile's cordis.patch.yml on startup and renames the original settings.yaml.imported. A writer that edited settings.yaml would silently do nothing. Prism merges route rows directly into the profile patch file at the correct indentation instead, with compat.supportsDeveloperRole: false and maxTokensField: max_tokens set on the chat route, which is what makes those models behave the same as they do elsewhere.

Hermes keeps providers and MCP servers in one YAML file, so Prism maintains marker-delimited regions and can remove one without disturbing the other. Codex gets two managed blocks — a provider block and a catalog pointer — plus a generated codex_catalog.jsonholding context windows, reasoning levels and auto-compaction thresholds. Prism deliberately does not set Codex's top-level model key, so which model Codex starts with stays your choice.

Nothing is overwritten blindly
Every writer either merges into an existing structure or confines itself to a marked region. Disable removes Prism's entries and leaves your own configuration intact.

Clients you configure by hand

Four more clients are documented and supported, but cannot be automated — either because they have no config file Prism should own, or because they must not be redirected.

ClientWhy manualWhat you set
CursorBase URL override lives in its own settings UIOverride the OpenAI base URL to http://127.0.0.1:11434/v1
Claude DesktopCannot be pointed at a custom model providerMCP only, via a stdio bridge entry
OpenAI SDKIt is a library, not an installed appbase_url and api_key in your client code
Any Ollama-compatible clientPrism serves the same API shape on port 11434The base URL — no key needed on the local route

Claude Desktop is worth calling out: it only launches stdio MCP servers, so Prism's Streamable HTTP gateway is reached through a small bridge command. Every server you enabled in Prism becomes available in one entry, and no upstream MCP credential ever reaches Claude Desktop.

How to check it is working

The Stats tab breaks down traffic by client, which turns "did the integration take?" into a one-glance question. Detection reads the User-Agent and maps known agents; a client can label itself explicitly by sending X-Client-Name, which takes priority over User-Agent matching.

curl http://127.0.0.1:11434/health
# {"status":"ok"}

curl http://127.0.0.1:11434/v1/models
# the model list agents see - unauthenticated on the local route

If a client appears as "Unknown" in the breakdown, it is still working — detection simply did not recognise it. If it does not appear at all, the request never reached Prism, which is a configuration problem in the client rather than in the integration.

Adding an agent that is not on the list

Any client that accepts a custom OpenAI-compatible endpoint works manually with two values: base URL http://127.0.0.1:11434/v1 and any non-empty key, since the local route accepts prism. Clients that speak Anthropic Messages use http://127.0.0.1:11434 with no path suffix, and send the same token as ANTHROPIC_AUTH_TOKEN.

Two API shapes, one port
/v1/messages is Anthropic-shaped; /v1/chat/completions and /v1/responses are OpenAI-shaped. There is no /api/chat route — Prism is a proxy in front of your providers, not an Ollama server.

Reference

Every claim on this page is checked against the Prism source, and the reference documentation is where those details live in full.

Try it yourself

Prism is a free, MIT-licensed local proxy for AI coding agents. Install it, point one agent at http://127.0.0.1:11434, and the rest of this post applies as written.