Skip to content

Commit 4870fd3

Browse files
committed
docs: add nvidia nim provider
1 parent 6c3796a commit 4870fd3

9 files changed

Lines changed: 182 additions & 10 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ git push origin v0.1.0
6767
## Providers & routing
6868

6969
RexOS supports multiple LLM providers via drivers:
70-
- `openai_compatible` (Ollama / DeepSeek / Kimi / Qwen / GLM / MiniMax / OpenAI-compatible gateways)
70+
- `openai_compatible` (Ollama / DeepSeek / Kimi / Qwen / GLM / MiniMax / NVIDIA NIM / OpenAI-compatible gateways)
7171
- `dashscope_native` (Alibaba DashScope Generation API / Qwen native)
7272
- `zhipu_native` (Zhipu GLM native auth/token handling)
7373
- `minimax_native` (MiniMax native `text/chatcompletion_v2` API)
@@ -103,4 +103,5 @@ Built-in presets include:
103103
- `qwen_native` / `qwen_native_cn` / `qwen_native_sg` (DashScope native API)
104104
- `glm` / `glm_native` (OpenAI-compatible / Zhipu native)
105105
- `minimax` / `minimax_native` (OpenAI-compatible / MiniMax native)
106+
- `nvidia` (OpenAI-compatible / NVIDIA NIM)
106107
- `minimax_anthropic` (Anthropic-compatible gateway)

README.zh-CN.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ git push origin v0.1.0
6767
## Providers 与路由
6868

6969
RexOS 通过多种 driver 支持多个 LLM Provider:
70-
- `openai_compatible`(Ollama / DeepSeek / Kimi / Qwen / GLM / MiniMax / 其它 OpenAI-compatible 网关)
70+
- `openai_compatible`(Ollama / DeepSeek / Kimi / Qwen / GLM / MiniMax / NVIDIA NIM / 其它 OpenAI-compatible 网关)
7171
- `dashscope_native`(阿里云 DashScope Generation API / Qwen 原生)
7272
- `zhipu_native`(智谱 GLM 原生:auth/token 处理)
7373
- `minimax_native`(MiniMax 原生 `text/chatcompletion_v2` API)
@@ -103,4 +103,5 @@ model = "default" # uses providers.<name>.default_model
103103
- `qwen_native` / `qwen_native_cn` / `qwen_native_sg`(DashScope 原生 API)
104104
- `glm` / `glm_native`(OpenAI-compatible / 智谱原生)
105105
- `minimax` / `minimax_native`(OpenAI-compatible / MiniMax 原生)
106+
- `nvidia`(OpenAI-compatible / NVIDIA NIM)
106107
- `minimax_anthropic`(Anthropic-compatible 网关)

docs-site/how-to/providers.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RexOS loads provider config from `~/.rexos/config.toml` and routes each task kin
77
After `rexos init`, your `~/.rexos/config.toml` already includes common providers and sensible defaults:
88

99
- Local: `ollama`
10-
- OpenAI-compatible: `deepseek`, `kimi` / `kimi_cn`, `qwen` / `qwen_cn` / `qwen_sg`, `glm`, `minimax`
10+
- OpenAI-compatible: `deepseek`, `kimi` / `kimi_cn`, `qwen` / `qwen_cn` / `qwen_sg`, `glm`, `minimax`, `nvidia`
1111
- Provider-native: `qwen_native*`, `glm_native`, `minimax_native`
1212
- Gateways: `minimax_anthropic`
1313
- First-party APIs: `anthropic`, `gemini`
@@ -71,6 +71,20 @@ provider = "minimax_native"
7171
model = "default"
7272
```
7373

74+
## Example: NVIDIA NIM (OpenAI-compatible)
75+
76+
```toml
77+
[providers.nvidia]
78+
kind = "openai_compatible"
79+
base_url = "https://integrate.api.nvidia.com/v1"
80+
api_key_env = "NVIDIA_API_KEY"
81+
default_model = "meta/llama-3.2-3b-instruct"
82+
83+
[router.coding]
84+
provider = "nvidia"
85+
model = "default"
86+
```
87+
7488
## Routing tips
7589

7690
- Use `model = "default"` to pick `providers.<name>.default_model`.
@@ -101,6 +115,7 @@ RexOS reads provider keys from the env var referenced by `api_key_env`.
101115
export DASHSCOPE_API_KEY="..."
102116
export ZHIPUAI_API_KEY="id.secret"
103117
export MINIMAX_API_KEY="..."
118+
export NVIDIA_API_KEY="..."
104119
```
105120

106121
=== "PowerShell (Windows)"
@@ -110,4 +125,5 @@ RexOS reads provider keys from the env var referenced by `api_key_env`.
110125
$env:DASHSCOPE_API_KEY = "..."
111126
$env:ZHIPUAI_API_KEY = "id.secret"
112127
$env:MINIMAX_API_KEY = "..."
128+
$env:NVIDIA_API_KEY = "..."
113129
```

docs-site/how-to/use-cases.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ provider = "ollama"
9595
model = "default"
9696
```
9797

98-
See `how-to/providers.md` for full provider examples (GLM/MiniMax native included).
98+
See `how-to/providers.md` for full provider examples (GLM/MiniMax native + NVIDIA NIM included).
9999

100100
---
101101

docs-site/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
[Use cases](how-to/use-cases.md){ .md-button }
1111

1212
<p class="rexos-muted">
13-
Develop locally with small models on Ollama, then switch routing to GLM / MiniMax / DeepSeek / Kimi / Qwen when you need more capability.
13+
Develop locally with small models on Ollama, then switch routing to GLM / MiniMax / DeepSeek / Kimi / Qwen / NVIDIA NIM when you need more capability.
1414
</p>
1515

1616
</div>
@@ -68,4 +68,4 @@ flowchart LR
6868

6969
- Learn the harness loop: `tutorials/harness-long-task.md`
7070
- Explore common recipes: `how-to/use-cases.md`
71-
- Switch providers (GLM/MiniMax native included): `how-to/providers.md`
71+
- Switch providers (GLM/MiniMax native + NVIDIA NIM included): `how-to/providers.md`

docs-site/zh/how-to/providers.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RexOS 从 `~/.rexos/config.toml` 读取 providers 配置,并把每个任务类
77
执行 `rexos init` 后,`~/.rexos/config.toml` 默认已经包含常用 providers(可直接改路由使用):
88

99
- 本地:`ollama`
10-
- OpenAI-compatible:`deepseek``kimi` / `kimi_cn``qwen` / `qwen_cn` / `qwen_sg``glm``minimax`
10+
- OpenAI-compatible:`deepseek``kimi` / `kimi_cn``qwen` / `qwen_cn` / `qwen_sg``glm``minimax``nvidia`
1111
- Provider-native:`qwen_native*``glm_native``minimax_native`
1212
- 网关:`minimax_anthropic`
1313
- 官方 API:`anthropic``gemini`
@@ -71,6 +71,20 @@ provider = "minimax_native"
7171
model = "default"
7272
```
7373

74+
## 示例:NVIDIA NIM(OpenAI 兼容)
75+
76+
```toml
77+
[providers.nvidia]
78+
kind = "openai_compatible"
79+
base_url = "https://integrate.api.nvidia.com/v1"
80+
api_key_env = "NVIDIA_API_KEY"
81+
default_model = "meta/llama-3.2-3b-instruct"
82+
83+
[router.coding]
84+
provider = "nvidia"
85+
model = "default"
86+
```
87+
7488
## 路由建议
7589

7690
- 研发调试:优先用 `ollama`(小模型先跑通逻辑)
@@ -103,6 +117,7 @@ RexOS 会从 `api_key_env` 指定的环境变量读取 key。
103117
export DASHSCOPE_API_KEY="..."
104118
export ZHIPUAI_API_KEY="id.secret"
105119
export MINIMAX_API_KEY="..."
120+
export NVIDIA_API_KEY="..."
106121
```
107122

108123
=== "PowerShell (Windows)"
@@ -112,4 +127,5 @@ RexOS 会从 `api_key_env` 指定的环境变量读取 key。
112127
$env:DASHSCOPE_API_KEY = "..."
113128
$env:ZHIPUAI_API_KEY = "id.secret"
114129
$env:MINIMAX_API_KEY = "..."
130+
$env:NVIDIA_API_KEY = "..."
115131
```

docs-site/zh/how-to/use-cases.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ provider = "ollama"
9595
model = "default"
9696
```
9797

98-
完整 provider 示例见:`how-to/providers.md`(包含 GLM/MiniMax 原生 API)。
98+
完整 provider 示例见:`how-to/providers.md`(包含 GLM/MiniMax 原生 API 与 NVIDIA NIM)。
9999

100100
---
101101

docs-site/zh/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
[常见场景](how-to/use-cases.md){ .md-button }
1313

1414
<p class="rexos-muted">
15-
研发调试阶段用 Ollama 小模型先跑通逻辑;需要更强能力时,把路由切到 GLM / MiniMax / DeepSeek / Kimi / Qwen。
15+
研发调试阶段用 Ollama 小模型先跑通逻辑;需要更强能力时,把路由切到 GLM / MiniMax / DeepSeek / Kimi / Qwen / NVIDIA NIM
1616
</p>
1717

1818
</div>
@@ -70,4 +70,4 @@ flowchart LR
7070

7171
- Harness 长任务教程:`tutorials/harness-long-task.md`
7272
- 常见场景与配方:`how-to/use-cases.md`
73-
- Provider 切换与原生 API:`how-to/providers.md`
73+
- Provider 切换与原生 API(含 NVIDIA NIM)`how-to/providers.md`
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# NVIDIA NIM Provider Preset Implementation Plan
2+
3+
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
4+
5+
**Goal:** Add an out-of-the-box NVIDIA NIM provider preset (OpenAI-compatible) and document how to use it.
6+
7+
**Architecture:** Treat NVIDIA NIM as `openai_compatible` (Chat Completions). Add a `providers.nvidia` preset in the default `~/.rexos/config.toml` generation, plus docs examples and env var setup.
8+
9+
**Tech Stack:** Rust (Cargo workspace), `reqwest` (OpenAI-compatible client), MkDocs Material + `mkdocs-static-i18n` docs site.
10+
11+
---
12+
13+
### Task 1: Add a failing test for the NVIDIA preset
14+
15+
**Files:**
16+
- Modify: `meos/crates/rexos-kernel/src/config.rs`
17+
- Test: `meos/crates/rexos-kernel/src/config.rs`
18+
19+
**Step 1: Write the failing test**
20+
21+
Add one assertion to `default_config_serializes()`:
22+
23+
```rust
24+
assert!(toml_str.contains("[providers.nvidia]"));
25+
```
26+
27+
**Step 2: Run test to verify it fails**
28+
29+
Run:
30+
31+
```bash
32+
cargo test -p rexos-kernel default_config_serializes
33+
```
34+
35+
Expected: FAIL because the default config doesn’t include `providers.nvidia` yet.
36+
37+
---
38+
39+
### Task 2: Add a failing preset sanity test (base URL)
40+
41+
**Files:**
42+
- Modify: `meos/crates/rexos-kernel/src/config.rs`
43+
- Test: `meos/crates/rexos-kernel/src/config.rs`
44+
45+
**Step 1: Write the failing test**
46+
47+
Add:
48+
49+
```rust
50+
#[test]
51+
fn nvidia_preset_uses_nim_base_url() {
52+
let cfg = RexosConfig::default();
53+
let nvidia = cfg.providers.get("nvidia").unwrap();
54+
assert_eq!(nvidia.base_url, "https://integrate.api.nvidia.com/v1");
55+
}
56+
```
57+
58+
**Step 2: Run test to verify it fails**
59+
60+
Run:
61+
62+
```bash
63+
cargo test -p rexos-kernel nvidia_preset_uses_nim_base_url
64+
```
65+
66+
Expected: FAIL until the `nvidia` preset exists.
67+
68+
---
69+
70+
### Task 3: Implement the NVIDIA preset in default config
71+
72+
**Files:**
73+
- Modify: `meos/crates/rexos-kernel/src/config.rs`
74+
- Test: `meos/crates/rexos-kernel/src/config.rs`
75+
76+
**Step 1: Write minimal implementation**
77+
78+
In `RexosConfig::default()`, insert:
79+
80+
```rust
81+
providers.insert(
82+
"nvidia".to_string(),
83+
ProviderConfig {
84+
kind: ProviderKind::OpenAiCompatible,
85+
base_url: "https://integrate.api.nvidia.com/v1".to_string(),
86+
api_key_env: "NVIDIA_API_KEY".to_string(),
87+
default_model: "meta/llama-3.2-3b-instruct".to_string(),
88+
},
89+
);
90+
```
91+
92+
**Step 2: Run tests to verify they pass**
93+
94+
Run:
95+
96+
```bash
97+
cargo test -p rexos-kernel default_config_serializes
98+
cargo test -p rexos-kernel nvidia_preset_uses_nim_base_url
99+
```
100+
101+
Expected: PASS.
102+
103+
---
104+
105+
### Task 4: Update docs (English + Chinese)
106+
107+
**Files:**
108+
- Modify: `meos/docs-site/how-to/providers.md`
109+
- Modify: `meos/docs-site/zh/how-to/providers.md`
110+
- Modify: `meos/docs-site/index.md`
111+
- Modify: `meos/docs-site/zh/index.md`
112+
- Modify: `meos/README.md`
113+
- Modify: `meos/README.zh-CN.md`
114+
115+
**Step 1: Add preset mention**
116+
117+
Add `nvidia` to the built-in presets list.
118+
119+
**Step 2: Add a provider example**
120+
121+
Add a new section “Example: NVIDIA NIM” with:
122+
- `base_url = "https://integrate.api.nvidia.com/v1"`
123+
- `api_key_env = "NVIDIA_API_KEY"`
124+
- `default_model = "meta/llama-3.2-3b-instruct"`
125+
126+
**Step 3: Add env var instructions**
127+
128+
Add `NVIDIA_API_KEY` to the API key lists (Bash + PowerShell).
129+
130+
**Step 4: Validate docs build**
131+
132+
Run:
133+
134+
```bash
135+
python3 -m mkdocs build --strict
136+
```
137+
138+
Expected: success.

0 commit comments

Comments
 (0)