← Back to Plugins
Tools

Llmtr Provider

knowhy-co By knowhy-co 👁 16 views ▲ 0 votes

LLMTR OpenAI-compatible AI gateway provider plugin for OpenClaw

Homepage GitHub

Install

npm install
npm

Configuration Example

{
  "models": {
    "providers": {
      "llmtr": {
        "models": [{ "id": "perplexity/sonar-pro", "contextWindow": 131072, "maxTokens": 32768 }]
      }
    }
  }
}

README

# OpenClaw LLMTR provider

An [OpenClaw](https://github.com/openclaw/openclaw) provider plugin for
[LLMTR](https://llmtr.com), an OpenAI-compatible AI gateway that serves over 230
models behind a single API key: global passthrough routes across Anthropic,
OpenAI, Google, Qwen, Z.AI, Mistral, DeepSeek, MiniMax, Moonshot, Meta and
NVIDIA, plus a Turkey-hosted set for workloads that need Turkish data residency
or Turkish-language models.

## Install

```bash
openclaw plugins install openclaw-llmtr-provider
openclaw gateway restart
```

## Configure

Create an API key at [llmtr.com](https://llmtr.com), then set it:

```bash
export LLMTR_API_KEY="<your-llmtr-api-key>"
```

Or store it through OpenClaw's auth flow:

```bash
openclaw onboard --auth-choice llmtr-api-key
```

## Use

Model refs are `llmtr/<upstream-route-id>`:

```bash
openclaw agent --local --model llmtr/anthropic/claude-sonnet-5 -m "Hello"
openclaw agent --local --model llmtr/zai/glm-5.2 -m "Hello"
openclaw models list --provider llmtr
```

Turkey-hosted routes are named `llmtr/<name>` upstream, so their refs collapse to
a single prefix — the Trendyol model is `llmtr/trendyol-asure-12b`, not
`llmtr/llmtr/trendyol-asure-12b`.

| Setting       | Value                             |
| ------------- | --------------------------------- |
| Provider id   | `llmtr`                           |
| Base URL      | `https://llmtr.com/v1`            |
| Env var       | `LLMTR_API_KEY`                   |
| Default model | `llmtr/anthropic/claude-sonnet-5` |

## Model catalog

The plugin refreshes its catalog from `GET /v1/models` and keeps only routes
whose `supported_operations` include `CHAT_COMPLETIONS`, so embedding-only
(`voyageai`, `llmtr/embeddinggemma-300m`), image (`recraft`, `krea`) and
`/v1/responses`-only routes never appear. Context windows, output caps,
modalities, pricing and reasoning support are read from the same response, so
they track the gateway instead of being hard-coded. A snapshot of 49 routes
ships with the plugin as the offline fallback.

Turkey-hosted:

- `llmtr/gemma-4`
- `llmtr/qwen3-5-4b`
- `llmtr/qwen3-6-35b`
- `llmtr/trendyol-asure-12b`
- `llmtr/muse-glimmer-30b-tr`
- `llmtr/magibu-11b-v8`
- `llmtr/medgemma-4b`

Global passthrough (snapshot selection):

- `llmtr/anthropic/claude-opus-5`, `claude-sonnet-5`, `claude-opus-4.8`,
  `claude-haiku-4.5`
- `llmtr/openai/gpt-5.4`, `gpt-5.4-mini`, `gpt-5.2`
- `llmtr/google/gemini-3.7-flash`, `gemini-3.5-flash`, `gemini-3.1-pro-preview`
- `llmtr/zai/glm-5.2`, `glm-5.1`, `glm-5`, `glm-5-turbo`, `glm-4.7`, `glm-4.6`,
  `glm-4.6v` (vision)
- `llmtr/qwen/qwen3.7-max`, `qwen3.7-plus`, `qwen3.6-flash`, `qwen3.5-plus`,
  `qwen3-coder-plus`
- `llmtr/deepseek/deepseek-v4-pro`, `deepseek-v4-flash`, `deepseek-reasoner`,
  `deepseek-chat`
- `llmtr/moonshot/kimi-k3`, `kimi-k2.7-code`, `kimi-k2.6`
- `llmtr/minimax/minimax-m3`, `minimax-m2.7`, `minimax-m2.7-highspeed`,
  `minimax-m2.5`, `minimax-m2.5-highspeed`
- `llmtr/mistral/mistral-large-latest`, `mistral-medium-latest`
- `llmtr/meta/muse-spark-1.2`, `llama-3.3-70b-instruct`
- `llmtr/stepfun/step-3.7-flash`, `llmtr/mimo/mimo-v2.5-pro`,
  `llmtr/kwaikat/kat-coder-pro-v2.5`, `llmtr/nvidia/nemotron-3-super-120b-a12b`

### Adding a route that is not in the snapshot

Discovery surfaces every chat-capable route the gateway serves, so the list above
is a floor rather than a limit. To pin one explicitly, or to override a published
value, add it under `models.providers.llmtr.models` in your OpenClaw config:

```json
{
  "models": {
    "providers": {
      "llmtr": {
        "models": [{ "id": "perplexity/sonar-pro", "contextWindow": 131072, "maxTokens": 32768 }]
      }
    }
  }
}
```

Check `supported_operations` in `curl https://llmtr.com/v1/models` first: routes
LLMTR serves solely through `/v1/responses` reject chat-completions requests, as
do embedding, image, video and audio routes.

## Troubleshooting

- `401`/`403` — verify the key in the LLMTR dashboard, and re-run
  `openclaw onboard --auth-choice llmtr-api-key` if the stored profile is stale.
- An id that used to work now errors — LLMTR retires routes, and retired ids drop
  out of `GET /v1/models` first. `llmtr/sincap` and `llmtr/trendyol-7b` are both
  gone; `llmtr/trendyol-asure-12b` replaces the latter. Use the ids from
  `openclaw models list --provider llmtr`.
- A model is on llmtr.com but not in OpenClaw — it is most likely a
  `/v1/responses`-only or non-chat route. Confirm with
  `curl https://llmtr.com/v1/models` and check `supported_operations`.
- `502` or idle timeouts on Turkey-hosted `llmtr/*` routes — those run on smaller
  capacity and can be briefly unavailable. Retry, or fall back to a global route;
  the same key serves both.

## Development

```bash
npm install
npm run build      # bundles index.ts -> dist/index.js
npm run typecheck
npm test
```

`openclaw` is an optional peer dependency: the plugin imports the host's
`openclaw/plugin-sdk/*` subpath exports at runtime and is installed into an
existing OpenClaw instance.

## Relationship to openclaw/openclaw

This is a community-maintained package. A proposal to ship LLMTR as an official
provider is open upstream at
[openclaw/openclaw#110917](https://github.com/openclaw/openclaw/pull/110917).

## License

MIT
tools

Comments

Sign in to leave a comment

Loading comments...