NVIDIA / NVIDIA/NemoClaw

[Ubuntu 26.04][Onboard] Portable onboarding switches the provider to Ollama without telling you

Open
#11,718 0 comments 0 reactions 0 assignees View on GitHub
needs: triage NV QA
Dominant language
TypeScript
Stars
22.5k
Forks
3.1k
Avg merge
1d 1h
Merged PRs (30d)
715

Description

## Description

When the Portable experimental profile is selected, onboarding discards the inference provider the user asked for and uses local Ollama instead, without saying so. It keeps the model name the user supplied, then tries to pull that name from Ollama's registry.

The result is a combination the user never asked for: an NVIDIA cloud model name pulled from Ollama. The pull fails, and the message blames the model name and the registry, so the user is pointed at the wrong thing. Nothing in the output states that the provider was replaced.

The user has no way to make a different choice on this path. The Portable profile also forces non-interactive mode, so no provider menu is shown even on a real terminal, and the environment variable is ignored. Together these leave no mechanism to select a provider.

The override is also silent about invalid input. On the ordinary path an unsupported provider value is rejected with a clear error listing every valid value; on the Portable path the same unsupported value produces no error at all, because the value is replaced before it is checked.

- **Platform scope:** Reproduced on Ubuntu 26.04 x86_64 only; other platforms not tested.
- **Regression:** Unknown — earlier versions not tested for this path.
- **OpenShell issue:** No

## Environment

```text
Device: Ubuntu 26.04 host, x86_64, no GPU
OS: Ubuntu 26.04 LTS
Architecture: x86_64
Node.js: Not on PATH (installer-managed Node.js)
npm: Not on PATH (installer-managed Node.js)
Docker: Docker version 29.6.1, build 8900f1d
Podman: podman version 5.7.0
OpenShell CLI: openshell 0.0.106
NemoClaw: nemoclaw v0.0.123
OpenClaw: N/A (onboard not completed)
```

## Steps to Reproduce

1. On a host with NemoClaw installed and a valid NVIDIA API key exported as `NVIDIA_API_KEY`, start Portable onboarding while explicitly selecting a valid non-Ollama provider:

```bash
NEMOCLAW_PROVIDER=build \
NEMOCLAW_MODEL=nvidia/llama-3.3-nemotron-super-49b-v1 \
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE=1 \
nemoclaw onboard --experimental-profile portable --fresh --name provc2
```

2. Watch step `[3/8] Configuring inference provider` and read the provider it reports.

3. For contrast, run the same selection **without** the Portable profile, on its own gateway port and state directory so the two runs do not share state:

```bash
NEMOCLAW_PROVIDER=nvidia \
NEMOCLAW_GATEWAY_PORT=8191 \
NEMOCLAW_OPENSHELL_GATEWAY_STATE_DIR=$HOME/.local/state/nemoclaw/gw-armd \
nemoclaw onboard --fresh --non-interactive --yes-i-accept-third-party-software \
--name provd3
```

4. Compare how each path treats the supplied provider value.

5. To confirm the Portable path never offers a choice, run Portable onboarding from a real terminal without any acceptance variable set and observe whether a provider menu appears. Run the same command without the Portable profile as the control.

## Expected Result

Onboarding uses the provider the user selected, or, if the Portable profile genuinely supports only local Ollama, it says so plainly before doing any work and explains that the selected provider is not available on this path.

An unsupported provider value is rejected the same way on both paths.

The model name is not carried over into a provider the user did not choose.

## Actual Result

Step 1, with a **valid** provider value of `build` and an NVIDIA cloud model name, step `[3/8]` prints:

```text
[3/8] Configuring inference provider
──────────────────────────────────────────────────
[non-interactive] Provider: ollama
Verifying the configured Ollama systemd user can execute its binary and ELF interpreter...
✓ Using Ollama on localhost:11434 (proxy on :11435)
Pulling Ollama model 'nvidia/llama-3.3-nemotron-super-49b-v1' (size unknown).
Error: pull model manifest: file does not exist
Failed to pull Ollama model 'nvidia/llama-3.3-nemotron-super-49b-v1'. Check the model name
and that Ollama can access the registry, then try another model.
[non-interactive] Aborting: Ollama model 'nvidia/llama-3.3-nemotron-super-49b-v1' unavailable.
```

The provider became `ollama` although `build` was requested. The user's model name was kept and sent to Ollama's registry, which cannot have it. The failure message asks the user to check the model name and the registry, neither of which is the actual problem, and never mentions that the provider was changed.

A separate Portable run with an unsupported provider value produced no complaint about the value at all. The review block simply showed:

```text
Review configuration
──────────────────────────────────────────────────
Provider: ollama-local
Model: qwen3-vl:4b
```

Step 3, the same unsupported value **without** the Portable profile, is rejected properly:

```text
[3/8] Configuring inference provider
Unsupported NEMOCLAW_PROVIDER: nvidia
Valid values: build, openrouter, openai, anthropic, anthropicCompatible, gemini,
hermes-provider, ollama, llama-cpp, install-llama-cpp, custom, nim-local, vllm, routed,
install-vllm, install-ollama, install-windows-ollama, start-windows-ollama
```

So the ordinary path validates the value and the Portable path silently discards it.

Step 5 confirms there is no interactive alternative. Without the Portable profile and without an acceptance variable, onboarding stops and asks for a terminal:

```text
Interactive onboarding requires a TTY. Re-run in a terminal or use --non-interactive with
--yes-i-accept-third-party-software.
```

With the Portable profile, on a real terminal (verified interactive), onboarding never prompts and proceeds straight through non-interactively. A control run on the same terminal without the Portable profile did present the acceptance prompt, so the terminal itself was interactive.

Taken together: no menu is offered, and the environment variable is discarded, so a Portable user cannot select any provider other than local Ollama.

## Logs

```text
Not captured beyond the terminal output quoted in Actual Result.
```

Contributor guide

Open the contributing guide

Research direction

Start with the `nemoclaw onboard --experimental-profile portable` entry point and compare its provider handling with ordinary onboarding using the commands in the reproduction steps. Trace where the Portable profile forces non-interactive mode and replaces or validates `NEMOCLAW_PROVIDER`. Done means Portable onboarding preserves a valid selection or clearly explains its Ollama-only restriction, rejects unsupported values, and does not reuse an incompatible model name.

Written by the indexing model from the issue text.

Assessment

Tech stack
ollama, typescript
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
66/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.