Skip to content

Commit e59231a

Browse files
PicoNVIDIAclaudeericksoa
authored
feat(inference): add Nemotron 3 Nano Omni to CLOUD_MODEL_OPTIONS (#2628)
## Summary Adds `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning` (label: *Nemotron 3 Nano Omni 30B*) to the curated cloud model picker. Super 120B remains the default. ## Motivation The multimodal `hermes-omni-demo` cookbook in [brevdev/nemoclaw-demos](https://github.com/brevdev/nemoclaw-demos/tree/main/hermes-omni-demo) currently has to do a post-onboard `openshell inference set --model private/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning` to switch the gateway from Super to Omni, because the wizard only exposes Super. The current cookbook frames this as *"You picked Super 120B during onboarding because that's what the menu offers, but this cookbook needs Omni..."* — that workaround is awkward and reviewers in [brevdev/nemoclaw-demos#23](brevdev/nemoclaw-demos#23) have called it out as an abuse of the installer. Adding Omni here lets users select it during `nemoclaw onboard` directly and lets multimodal cookbooks drop the manual swap step entirely. ## Test plan - [ ] Existing `inference-config.test.ts` updated to include the new model id in the expected list — runs as part of `npm test` - [ ] `nemoclaw onboard --agent hermes` shows Omni as option in the model picker - [ ] Selecting it produces a sandbox with `Model: private/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning` in `nemoclaw <name> status` ## Files changed - `src/lib/inference-config.ts` — one new entry in `CLOUD_MODEL_OPTIONS` - `src/lib/inference-config.test.ts` — matching expected-list update 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * NVIDIA Nemotron 3 Nano Omni 30B added to cloud model selection for users to choose. * **Tests** * Automated tests updated to include the new cloud model option and to reflect adjusted selection ordering used in onboarding and default-model scenarios. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Aaron Erickson <aerickson@nvidia.com> --------- Signed-off-by: Patrick Moorhead <pmoorhead@nvidia.com> Signed-off-by: Aaron Erickson <aerickson@nvidia.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Aaron Erickson 🦞 <aerickson@nvidia.com>
1 parent c9a5ff8 commit e59231a

4 files changed

Lines changed: 6 additions & 4 deletions

File tree

src/lib/inference-config.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ describe("inference selection config", () => {
2222
it("exposes the curated cloud model picker options", () => {
2323
expect(CLOUD_MODEL_OPTIONS.map((option: { id: string }) => option.id)).toEqual([
2424
"nvidia/nemotron-3-super-120b-a12b",
25+
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",
2526
"z-ai/glm-5.1",
2627
"minimaxai/minimax-m2.7",
2728
"openai/gpt-oss-120b",

src/lib/inference-config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export const INFERENCE_ROUTE_URL = "https://inference.local/v1";
1212
export const DEFAULT_CLOUD_MODEL = "nvidia/nemotron-3-super-120b-a12b";
1313
export const CLOUD_MODEL_OPTIONS = [
1414
{ id: "nvidia/nemotron-3-super-120b-a12b", label: "Nemotron 3 Super 120B" },
15+
{ id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", label: "Nemotron 3 Nano Omni 30B" },
1516
{ id: "z-ai/glm-5.1", label: "GLM-5" },
1617
{ id: "minimaxai/minimax-m2.7", label: "MiniMax M2.7" },
1718
{ id: "openai/gpt-oss-120b", label: "GPT-OSS 120B" },

src/lib/model-prompts.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe("model prompt helpers", () => {
3232
});
3333

3434
it("returns DeepSeek V4 Pro from the default cloud model menu", async () => {
35-
const promptFn = promptSequence(["5"]);
35+
const promptFn = promptSequence(["6"]);
3636
const result = await promptCloudModel({
3737
promptFn,
3838
writeLine: vi.fn(),

test/onboard-selection.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ printf '%s' "$status"
320320
const credentials = require(${credentialsPath});
321321
const runner = require(${runnerPath});
322322
323-
const answers = ["1", "5"];
323+
const answers = ["1", "6"];
324324
const messages = [];
325325
326326
credentials.prompt = async (message) => {
@@ -421,7 +421,7 @@ printf '%s' "$status"
421421
const credentials = require(${credentialsPath});
422422
const runner = require(${runnerPath});
423423
424-
const answers = ["1", "6", "custom/provider-model"];
424+
const answers = ["1", "7", "custom/provider-model"];
425425
const messages = [];
426426
427427
credentials.prompt = async (message) => {
@@ -517,7 +517,7 @@ printf '%s' "$status"
517517
const credentials = require(${credentialsPath});
518518
const runner = require(${runnerPath});
519519
520-
const answers = ["1", "6", "bad/model", "z-ai/glm-5.1"];
520+
const answers = ["1", "7", "bad/model", "z-ai/glm-5.1"];
521521
const messages = [];
522522
523523
credentials.prompt = async (message) => {

0 commit comments

Comments
 (0)