fix: use nvcr.io/nim/nvidia/nemotron-3-nano for NIM local pull (Fixes #66) - #81
Conversation
|
Thanks for updating the image tag and ensuring that it uses the correct one, this should resolve any issues with pulling the image. |
|
Hey @deepujain! Thanks for putting this together — fixing the NIM local pull image reference is a useful fix. Since this was opened, we've been moving pretty fast on the repo: new CI checks, a bunch of new features, and some structural changes. Would you mind rebasing onto the latest main when you get a chance? That way we can give it a fresh review with everything up to date. Appreciate the contribution! |
da43780 to
14abd40
Compare
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (2)
📝 WalkthroughWalkthroughUpdated the Docker image reference for the Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Rebased on latest main, no conflicts. Tests pass. Thanks for the nudge @cv |
The image nvcr.io/nim/nvidia/nemotron-3-nano-30b-a3b:latest returns Access Denied from nvcr.io. The published image that works is nvcr.io/nim/nvidia/nemotron-3-nano:latest (model id remains nvidia/nemotron-3-nano-30b-a3b for API compatibility). Fixes NVIDIA#66 Signed-off-by: Deepak Jain <deepujain@gmail.com>
14abd40 to
193ede3
Compare
|
Rebased on latest main, resolved test conflict (upstream vitest migration + image fix). All NIM tests pass. Ready to merge! |
…A#81) The image nvcr.io/nim/nvidia/nemotron-3-nano-30b-a3b:latest returns Access Denied from nvcr.io. The published image that works is nvcr.io/nim/nvidia/nemotron-3-nano:latest (model id remains nvidia/nemotron-3-nano-30b-a3b for API compatibility). Fixes NVIDIA#66 Signed-off-by: Deepak Jain <deepujain@gmail.com>
…A#81) The image nvcr.io/nim/nvidia/nemotron-3-nano-30b-a3b:latest returns Access Denied from nvcr.io. The published image that works is nvcr.io/nim/nvidia/nemotron-3-nano:latest (model id remains nvidia/nemotron-3-nano-30b-a3b for API compatibility). Fixes NVIDIA#66 Signed-off-by: Deepak Jain <deepujain@gmail.com>
…A#81) The image nvcr.io/nim/nvidia/nemotron-3-nano-30b-a3b:latest returns Access Denied from nvcr.io. The published image that works is nvcr.io/nim/nvidia/nemotron-3-nano:latest (model id remains nvidia/nemotron-3-nano-30b-a3b for API compatibility). Fixes NVIDIA#66 Signed-off-by: Deepak Jain <deepujain@gmail.com>
…odel (!56) > **🏗️ build-from-issue-agent** Closes NVIDIA#81 ## Summary The proxy was forwarding the client's original `model` field in the request body unchanged to the backend, causing backends to reject requests for models they don't serve. Now `proxy_to_backend()` always sets the `"model"` field in the JSON body to the route's configured model before forwarding. This covers all 4 supported inference protocols (openai_chat_completions, openai_completions, openai_responses, anthropic_messages). ## Changes Made - `crates/navigator-router/src/backend.rs`: Added JSON body model override — parses the body and always sets `"model"` to `route.model` (replaces if present, inserts if absent). Non-JSON bodies pass through unchanged. - `crates/navigator-router/tests/backend_integration.rs`: Added 2 integration tests using wiremock's `body_partial_json` matcher ## Deviations from Plan Minor improvement: the plan specified only replacing `"model"` when already present. Changed to always set it, since all inference protocols require the field and omitting it would cause backend rejection. ## Tests Added - **Unit:** N/A - **Integration:** `proxy_overrides_model_in_request_body` and `proxy_inserts_model_when_absent_from_body` in `crates/navigator-router/tests/backend_integration.rs` - **E2E:** N/A ## Documentation Updated - `architecture/sandbox.md`: Updated proxy forwarding description to include model ID rewriting - `architecture/inference-routing.md`: Updated backend.rs description, sequence diagram, and backend proxying steps ## Verification - [x] All tests passing - [x] Pre-commit checks passing (clippy, fmt) - [x] Architecture documentation updated
* feat(tui): add port forwarding support to Gator (NVIDIA#80) Extract forward PID management, resolve_ssh_gateway, and shell_escape from navigator-cli into navigator-core::forward as a shared module. Add a Ports field to the TUI create sandbox modal, a NOTES column to the sandbox table, and a Forwards row to the sandbox detail view. On creation with ports, Gator polls for Ready state then spawns background SSH tunnels. Forward cleanup runs automatically on sandbox delete. Closes NVIDIA#80 * fix(tui): fix Ports field invisible due to modal height overflow The modal height calculation used content_height + 3 but block chrome (borders + padding) is 4 rows, not 3. Combined with the 3-row Ports field layout, the input line was clipped to zero height on standard 24-row terminals. Switch Ports to a compact single-line inline layout and fix the chrome arithmetic. * wip: BYOC example with port forwarding and TUI command field fix - Move examples/bring-your-own-container.md into its own directory - Add example Dockerfile and app.py (Python REST API with /hello endpoint) - Rewrite README with full CLI and TUI port-forward workflows - Change TUI Command field default from /bin/bash to empty so custom image entrypoints run without manual clearing * feat(tui): wire up Command field to SSH exec after sandbox creation When a command is specified in the create sandbox modal, the TUI now waits for the sandbox to reach Ready (with the pacman animation), starts any port forwards, then suspends the TUI and executes the command via SSH — matching the CLI's post-creation flow. - Refactor spawn_create_sandbox to poll for Ready inline when ports or command are set, keeping the animation visible throughout - Add start_port_forwards() helper called within the create task - Add handle_exec_command() to suspend TUI and run SSH exec - Remove unused ForwardResult event variant (forwards are now started within the create task, not as a separate event) * fix(tui): fix command exec, forward timeouts, and create modal UX - Fix handle_exec_command to suspend TUI and run SSH attached (matching CLI behavior) so the process stays alive for the session duration - Fix shell_escape double-quoting: escape each word individually - Add ConnectTimeout and 20s spawn timeout to forward SSH so a stalled auth doesn't freeze the create flow forever - Remove dead ForwardResult event variant - Add cluster_name to start_port_forwards for ProxyCommand - Add spacer between Providers and Ports in create modal - Fix Command placeholder: 'runs /bin/bash if empty' (not image entrypoint) - Update BYOC README: document that CMD is replaced by supervisor, command must be passed explicitly, remove TUI-specific sections * fix(sandbox): demote Landlock fallback log from warn to debug The Landlock filesystem sandbox emits a noisy warning when a policy path does not exist (e.g. /app in custom images). Since BestEffort mode intentionally continues without Landlock, demote to debug. * docs: fix BYOC Dockerfile comments for supervisor CMD override --------- Co-authored-by: John Myers <johntmyers@users.noreply.github.com>
…A#81) The image nvcr.io/nim/nvidia/nemotron-3-nano-30b-a3b:latest returns Access Denied from nvcr.io. The published image that works is nvcr.io/nim/nvidia/nemotron-3-nano:latest (model id remains nvidia/nemotron-3-nano-30b-a3b for API compatibility). Fixes NVIDIA#66 Signed-off-by: Deepak Jain <deepujain@gmail.com>
Summary
Fixes #66. Local NIM onboarding was failing when selecting the Nemotron 3 Nano 30B model because
docker pull nvcr.io/nim/nvidia/nemotron-3-nano-30b-a3b:latestreturns Access Denied from nvcr.io. The image that is actually published and pullable isnvcr.io/nim/nvidia/nemotron-3-nano:latest.Changes
nvidia/nemotron-3-nano-30b-a3bto imagenvcr.io/nim/nvidia/nemotron-3-nano:latestinstead ofnvcr.io/nim/nvidia/nemotron-3-nano-30b-a3b:latest.getImageForModelexpectation to the new image.The model identifier (
nvidia/nemotron-3-nano-30b-a3b) is unchanged so API/config compatibility is preserved; only the Docker image used for the local NIM container is corrected.Testing
npm test(includinggetImageForModeland nim suite) passes.Signed-off-by: Deepak Jain deepujain@gmail.com
Summary by CodeRabbit
Chores
Tests