Integration guides ยท 2026-08-29

Developer tools that work with LLMTR: how 21 integrations connect

The full list of coding agents, agent platforms and self-hosted applications that run on LLMTR. Compare which integration shape each tool uses and where its configuration lives.

Diagram of the three LLMTR integration shapes: a provider embedded in the tool, a separate plugin package, and base URL only configuration.

Integration is not one thing, it is three shapes

Saying that a tool works with LLMTR does not describe a single technical arrangement. In practice there are three shapes, and which one you are dealing with decides both your setup time and your ongoing maintenance.

In the first shape the provider lives inside the tool's own source code. The tool knows LLMTR by name, fetches the model list itself, and shows it as a separate entry in the settings screen or config file. In the second shape the integration ships as a separate plugin package: the main repository stays untouched, you install the plugin and the tool loads it. The third shape is the lightest one, pointing a tool that already speaks an OpenAI or Anthropic compatible surface at a different base URL. No code changes, two or three environment variables.

The table below splits every tool that works with LLMTR today into these three shapes. Find your tool and move on to its guide.

Tools integrated with LLMTR and their integration shape (29 August 2026)
ToolShapeWhere setup happens
Claude CodeBase URLEnvironment variables
Codex CLIBase URLConfig file, model provider block
OpenClaudeEmbedded providerknowhycodata/openclaude, feat/add-llmtr-provider branch
OpenCodeEmbedded providerknowhycodata/opencode, add-llmtr-docs branch
OpenClawPlugin packageknowhycodata/openclaw, feat/llmtr-provider branch
ClineEmbedded providerknowhycodata/cline, feat/add-llmtr-provider branch
PentestCodeEmbedded providerknowhycodata/pentestcode, feat/llmtr-provider branch
StrixEmbedded providerknowhycodata/strix, feat/llmtr-native-provider branch
HarnessRouterEmbedded providerknowhycodata/harnessrouter, feat/llmtr-provider branch
Hermes AgentPlugin packageknowhycodata/hermes-llmtr-plugin repository
DeepSeek HarnessPlugin packageknowhycodata/dsh-plugin-llmtr repository
PiEmbedded providerknowhycodata/pi, feat/llmtr-provider branch
Trae AgentEmbedded providerknowhycodata/trae-agent, feat/llmtr-provider branch
PoolBase URLEnvironment variables
OpenCompanyEmbedded providerknowhycodata/OpenCompany, feat/llmtr-provider branch
OpenStoryEmbedded providerknowhycodata/openstory, 1265-llmtr-gateway-provider branch
OpenReviewBase URLTwo environment variables
OpenBotBase URLEnvironment file and container configuration
Open SEOBase URLSelf-host environment variables
Open WebUIBase URLConnection setting in the interface
models.devModel metadataknowhycodata/models.dev, add-llmtr-provider branch

Embedded provider: the tool knows LLMTR by name

In this shape LLMTR appears in the tool's provider list. You do not type a base URL, you pick the provider and paste your key. The tool fetches the model list, shows model identifiers in its own picker, and in most cases translates tool-specific fields such as reasoning level into the right request shape.

The benefit is convenience; the cost is version coupling. Because the provider code lives in the tool's repository, you track the branch that carries the integration. The table above names that branch for every tool.

One subset of this group is worth calling out: HarnessRouter distributes a single provider connection to three separate agent harnesses, so one key feeds three different terminal tools.

  • OpenClaude, OpenCode, Cline and Pi: a built-in provider entry on the coding agent side.
  • PentestCode and Strix: model configuration inside authorised penetration testing tools.
  • OpenCompany and OpenStory: a provider layer inside workflow and media generation products.
  • Trae Agent: a dedicated client class on the Python side.
  • HarnessRouter: one connection fanned out to three harnesses.

Plugin package: integration without touching the main repository

Three tools keep the integration outside the main repository. In OpenClaw the plugin sits as a package inside the tool's own extension directory and declares itself through a manifest file. For Hermes Agent and DeepSeek Harness the plugin lives in an entirely separate repository: hermes-llmtr-plugin and dsh-plugin-llmtr under the knowhycodata account exist for exactly this.

The practical benefit is isolation. Upgrading the tool does not break the integration, and upgrading the integration does not break the tool. This is the preferred route in tools whose plugin architecture is mature.

The one thing to watch is interface versioning. A plugin targets a specific plugin interface version; if the tool changes that interface, the plugin may fail to load until it is updated.

Base URL only: the route with no code changes

Seven tools need no code change at all. The tool already speaks an OpenAI or Anthropic compatible surface, and you only change the address and the key. Claude Code, Codex CLI, Pool, OpenReview, OpenBot, Open SEO and Open WebUI are in this group.

Variable names differ per tool, but they always carry the same three things: address, key and model identifier. The verification step below is the same whatever tool you are in. Read the model list without a key, then send one small request with the key. If both come back, the remaining problem is in the tool's own configuration, not on the gateway side.

A tool-independent two-step connection check

# 1) The model catalog reads without a key
curl https://llmtr.com/v1/models

# 2) One small request with the key
curl https://llmtr.com/v1/chat/completions \
  -H "Authorization: Bearer llmtr-your_key" \
  -H "Content-Type: application/json" \
  -d '{"model":"anthropic/claude-sonnet-5","messages":[{"role":"user","content":"test"}],"max_tokens":16}'

The endpoint your tool speaks decides your model choice

Independent of integration shape, one detail is often missed: whichever endpoint the tool speaks, the model you pick has to be open on that endpoint. In LLMTR this relationship runs one way only.

A Chat Completions request works if the model has a chat binding or a Responses binding. There is no bridge in the other direction: a request sent to the Responses endpoint only works for models that carry a Responses binding. That is why tools speaking the Responses protocol have a narrower model list, and why writing a chat-only model there fails.

Tools using the Anthropic compatible surface reach a separate endpoint. Some request fields have no effect there, and we say so plainly in that guide: the request is not rejected, the field is ignored.

  • Tools speaking Chat Completions: every chat model in the catalog is available.
  • Tools speaking Responses: only models with a Responses binding are available.
  • Tools speaking the Anthropic compatible surface: separate endpoint, separate request body.

Three checks before you start

Whichever guide you move on to, preparing these three first saves time. First the key: LLMTR keys start with a fixed prefix and are shown once at creation. Second the model identifier: look it up in the catalog and note the full identifier, because most tools do not accept short names. Third the balance: agent tools send many requests inside a single task, and a setup that starts with an empty balance sends you hunting for an integration bug that is not there.

One note on pricing as well. The LLMTR platform margin applies only when you top up credit, and it is 8 percent. No margin is added to model prices; the price you see in the catalog is the model price.

The detailed guide for your tool is in the list beside this page. Each guide carries that tool's real file paths, real variable names and verification steps.

Frequently asked questions

Do I have to install a fork to use these tools?

No. In seven tools the integration is only an address and key change and works with the tool's official release. The embedded provider and plugin package shapes do need the relevant repository and branch; the table says which applies to each tool.

Can I use the same API key across several tools?

Yes, one key works in several tools. If you want to separate usage, a key per tool is better: revoking one key then affects only that tool, and usage records let you tell which tool spent what.

What should I do if a tool shows an empty model list?

Read the model catalog without a key first. If the list comes back, the problem is not the network and is most likely the tool's own filter: some tools only list identifiers matching name patterns they recognise. In that case write the model identifier directly into the configuration instead of waiting for the picker.

Chat requests work but Responses requests fail. Why?

Because the bridge runs one way. A Chat Completions request also works for models with a Responses binding, but a Responses request does not work for a chat-bound model. If your tool speaks the Responses protocol, pick a model that is open on that endpoint in the catalog.

Related posts