AI/TLDR

NOOA (NVIDIA Object Oriented Agents)

NVIDIA's Python agent framework where an agent is a class and a method body of `...` becomes an LLM loop

Agent Frameworks & BuildersOpen source
Updated
27 Jul 2026
Language
Python
License
Apache-2.0
$uv init my-agent-project

What's new

27 Jul 2026

NOOA was among the code NVIDIA published when it launched the Open Secure AI Alliance with more than fifty founding partners, including Microsoft, IBM, Red Hat, CrowdStrike and Hugging Face.

Overview

NVIDIA-labs Object Oriented Agents (NOOA) is a model-agnostic Python framework for building agents, published by NVIDIA under Apache-2.0 with an accompanying arXiv paper. Its argument is that most agent frameworks scatter prompts, tools, callbacks and workflows across separate abstractions, and that a plain Python class can hold all of them at once.

So in NOOA an agent is a class. Its fields are state and are typed. Its docstring is the system prompt. Ordinary methods with real bodies stay deterministic Python. A method whose body is `...` becomes an agentic loop: the runtime hands it to an LLM, and the type annotations act as the contract for what comes back, with automatic retry on typed I/O. The model acts by writing Python in a Jupyter-style REPL that has access to `self`, imports and helpers — so the methods and type annotations you already wrote supply the callable interfaces, and separate tool-schema definitions are largely unnecessary.

The practical consequence is that an agent is an ordinary software object: you can test it, trace it, refactor it and diff it with the tools you already use. The core `nooa` package installs on its own; a CLI with a trace viewer and eval runner, an Agent Client Protocol coding agent for hosts such as Zed, a long-term memory subsystem and a benchmark runner ship as separate distributions or extras. The repository also carries a documented ten-minute tour, notebook tutorials and examples, and an evaluation pipeline installable straight from the repo.

What it does

  • Agents are Python classes: typed fields are state, methods are capabilities, docstrings are prompts, annotations are contracts
  • A method body of `...` becomes an LLM-driven agentic loop; a real body stays deterministic Python in the same class
  • Code-as-action — the model writes Python in a Jupyter-style REPL with access to `self`, imports and helpers, so tool schemas are mostly redundant
  • Typed I/O with automatic retry, live objects passed by reference, and model-callable context and event APIs
  • Optional sub-packages: `nooa-cli` (command, trace viewer, eval runner), `nooa-acp` (Agent Client Protocol coding agent), `nooa-memory`, `nooa-bench`
  • Model-agnostic, Apache-2.0, with a published paper on the design and evaluation

Getting started

NOOA is a normal Python package. The commands below are from the repository's installation section; the class sketch is the README's own example.

Add the core framework

With uv, or with pip if you prefer.

bashbash
uv init my-agent-project
cd my-agent-project

uv add nooa
# or: pip install nooa

Write an agent as a class

State is fields, prompts are docstrings, and the `...` body is what the runtime hands to a model.

pythonpython
from nooa import Agent

class SupportAgent(Agent):
    """You are a support agent."""

    order_db: OrderDB

    def is_refund_eligible(self, order: Order) -> bool:
        return order.delivered and order.days_since_delivery <= 30

    async def triage(self, message: str, order: Order) -> Ticket:
        """Create a typed support ticket."""
        ...

Add the pieces you need

The CLI, ACP host integration, memory and benchmark packages are separate distributions, or extras of the core package.

bashbash
uv add nooa-cli                 # or: uv add "nooa[cli]"
uv add nooa-acp                 # or: uv add "nooa[acp]"
uv add nooa-memory              # or: uv add "nooa[memory]"
uv add "nooa[cli,memory]"       # several at once

Take the tour

The repository's docs/tour.md walks from one thinking method through tools, typed contracts, deterministic orchestration and object composition; notebook tutorials and examples live alongside it, and the paper covers the design principles and evaluation.

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Building agents you can unit-test, refactor and code-review like the rest of your Python
  • Mixing deterministic logic and model-driven steps inside one object instead of splitting them across a graph
  • Getting typed, retried outputs out of an agent without hand-writing tool schemas
  • Running a coding agent inside an Agent Client Protocol host such as Zed via `nooa-acp`

How NOOA (NVIDIA Object Oriented Agents) compares

NOOA (NVIDIA Object Oriented Agents) alongside other open-source agent frameworks & builders tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
DeepSeek Harness★ 215kDeepSeek AI's open-source agent harness (dsh), built on Cordis, where models, tools, skills, sessions, sandboxes, storage and the UI are all plugins composed through profiles.
AutoGPT★ 187kOne of the earliest autonomous agent projects, now a platform for building and running agents from reusable blocks and workflows.
DeerFlow★ 81.9kByteDance's open-source super agent harness built on LangGraph: skills, sub-agents, sandboxes, a filesystem and long-term memory for long-horizon research, coding and content tasks.
nanobot★ 47.9kLightweight self-hosted personal AI agent framework in Python, with a WebUI, terminal and chat-app channels, tools, long-term memory, MCP and scheduled automations.
Agno★ 42.1kA fast Python framework (formerly Phidata) for building agents with memory, tools, and multimodal inputs, plus a runtime for deploying them in production.
LangGraph★ 41.2kA library from the LangChain team for building stateful, graph-based agent workflows with explicit control over steps, memory, and human-in-the-loop checkpoints.
AgentGPT★ 36.3kAgentGPT lets you name a custom AI, give it a goal, and watch it plan tasks, run them, and learn from the results, all from a web browser.
NOOA (NVIDIA Object Oriented Agents)★ 2kNVIDIA's Python agent framework where an agent is a class and a method body of `...` becomes an LLM loop