
Your Agent Is Just a Python Class: NVIDIA's NOOA Collapses Tool Definitions, State, and Prompts Into One Object
Chris Harper
2 min read
Aug 9, 2026 · 12:07 UTC
NVIDIA's NOOA (open-sourced Aug 7, Apache 2.0) makes a Python class the entire agent — methods are tool calls, docstrings are prompts, and a ... method body hands execution to the LLM at runtime.
Most agent frameworks make you write tool schemas, register handlers, wire in a loop, and manage state separately. NOOA collapses all of that into one class. You write Python; the framework figures out the rest.
The core idea
| Python construct | NOOA meaning |
|---|---|
| Instance field | Agent state the LLM can read and update |
| Class/method docstring | System prompt or tool description |
Method body = ... | LLM executes this at runtime |
| Method body = real code | Always deterministic, never LLM-completed |
Models plug in via LiteLLM — Claude, OpenAI, local Ollama, and any vLLM endpoint all work without changing your class.
Quickstart
pip install nooa # v0.0.8, Apache 2.0, Python 3.12-3.13
from nooa import Agent
class FileOrganizer(Agent):
"""You are a file organization assistant."""
working_dir: str = "."
organized: list[str] = []
def list_files(self) -> list[str]:
"""List all files in the working directory."""
import os
return os.listdir(self.working_dir)
def move_file(self, filename: str, destination: str) -> str:
"""Move a file to a destination folder. Create the folder if needed."""
... # LLM decides when and how to call this
def summarize(self) -> str:
"""Summarize what was organized and why."""
... # LLM writes the summary
agent = FileOrganizer(working_dir="./src")
result = agent.run(
"Organize the Python files into subfolders by module.",
model="anthropic/claude-sonnet-4-6" # any LiteLLM model string
)
print(result)
Methods with ... bodies are completed by the LLM-driven loop — it decides when to call them, with what arguments, and in what order. Methods with real Python bodies always run deterministically. You mix both freely in one class, which means you can test, trace, and refactor agent behavior exactly like ordinary software.
Benchmark context
NVIDIA reports 82.2% on SWE-bench Verified and 86.8% on CyberGym L1 at roughly half the tokens of comparable open harnesses — attributed to NOOA's structured state reducing prompt bloat.
Status: research preview (alpha on PyPI) — not production-ready for critical paths, but the design is immediately useful for prototyping agents that behave like regular code.
Sources: NVIDIA NOOA on GitHub (Apache 2.0) · arXiv: NVIDIA-labs OO Agents · nooa on PyPI · NVIDIA AI Releases NOOA — MarkTechPost