Skip to content

docs: add LLM providers reference page#1261

Merged
muddlebee merged 2 commits intoTracer-Cloud:mainfrom
0xDevNinja:issue/1005-llm-providers-docs
May 4, 2026
Merged

docs: add LLM providers reference page#1261
muddlebee merged 2 commits intoTracer-Cloud:mainfrom
0xDevNinja:issue/1005-llm-providers-docs

Conversation

@0xDevNinja
Copy link
Copy Markdown
Contributor

Fixes #1005

Describe the changes you have made in this PR -

Adds a dedicated LLM providers reference page at docs/llm-providers.mdx and wires it into the Integrations tab navigation in docs/docs.json. The page consolidates everything that was previously scattered between the README integrations matrix and the source code:

  • Quick-reference table of all 9 supported providers (anthropic, openai, openrouter, gemini, nvidia, minimax, bedrock, ollama, codex) with the LLM_PROVIDER value, auth env var, and default reasoning/toolcall models.
  • Per-provider sections with copy-pasteable env var blocks, including optional model overrides and base URLs (for OpenAI-compatible providers).
  • Distinction between API-backed providers and CLI-backed providers (Codex), with cross-links to the existing internal extension guides (app/services/AGENTS.md, app/integrations/llm_cli/AGENTS.md).
  • Notes on the reasoning vs toolcall model split, LLM_MAX_TOKENS, runtime caching, and how to switch providers via opensre onboard.

Source of truth pulled directly from app/config.py (LLMProvider, LLMSettings, default model constants, base URLs) and app/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?

  • No, I wrote all the code myself
  • Yes, I used AI assistance (continue below)

Explain your implementation approach:

I started by reading app/config.py and app/services/llm_client.py to 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 existing integrations-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

  • I have added proper PR title and linked to the issue
  • I have performed a self-review of my code
  • I can explain the purpose of every function, class, and logic block I added
  • I understand why my changes work and have tested them thoroughly
  • I have considered potential edge cases and how my code handles them
  • If it is a core feature, I have added thorough tests
  • My code follows the project's style guidelines and conventions

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-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 4, 2026

Greptile Summary

This PR adds a new docs/llm-providers.mdx reference page and wires it into the Integrations nav. The per-provider env-var blocks and default model values are consistent with app/config.py for the providers that are covered. However, two fully-supported providers defined in LLMProvider and routed in _create_llm_client are missing entirely: requesty (an OpenAI-compatible gateway with its own API key, base URL, and X-Title header) and claude-code (a CLI-backed provider analogous to codex). The quick-reference table also claims "9 supported providers" when there are actually 11.

Confidence Score: 3/5

Docs-only change safe to merge after addressing the two missing providers; shipping as-is would leave requesty and claude-code undiscoverable.

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 requesty and claude-code provider sections and incorrect provider count.

Important Files Changed

Filename Overview
docs/llm-providers.mdx New LLM providers reference page; omits two fully-supported providers (requesty and claude-code) that exist in app/config.py, making the quick-reference table and provider count inaccurate.
docs/docs.json Adds "LLM providers" nav group under the Integrations tab pointing to the new llm-providers page; wiring is correct.

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
Loading

Reviews (1): Last reviewed commit: "docs: add LLM providers reference page" | Re-trigger Greptile

Comment thread docs/llm-providers.mdx
Comment on lines +14 to +22
| 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:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 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 own REQUESTY_API_KEY, REQUESTY_REASONING_MODEL / REQUESTY_TOOLCALL_MODEL env vars, base URL (https://router.requesty.ai/v1), a X-Title: OpenSRE header, and complete routing in _create_llm_client. It's treated as a peer of OpenRouter.
  • claude-code — a CLI-backed provider (alongside codex) registered in the CLI registry and explicitly listed in LLMSettings._normalize_provider's valid_providers tuple.

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.

Comment thread docs/llm-providers.mdx
Comment on lines +125 to +132
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
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.
@0xDevNinja
Copy link
Copy Markdown
Contributor Author

0xDevNinja commented May 4, 2026

Addressed all three findings in c6dcd9a:

  • P1: Added Requesty (OpenAI-compatible gateway at https://router.requesty.ai/v1 with X-Title: OpenSRE header) and Claude Code CLI provider sections, plus rows in the quick-reference table — now covers all 11 LLMProvider literals.
  • P2: Added MINIMAX_REASONING_MODEL / MINIMAX_TOOLCALL_MODEL per-slot overrides so the MiniMax block matches the pattern used for OpenRouter, Gemini, NVIDIA, and Requesty.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 4, 2026

All three fixes verified against app/config.py and c6dcd9a:

  • Requesty: REQUESTY_BASE_URL, REQUESTY_MODEL single-override, and per-slot REQUESTY_REASONING_MODEL/REQUESTY_TOOLCALL_MODEL — all match LLMSettings.from_env() exactly.
  • Claude Code: section correctly documents it as a CLI provider parallel to Codex, with CLAUDE_CODE_MODEL/CLAUDE_CODE_BIN (handled outside LLMSettings, in the CLI adapter).
  • MiniMax per-slot: MINIMAX_MODEL single-override + MINIMAX_REASONING_MODEL/MINIMAX_TOOLCALL_MODEL now match the from_env() pattern used by OpenRouter, Gemini, NVIDIA, and Requesty.

Quick-reference table now covers all 11 LLMProvider literals. Everything checks out — LGTM. ✅

Tip: You can customize Greptile's behavior for this repo with .greptile/rules.md and .greptile/config.json.

Copy link
Copy Markdown
Collaborator

@muddlebee muddlebee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@muddlebee muddlebee merged commit 81940b7 into Tracer-Cloud:main May 4, 2026
8 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

🍕 @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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] : add docs for LLM APIs/CLI supported

2 participants