Skip to content

v3.13.12: External LLM provider registration

Latest

Choose a tag to compare

@proffesor-for-testing proffesor-for-testing released this 21 Aug 09:43
fb687f2

What's New

If you run your own LLM host — a CLI that AQE doesn't ship support for — you can now give it a real provider identity instead of pretending it's someone else's.

Declare it in .agentic-qe/llm-config.json:

{
  "externalProviders": {
    "my-host": {
      "kind": "cli",
      "command": ["my-host", "exec"],
      "billingMode": "subscription",
      "models": ["default"]
    }
  }
}

That's it. my-host is now selectable with AQE_LLM_PROVIDER=my-host, usable as your defaultProvider, in your fallbackChain, and in per-agent overrides. Declaring it also enables it.

It's declared as data, not a module path — AQE never imports third-party code because a config file asked it to. And because it's config rather than an in-process call, the same declaration is picked up by both the aqe CLI and the MCP server, which are separate processes.

Embedding AQE as a library instead? registerProvider() is exported from agentic-qe/shared/llm.

Honest about who's paying

billingMode is something you assert, and AQE says so rather than repeating it as fact:

Provider: my-host  ● external — subscription (declared by .agentic-qe/llm-config.json, not verified by AQE)

Omit it and you get metered-api — AQE assumes your host costs money and asks for a budget cap, rather than assuming it's free.

This release also fixes a related bug: any provider reporting subscription billing was previously described as running on your Claude Code subscription. That was only ever accurate because the two built-in subscription providers happened to be the only ones possible.

Two deliberate limits

  • AQE checks whether your host exists by resolving the binary on PATH — it won't run it to find out, since that could burn a real request against your plan.
  • Declared hosts don't provide embeddings. embed() falls back to a provider that has an embeddings endpoint rather than returning a made-up vector.

Also

  • agentic-qe/shared/llm is now a real package export (it had been documented but never actually exported).
  • aqe llm providers lists declared hosts, marked *, so they're never confused with providers AQE ships.

Nothing changes for existing projects — declare nothing and routing behaves exactly as before.

Getting Started

npx agentic-qe init --auto

See ADR-127, the routing guide, and the CHANGELOG for full details. Thanks to @pacphi for issue #628.