An llm plugin for DaoXE — an
OpenAI-compatible, multi-model LLM gateway. One key, many models, from your
terminal.
llm install llm-daoxe # or: pip install llm-daoxe
llm keys set daoxe # paste your DaoXE key
llm daoxe models --refresh # pull your account's real model list
llm -m daoxe/claude-sonnet-4-6 "Explain an OpenAI-compatible gateway in one line."DaoXE exposes an OpenAI-compatible API at https://daoxe.com/v1, so a single key
gets you Claude, GPT, Gemini, Kimi, Grok and more through the same llm you
already use. This plugin registers those models with llm and adds a small
llm daoxe command group for model discovery.
Disclosure: this plugin is maintained by people who operate DaoXE. It is a thin, standard wrapper around
llm's built-in OpenAI-compatible model classes — there is no lock-in and nothing proprietary. DaoXE is not available in mainland China.
# 1) the llm CLI itself, if you don't have it
pip install llm # or: pipx install llm / uv tool install llm / brew install llm
# 2) this plugin
llm install llm-daoxe # llm's plugin installer (recommended)
# or plain pip:
pip install llm-daoxeFrom a checkout of this repo (for hacking on it):
git clone https://github.com/seven7763/llm-daoxe
cd llm-daoxe
pip install -e .
llm plugins # should list "llm-daoxe"Requires Python 3.9+ and llm (which brings click and httpx).
The key is read from llm's key store under the alias daoxe, or from the
DAOXE_API_KEY environment variable. It is never printed by this plugin.
llm keys set daoxe # interactive, stored in llm's keys.json (recommended)
# or, for a single shell / CI:
export DAOXE_API_KEY="your-daoxe-key"# List the DaoXE models llm knows about
llm models | grep -i daoxe
# Fetch YOUR account's live model list (GET /v1/models) and cache it.
# After this, those exact ids register on the next llm run.
llm daoxe models --refresh
llm daoxe models # show the cached (or seed) list
llm daoxe models --json # machine-readable
# Run a prompt — model ids are namespaced as daoxe/<model>
llm -m daoxe/gpt-5.5 "Write a haiku about caching."
# Streaming, piping, system prompts, tools and schemas work like any llm model
llm -m daoxe/claude-sonnet-4-6 "Summarize this." < README.md
git diff | llm -m daoxe/gpt-5.5 -s "Write a commit message."Use any model id from llm daoxe models --refresh (i.e. from your account's
GET /v1/models). Don't copy ids from blog posts — they go stale.
- On a fresh install, the plugin registers a tiny seed list of example ids so
llm modelsisn't empty. These are examples only — they are not a claim about how many models DaoXE has, and they will drift over time. llm daoxe models --refreshcalls your account'sGET /v1/models, caches the response, and from then on registers those exact models. That cached list is the source of truth; the seed list is just a friendly default.- Model ids are namespaced as
daoxe/<model>so they never collide with ids registered by other plugins (e.g. a baregpt-5.5). The bare<model>is what gets sent to the API.
| Setting | How | Default |
|---|---|---|
| API key | llm keys set daoxe or DAOXE_API_KEY |
— (required to call models) |
| Base URL | DAOXE_BASE_URL env var |
https://daoxe.com/v1 |
Overriding the base URL is handy for a self-hosted or staging gateway:
export DAOXE_BASE_URL="https://your-gateway.example/v1"- No DaoXE numbers are hard-coded. No model counts, prices, or availability
claims live in this code. The authoritative model list is your own
GET /v1/models. - Per-model capabilities vary. The plugin advertises tool-calling and JSON schemas (the common OpenAI-compatible surface); if a specific model doesn't support a feature, the API returns an error for that call. Vision/attachments are left off by default because support differs by model.
- This is the OpenAI Chat Completions surface. DaoXE also speaks the Anthropic
Messages API natively (
/v1/messages) for Claude-native clients; that path is documented for Claude Code and Anthropic-shaped tools elsewhere. Claude models are still reachable here via the OpenAI-compatible surface (daoxe/claude-...). - It's a thin wrapper. Streaming, tools and schemas are handled by
llm's own built-in OpenAI-compatible classes, not by custom code here.
- llm — Simon Willison's CLI/Python library this plugs into.
- daoxe-vscode — the same BYOK, OpenAI-compatible workflow as a VS Code extension (test endpoint, list models, complete/rewrite selection).
- DaoXE-AI — OpenAI-/Anthropic-compatible gateway setup examples for Cursor, Claude Code & Cline.
- llm-honesty-probe — provider-neutral tool for heuristic signals on whether an endpoint serves the model it claims. Point it at DaoXE (or anyone) and verify.
Maintained by the DaoXE team. DaoXE is one OpenAI-compatible gateway among many;
this plugin gives it a nice llm on-ramp but privileges nothing — swap in any
base URL via DAOXE_BASE_URL.
daoxe.com
— one key, many models (not available in mainland China).
MIT — see LICENSE.