Your tools
The agent catalog
Conifer ships a spec for every terminal agent it knows how to wire. Ask the CLI rather than reading a table that can go stale.
Each agent is a spec: the provider wire it speaks, how it integrates, the install command for your OS, and a version probe. The specs live in the binary, so the authoritative answer is always the one your own CLI gives:
ID WIRE INTEGRATION STATUS INSTALLED
claude-code anthropic cli supported yes
codex openai-responses cli supported yes
aider openai-chat cli supported yes
droid anthropic cli supported no
openclaw anthropic cli supported no
hermes openai-chat cli supported no
opencode openai-chat configure supported n/a
pi openai-chat configure supported n/aReading the list
| Column | What it tells you |
|---|---|
wire | Which door the agent speaks: the Anthropic Messages wire, the OpenAI chat wire, or the OpenAI Responses wire. Conifer serves all three on one credential. |
integration | cli means Conifer can launch it with the right flags. configure means the agent never reads the launching shell's environment, so a config file edit is the only way to wire it. |
installed | Whether the binary is on this machine. n/a means the agent is configured rather than launched, so there is nothing for Conifer to probe. |
origin | builtin, or a spec you registered yourself. A user spec sharing a built-in's id shadows it, and removing the override restores the original. |
Inspect one
conifer agents show claude-codeshow prints the whole spec: the wire, the launch arguments Conifer would pass, the install command for this OS, the version probe and what it reported, and the upstream docs link. Add --json for the machine-readable form.
Install one
conifer agents install claude-codeThe exact command is printed verbatim before it runs, because it is the upstream project’s own documented installer and you should see what you are about to execute. Some agents ship no recipe — OpenClaw, Hermes and droid are installed the upstream way, and show says so rather than pretending otherwise.
Where each one is documented
| Agent | Wire | Recipe |
|---|---|---|
claude-code | anthropic | Claude Code |
codex | openai-responses | Codex |
aider | openai-chat | Aider |
opencode | openai-chat | opencode |
pi | openai-chat | Pi |
openclaw | anthropic | OpenClaw |
hermes | openai-chat | Hermes |
droid | anthropic | droid |
Register your own
The catalog is not a closed list. Export a spec as JSON, edit it, and register it — useful for an internal agent, or for pinning a version of one Conifer already knows:
# --json wraps the spec in metadata; `add` wants the spec ITSELF
conifer agents show codex --json | jq .spec > my-agent.json
# edit the id and display, then register it
conifer agents add my-agent.json
conifer agents list # ORIGIN reads "user"
conifer agents remove my-agentNote the jq .spec: show --json wraps the spec alongside its origin, install state and probed version, while add takes the spec on its own. Handing it the whole document is a named error that tells you exactly this, rather than a schema dump.
User specs live in $CONIFER_HOME/agents.json. Giving one a built-in id is a disclosed override, and conifer agents remove on that id resets the built-in rather than deleting it.