Using Nemotron 3 Nano Omni 30B on Chutes
Nemotron 3 Nano Omni is NVIDIA's multimodal reasoning model: it takes text, images, video, and audio in one request and returns text, with thinking mode and tool calling built in. On Chutes it runs inside a Trusted Execution Environment on the standard OpenAI-compatible gateway, so any OpenAI SDK works unmodified.
Overview
Released by NVIDIA in April 2026 under the NVIDIA Open Model License Agreement (commercial use permitted), Nemotron 3 Nano Omni unifies video+speech comprehension, visual Q&A, OCR and document intelligence, GUI understanding, and speech transcription. The language backbone is a 31B-parameter Mamba2-Transformer hybrid Mixture-of-Experts: 52 layers interleave Mamba2 state-space blocks with MoE MLP blocks (128 routed experts plus 1 shared, 6 active per token) and a small number of attention layers, so only about 3B parameters are active per token. Images are encoded by NVIDIA's C-RADIOv4-H vision encoder; audio goes through a Parakeet-style conformer encoder at 16 kHz. Reasoning is on by default, and per NVIDIA's model card the model is English-only.
Model specifications
| Property | Value |
|---|---|
| Parameters | 31B total (33.0B in safetensors including vision and audio encoders), ~3B active per token |
| Architecture | Mamba2-Transformer hybrid MoE, 52 layers, 128 routed + 1 shared experts, 6 experts/token |
| Context length | 131,072 tokens on this chute; upstream card supports up to 256K |
| Modalities | In: text, image, video, audio. Out: text |
| License | NVIDIA Open Model License Agreement |
| Precision | BF16 (as served on Chutes) |
| Release | April 2026 |
| Tool calling | Yes (qwen3_coder parser on this deployment) |
| Languages | English only (per model card) |
Quick start
The chute is on the shared OpenAI-compatible gateway. Base URL is https://llm.chutes.ai/v1 and the model field is Nemotron-3-Nano-Omni-30B-TEE.
curl -X POST "https://llm.chutes.ai/v1/chat/completions" \
-H "Authorization: Bearer $CHUTES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Nemotron-3-Nano-Omni-30B-TEE",
"messages": [{"role": "user", "content": "Summarize the key risks in this contract clause: ..."}],
"stream": false,
"max_tokens": 4096,
"temperature": 0.6
}'
import base64
import os
from openai import OpenAI
img_b64 = base64.b64encode(open("invoice.png", "rb").read()).decode()
client = OpenAI(base_url="https://llm.chutes.ai/v1", api_key=os.environ["CHUTES_API_KEY"])
resp = client.chat.completions.create(
model="Nemotron-3-Nano-Omni-30B-TEE",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "data:image/png;base64," + img_b64}},
{"type": "text", "text": "Extract every line item and total from this invoice."},
],
}],
max_tokens=4096,
temperature=0.6,
top_p=0.95,
)
print(resp.choices[0].message.content)
const resp = await fetch("https://llm.chutes.ai/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CHUTES_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "Nemotron-3-Nano-Omni-30B-TEE",
messages: [{ role: "user", content: "Hello!" }],
stream: false,
max_tokens: 1024,
temperature: 0.7,
}),
});
const data = await resp.json();
console.log(data.choices[0].message.content);
Video and audio inputs use the same content-array pattern with video_url and audio_url parts; base64 data URLs are accepted, and decoding (ffmpeg, librosa) happens inside the chute image.
Parameters and tuning
Chute defaults from the live endpoint: temperature 0.7, max_tokens 1024, seed 42, streaming available on both /v1/chat/completions and /v1/completions. NVIDIA's model card recommends different settings depending on mode:
| Mode | temperature | top_p | top_k | max_tokens |
|---|---|---|---|---|
| Thinking mode (default) | 0.6 | 0.95 | — | 20480 (16384 reasoning budget + grace) |
| Instruct mode | 0.2 | — | 1 | 1024 |
Two practical notes. First, raise max_tokens well above the 1024 default when reasoning is on, because thinking tokens count against the budget and long video/audio analyses will otherwise truncate. Second, reasoning can be disabled via the chat template's enable_thinking switch (see NVIDIA's docs); with it off, use the lower-temperature instruct settings for deterministic extraction tasks.
What it's best at
The model is built for enterprise multimodal Q&A where one model has to cover sight, sound, and text: summarizing meeting recordings from the video plus audio track, answering questions about charts and figures in long documents, OCR-heavy invoice and form extraction, transcription-style prompts over speech, and multimodal agents that also need function calling. The 131K context lets you combine long transcripts or documents with media in a single request, and ~3B active parameters keep per-token cost and latency low for the capability class.
It is not the right pick for non-English content (the card states English-only support), for generating images, audio, or video (output is text only), or for frontier-depth reasoning where a much larger dense or MoE model would win on hard problems.
How Chutes serves this model
This chute hosts the BF16 checkpoint via SGLang on a single RTX Pro 6000 with TEE enabled: prompts and outputs are processed inside attested confidential-compute hardware, a serving-level guarantee that does not change model behavior. Context is set to 131,072 tokens with a concurrency of 8. Reasoning output is parsed with the nemotron_3 parser and tool calls with qwen3_coder. Billing follows the standard Chutes per-token LLM model. See the model page, llms.txt, and openapi.json.
FAQ
What input types does Nemotron 3 Nano Omni accept on Chutes?
Text, images (image_url), video (video_url), and audio (audio_url), combined freely in one chat request using standard OpenAI-style content arrays. Output is always text, optionally with reasoning_content thinking blocks. The model card states language support is English only.
What is the context window?
This chute serves 131,072 tokens (SGLang --context-length). The upstream model supports up to 256K tokens per NVIDIA's model card, with max_position_embeddings of 262,144 in the config.
Does it support function calling and streaming?
Yes to both. Tool calls are parsed with the qwen3_coder parser and returned in the standard OpenAI tool_calls format, and both /v1/chat/completions and /v1/completions support streaming.
How do I call it from the OpenAI SDK?
Set base_url to https://llm.chutes.ai/v1, api_key to your Chutes API key, and model to Nemotron-3-Nano-Omni-30B-TEE. Everything else is standard chat completions, including multimodal content arrays.
What does the TEE suffix mean?
The model runs inside a Trusted Execution Environment: attested confidential-compute hardware that processes your prompts and outputs in an encrypted enclave. The model weights and behavior are unchanged; TEE is a serving-level security property.
How do I control or disable the reasoning mode?
Reasoning (thinking) is on by default and the deployment uses the nemotron_3 reasoning parser. You can disable it via the chat template's enable_thinking switch as documented in NVIDIA's model card. For reasoning tasks, NVIDIA recommends temperature 0.6, top_p 0.95, and a generous max_tokens (their thinking-mode budget is 20,480).
Can I use it commercially?
Yes. The model ships under the NVIDIA Open Model License Agreement and NVIDIA's card explicitly states it is available for commercial use. Review the license text on the Hugging Face repo for redistribution terms.
Why does the chute default to max_tokens 1024?
That is just the endpoint default. Because reasoning mode emits thinking tokens before the answer, set max_tokens much higher (NVIDIA's thinking-mode reference is 20,480 total) or long analyses will truncate.