CloudCodeTree LogoCloudCodeTree
AI NewsTutorialsAbout
CloudCodeTree Logo
CloudCodeTree
  • AI News
  • Tutorials
  • About
← Back to AI News
Your Agent Is Just a Python Class: NVIDIA's NOOA Collapses Tool Definitions, State, and Prompts Into One Object

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

AI
Workflow
Agents
Developer Tools

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 constructNOOA meaning
Instance fieldAgent state the LLM can read and update
Class/method docstringSystem prompt or tool description
Method body = ...LLM executes this at runtime
Method body = real codeAlways 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