Setup
Install NeMo Platform and start working with AI agents.
Prerequisites
- Python 3.11-3.14
- An API key from one of: NVIDIA Build, OpenAI, Anthropic, Google Gemini, or a local Ollama instance (no key needed)
- 16 GB available disk space and 8 GB RAM
- For the PyPI install:
pipin a Python environment - For the source checkout install: Git, GNU Make, uv, Node.js (≥22.18.0, <23) satisfying
web/package.json, and pnpm
Install
Choose the install path that matches what you want to do.
Install from PyPI
Use the PyPI package for the quickest local install. The all extra includes the SDK, CLI, platform services, and default first-party plugins:
On Python 3.14, prefix the install command with
PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 while the transitive litellm Rust
extension catches up to Python 3.14:
For SDK and CLI usage only, install the base package:
After installing nemo-platform[all] from PyPI, continue with nemo setup.
Install from source
Use the source checkout when you are contributing to NeMo Platform, editing local plugins, building Studio assets from source, or running development workflows:
The make bootstrap target creates the Python environment, syncs Python dependencies, builds Studio assets, and installs local plugins.
If Studio asset bootstrap fails, the API can still run but Studio is unavailable until the web bundle is built. Install Node.js with pnpm using pnpm env use --global 22.18.0, then rerun make bootstrap-studio from the repository root.
Verify the installation:
Set up the platform
The wizard walks through each stage:
- Start services — launches the platform locally
- Choose a provider — select your model provider and enter your API key
- Register the provider — connects the provider to the platform
- Discover models — finds available models from your provider
- Set a default model — pick the model to use by default
- Install skills — adds NeMo skills to detected coding agents (Cursor, Claude Code, Codex)
- Deploy agent — optionally deploys a demo calculator agent on the platform
Each stage is idempotent — you can re-run nemo setup at any time to add more providers or update your configuration.
Auth and OIDC source installs
nemo setup and nemo services run do not create authorization role bindings by themselves. If you enable auth in source config with auth.enabled: true and set auth.admin_email, run the platform seed task so the bootstrap IAM bindings exist.
For local single-process source runs, enable startup seeding before starting services:
You can set platform.seed_on_startup: true in platform config instead. If services are already running, wait for readiness and run the seed task manually from the repository root:
uv run nemo-platform run task --task nmp.platform_seed is equivalent. The seed task is idempotent. It creates the PlatformAdmin binding in the system workspace for auth.admin_email, the wildcard Editor binding for the default workspace, the wildcard Viewer binding for the system workspace, and the wildcard WorkspaceCreator binding for the system workspace. Without this step, OIDC login can succeed but admin operations may still return 403 Forbidden because the RBAC bindings are missing.
When setup completes, try chatting with the model you selected. Use the model name shown at the end of setup (or find it with nemo models list):
Demo agent
If you accepted Deploy agent during setup, a demo calculator agent is running on the platform. Try it out:
Coding agent skills
If you accepted Install skills during setup and use Cursor, Claude Code, or Codex, your coding agent now has NeMo skills. Ask it to:
- “Help me optimize my agent” — invokes the
nemo-agents-optimizeskill which analyzes deployed agents, compares models, suggests improvements - “Help me secure my agent” — invokes the
nemo-agents-secureskill which runs audit scans, adds guardrails, flags vulnerabilities - “Evaluate my model [model_name] for helpfulness of responses on the HuggingFace nvidia/HelpSteer2 dataset. Limit evaluation to 5 samples” — runs evaluation
- “Generate training data for [task]” — builds Data Designer configurations
Run nemo skills list to see which skills are installed for the current environment — the agent can only invoke what’s in that list.
Supported providers
Ollama requires no API key but must be running before nemo setup. Start it with ollama serve.
Non-interactive setup
For CI pipelines, scripts, or automated environments, use --auto. Set one provider environment variable — the first match wins.
Priority order: NEMO_DEFAULT_INFERENCE_KEY > NVIDIA_API_KEY > OPENAI_API_KEY > ANTHROPIC_API_KEY > GEMINI_API_KEY
Flags
Override the default model with NEMO_DEFAULT_MODEL:
Examples
What to explore next
Python SDK
The nemo-platform package includes a Python SDK. After running nemo setup, the simplest initialization uses your CLI context:
For scripts or CI where you want explicit control:
An asynchronous client is also available. See the SDK reference for details.
Troubleshooting
Platform won’t start
Check ~/.local/state/nmp/instances/<scope>/services.log in the directory where you ran nemo setup. The most common cause is port 8080 already in use.
Studio returns 404 or unavailable
Studio requires the FastAPI web assets built by make bootstrap-studio. If make bootstrap warned that Studio asset bootstrap did not complete, install Node.js with pnpm using pnpm env use --global 22.18.0, then rerun make bootstrap-studio and nemo services restart from the repository root.
No models discovered
The provider may still be syncing. Wait 30 seconds and run nemo models list. If still empty, verify your API key is valid and the provider endpoint is reachable.
”Platform not reachable” error
Start services explicitly:
Or start them in a separate terminal:
Re-running setup
nemo setup is idempotent. Existing secrets, providers, and agent deployments are detected and skipped. Run it again to add a second provider or re-attempt a stage that failed.
Managing services
Stopped instance directories cluttering ls --all
After stopping or crashing local services, stopped scope directories can remain under ~/.local/state/nmp/instances/<scope>/. Empty lock-only ghosts are cleaned automatically; directories with service logs stay until you remove them: