docs: add LLM providers reference page#1261
Conversation
Add docs/llm-providers.mdx covering supported LLM APIs and CLIs with env vars, default reasoning/toolcall models, and switching guidance for Anthropic, OpenAI, OpenRouter, Gemini, NVIDIA NIM, MiniMax, Bedrock, Ollama, and Codex CLI. Wire the page into the Integrations tab in docs/docs.json. Source of truth: app/config.py (LLMProvider, LLMSettings) and app/services/llm_client.py (_create_llm_client). Fixes Tracer-Cloud#1005
Greptile SummaryThis PR adds a new Confidence Score: 3/5Docs-only change safe to merge after addressing the two missing providers; shipping as-is would leave A P1 finding (two supported providers entirely absent from the reference page) caps the score. The rest of the documented content is accurate and the nav wiring is correct. docs/llm-providers.mdx — missing Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
ENV["LLM_PROVIDER env var"] --> ROUTE{"_create_llm_client()"}
ROUTE -->|anthropic| ANT["LLMClient\n(Anthropic SDK)"]
ROUTE -->|bedrock| BED["BedrockLLMClient\n(IAM auth)"]
ROUTE -->|openai| OAI["OpenAILLMClient\n(openai SDK)"]
ROUTE -->|openrouter| OR["OpenAILLMClient\n+ OPENROUTER_BASE_URL"]
ROUTE -->|requesty| REQ["OpenAILLMClient\n+ REQUESTY_BASE_URL\n+ X-Title header\n⚠️ not in docs"]
ROUTE -->|gemini| GEM["OpenAILLMClient\n+ GEMINI_BASE_URL"]
ROUTE -->|nvidia| NV["OpenAILLMClient\n+ NVIDIA_BASE_URL"]
ROUTE -->|minimax| MM["OpenAILLMClient\n+ MINIMAX_BASE_URL\n+ temp=1.0"]
ROUTE -->|ollama| OLL["OpenAILLMClient\n+ OLLAMA_HOST/v1"]
ROUTE -->|codex| CLI["CLIBackedLLMClient\n(subprocess)"]
ROUTE -->|claude-code| CLI2["CLIBackedLLMClient\n(subprocess)\n⚠️ not in docs"]
ANT --> OUT["LLMResponse"]
BED --> OUT
OAI --> OUT
OR --> OUT
REQ --> OUT
GEM --> OUT
NV --> OUT
MM --> OUT
OLL --> OUT
CLI --> OUT
CLI2 --> OUT
Reviews (1): Last reviewed commit: "docs: add LLM providers reference page" | Re-trigger Greptile |
| | OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/auto` | `openrouter/auto` | | ||
| | Google Gemini| `gemini` | `GEMINI_API_KEY` | `gemini-3.1-pro-preview` | `gemini-3.1-flash-lite-preview` | | ||
| | NVIDIA NIM | `nvidia` | `NVIDIA_API_KEY` | `meta/llama-3.1-405b-instruct` | `meta/llama-3.1-8b-instruct` | | ||
| | MiniMax | `minimax` | `MINIMAX_API_KEY` | `MiniMax-M2.7` | `MiniMax-M2.7-highspeed` | | ||
| | Amazon Bedrock| `bedrock` | AWS IAM (`AWS_REGION`) | `us.anthropic.claude-sonnet-4-6` | `us.anthropic.claude-haiku-4-5-20251001-v1:0` | | ||
| | Ollama (local)| `ollama` | None (local daemon) | `llama3.2` | `llama3.2` | | ||
| | OpenAI Codex CLI| `codex` | `codex login` (CLI) | Codex CLI default | Codex CLI default | | ||
|
|
||
| OpenSRE distinguishes two model slots per provider: |
There was a problem hiding this comment.
Two providers are missing from the documentation
app/config.py defines 11 valid LLMProvider values, but this page documents only 9. The missing providers are:
requesty— a fully supported OpenAI-compatible gateway with its ownREQUESTY_API_KEY,REQUESTY_REASONING_MODEL/REQUESTY_TOOLCALL_MODELenv vars, base URL (https://router.requesty.ai/v1), aX-Title: OpenSREheader, and complete routing in_create_llm_client. It's treated as a peer of OpenRouter.claude-code— a CLI-backed provider (alongsidecodex) registered in the CLI registry and explicitly listed inLLMSettings._normalize_provider'svalid_providerstuple.
A user who sets LLM_PROVIDER=requesty or LLM_PROVIDER=claude-code will find the feature works but won't find any guidance here. The quick-reference table intro also says "9 supported providers", which is now inaccurate.
| export MINIMAX_MODEL=MiniMax-M2.7 | ||
| ``` | ||
|
|
||
| OpenAI-compatible endpoint at `https://api.minimax.io/v1`. Temperature is fixed to `1.0` to match MiniMax recommendations. | ||
|
|
||
| ### Amazon Bedrock | ||
|
|
||
| ```bash |
There was a problem hiding this comment.
MiniMax per-slot env vars not documented
Every other multi-slot provider (NVIDIA, Gemini, OpenRouter) shows both the shared *_MODEL shorthand and the independent *_REASONING_MODEL / *_TOOLCALL_MODEL per-slot overrides. The MiniMax section only shows MINIMAX_MODEL, but app/config.py from_env() reads MINIMAX_REASONING_MODEL and MINIMAX_TOOLCALL_MODEL as independent overrides via the same fallback chain. Consider adding the per-slot vars to match the pattern used for all other providers.
Cover all 11 providers defined in app/config.py LLMProvider: - Add Requesty (OpenAI-compatible gateway, REQUESTY_BASE_URL, X-Title: OpenSRE header). - Add Claude Code CLI (subprocess provider alongside Codex, CLAUDE_CODE_MODEL / CLAUDE_CODE_BIN env vars). - Document per-slot MINIMAX_REASONING_MODEL / MINIMAX_TOOLCALL_MODEL to match the pattern used for OpenRouter, Gemini, NVIDIA, and Requesty. Addresses Greptile review on PR Tracer-Cloud#1261.
|
Addressed all three findings in c6dcd9a:
|
|
All three fixes verified against
Quick-reference table now covers all 11 Tip: You can customize Greptile's behavior for this repo with |
|
🍕 @0xDevNinja's PR: crispy edges, no unnecessary toppings, delivered on time. Understood the assignment. 🔥 👋 Join us on Discord - OpenSRE : hang out, contribute, or hunt for features and issues. Everyone's welcome. |

Fixes #1005
Describe the changes you have made in this PR -
Adds a dedicated LLM providers reference page at
docs/llm-providers.mdxand wires it into the Integrations tab navigation indocs/docs.json. The page consolidates everything that was previously scattered between the README integrations matrix and the source code:anthropic,openai,openrouter,gemini,nvidia,minimax,bedrock,ollama,codex) with theLLM_PROVIDERvalue, auth env var, and default reasoning/toolcall models.app/services/AGENTS.md,app/integrations/llm_cli/AGENTS.md).LLM_MAX_TOKENS, runtime caching, and how to switch providers viaopensre onboard.Source of truth pulled directly from
app/config.py(LLMProvider,LLMSettings, default model constants, base URLs) andapp/services/llm_client.py(_create_llm_client).Demo/Screenshot for feature changes and bug fixes -
Docs-only change. Page renders as a standard Mintlify mdx page under Integrations → LLM providers in the docs site nav.
Code Understanding and AI Usage
Did you use AI assistance (ChatGPT, Claude, Copilot, etc.) to write any part of this code?
Explain your implementation approach:
I started by reading
app/config.pyandapp/services/llm_client.pyto enumerate every supported provider and confirm exactly which env vars and defaults the runtime actually reads, so the docs match behavior rather than guesswork. I considered putting the content into the existingintegrations-overview.mdx, but that file is a high-level intro and would have buried the per-provider env-var specifics; a dedicated page also keeps the URL stable for cross-linking from the README. I matched the frontmatter and table style of the existing integration pages (docs/datadog.mdx,docs/grafana.mdx) so it slots in without visual drift.Checklist before requesting a review