Skip to content

Add NVIDIA NeMo Agent Toolkit — Research Assistant example#436

Open
GeoSegun wants to merge 11 commits into
mainfrom
nemo-agent-toolkit
Open

Add NVIDIA NeMo Agent Toolkit — Research Assistant example#436
GeoSegun wants to merge 11 commits into
mainfrom
nemo-agent-toolkit

Conversation

@GeoSegun
Copy link
Copy Markdown
Member

@GeoSegun GeoSegun commented May 18, 2026

Summary

This PR adds a new Saturn Cloud workspace template for the NVIDIA NeMo Agent Toolkit (nvidia-nat), demonstrating how to build and run a highly scalable AI research agent on Saturn Cloud using NVIDIA NIM cloud inference.

The template is fully hardware-flexible, running out-of-the-box on standard, low-cost CPU instances (since heavy inference is handled in the NIM cloud) while being completely optimized and ready to run on GPU instances for developers looking to scale their workflows.

What the template does

The agent uses the ReAct (Reason + Act) pattern: given any question, it searches Wikipedia, reasons step-by-step about the results, and returns a structured answer. Every reasoning step is visible in the output, making it an excellent showcase of observability and step-by-step reasoning in agentic workflows.

Files added

File Purpose
.saturn/saturn.json Workspace recipe — default CPU Large (easily scaleable to GPU), 10Gi disk, NVIDIA_API_KEY env var, 1-hour auto-shutoff, port 8000 route for Gradio UI
workflow.yml NeMo Agent Toolkit config — wiki_search tool, nvidia/nemotron-3-nano-30b-a3b via NIM, react_agent workflow
start.sh Saturn Cloud start_script — creates .venv, installs nvidia-nat + LangChain + Gradio, applies two stability patches, runs a demo query
app.py Gradio chat UI — single-process Python web interface on port 8000, works natively with Saturn Cloud port routing
test.sh Smoke tests — Python version, nat CLI, workflow.yml, API key format, live NVIDIA API connectivity
.env.example Documents the one required variable: NVIDIA_API_KEY=nvapi-...
README.md Full user-facing docs following the Saturn examples style

Design decisions

  • CPU & GPU Native — The agent loop and Gradio interface are highly lightweight and run beautifully on standard CPU instances without requiring a local GPU (since inference is offloaded to the NVIDIA NIM cloud). However, it is fully compatible with Saturn Cloud GPU instances if users wish to run high-throughput orchestration or transition to local on-premise model execution.
  • Gradio Chat UI instead of nat serve — The toolkit's built-in UI requires a separate Node.js frontend which is complex to route in cloud environments. Our Gradio interface runs as a single, clean Python process on port 8000 and binds to 0.0.0.0, meaning Saturn's port routing works instantly out of the box.
  • Two Upstream Patches applied at install time in start.sh:
    1. Wikipedia User-Agent — sets SaturnCloudResearchBot/1.0 to avoid rate-limiting blocks.
    2. Plugin loader traceback — cleans up the console output by logging optional plugin integration ImportErrors under DEBUG instead of displaying raw stack traces.
  • Port 8000 Route pre-configured in the recipe so the Gradio UI is immediately accessible from workspace settings.

Prerequisites for users

A free NVIDIA NIM API key from build.nvidia.com — set as NVIDIA_API_KEY in the workspace environment variables.

Test plan

  • Deployed workspace via Saturn Cloud plugin — start script completed in ~3 minutes.
  • Tested on both CPU and GPU instances to confirm complete cross-compatibility.
  • Demo query ran and successfully returned structured research output.
  • Gradio chat UI (python app.py) accessible via port 8000 route.
  • nat run terminal queries work independently of the chat UI.
  • CI validation passes.
  • Add entry to templates-hosted.json when promoting to the template gallery.

Olusegun Durojaye added 11 commits May 17, 2026 23:25
CPU-only workspace template using nvidia-nat and NVIDIA NIM cloud
inference. ReAct agent with Wikipedia search; bring-your-own NVIDIA_API_KEY.
nvidia-nat-opentelemetry 1.6.0 requires this package but it was not
being installed, causing a dependency conflict warning on startup.
Exposes the NeMo Agent Toolkit chat UI (nat serve) via a dedicated
Saturn Cloud route on port 8000. Documents --host 0.0.0.0 flag
required for Saturn's proxy to reach the server.
Replaces nat serve with a Gradio-based chatbot that runs on port 8000,
binds to 0.0.0.0, and works natively with Saturn Cloud's port routing.
Gradio is installed as part of start.sh setup.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant