Supported agents
This table is the canonical supported-agents list. Per-agent setup kits live under editors/.
| Agent | How Tarn plugs in | Setup |
|---|---|---|
| Claude Code | tarn-mcp + skill plugin, plus the tarn-lsp plugin | marketplace plugin |
| OpenAI Codex | tarn-mcp (codex mcp add) + .agents/skills/ skill + AGENTS.md | editors/codex |
| opencode | tarn-mcp + tarn-lsp + skill via opencode.jsonc | editors/opencode |
| pi | tarn-api-testing skill + tarn CLI (no native MCP; optional MCP via adapter) | editors/pi |
| Cursor | tarn-mcp via .cursor/mcp.json | MCP setup |
| Windsurf | tarn-mcp via .windsurf/mcp.json | MCP setup |
| Neovim / Helix / Zed / VS Code | tarn-lsp language server | tarn-lsp |
OpenAI Codex
Register the MCP server with the Codex CLI — it writes ~/.codex/config.toml for you:
codex mcp add tarn -- tarn-mcp codex mcp list # confirm "tarn" is listed
Or add the block by hand to ~/.codex/config.toml (user) or .codex/config.toml (project). command is the bare executable; args is a separate array:
[mcp_servers.tarn]
command = "tarn-mcp"
args = []
For the skill, Codex reads the Agent Skills standard at .agents/skills/<name>/SKILL.md (or ~/.agents/skills/). Full flow: editors/codex/README.md.
opencode
opencode uses its native opencode.jsonc at the repo root — note the schema shape (mcp, not mcpServers; type: "local"; a command array). It also gets the tarn-lsp language server:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tarn": { "type": "local", "command": ["tarn-mcp"], "enabled": true }
},
"lsp": {
"tarn": { "command": ["tarn-lsp"], "extensions": [".yaml", ".yml"] }
}
}
The lsp entry claims all .yaml/.yml files (opencode matches by final extension, not the .tarn.yaml compound suffix), so keep it in project-level config for Tarn-focused repos. Full flow: editors/opencode/README.md.
pi
The pi coding agent is deliberately minimal and has no native MCP — its docs say to "build CLI tools with READMEs (skills), or build an extension." That fits Tarn perfectly: tarn is a single static binary, and pi runs it through its bash tool. The canonical integration is the skill plus the CLI:
# drop the skill where pi discovers it .agents/skills/tarn-api-testing/SKILL.md # inside pi /skill:tarn-api-testing write a smoke test for GET /health and run it
To expose the structured tarn-mcp tools in pi, use the community pi-mcp-adapter, which reads the same .mcp.json Tarn already ships. Full flow: editors/pi/README.md.
The cross-agent skill
The tarn-api-testing skill teaches an agent the failures-first loop, the .tarn.yaml format, and the diagnosis taxonomy. .agents/skills/<name>/SKILL.md is a shared standard read by Codex, opencode, and pi — one directory serves all three. The Tarn repo ships it at .agents/skills/tarn-api-testing/, symlinked to the canonical plugin/skills/tarn-api-testing/.
End-to-end example
A reproducible write → run → read-failure → fix loop lives in examples/agent-loop/. It hits the public JSONPlaceholder API, so there is nothing to start:
tarn validate examples/agent-loop/api.tarn.yaml tarn run examples/agent-loop/api.tarn.yaml --format llm
Ask any MCP-enabled agent: "Run examples/agent-loop/api.tarn.yaml with the tarn tools; if anything fails, call tarn_fix_plan and patch it." See the AI Workflows guide for the loop in depth.