# NVIDIA-labs Object Oriented Agents (NOOA)

> A model-agnostic Python framework for building AI agents as typed Python classes where methods, docstrings and type annotations define behavior.

NVIDIA-labs Object Oriented Agents (NOOA) is a model-agnostic Python framework from NVIDIA for building AI agents as ordinary Python classes. State, capabilities, prompts and typed interfaces are expressed in a single class. The repository's latest listed release is v0.0.10, and the project is released under Apache 2.0.

## What It Is

NOOA is an agent development framework that offers an object-oriented alternative to frameworks that treat prompts, tools, callbacks and workflows as separate abstractions. An agent is a Python object: fields hold typed state, methods are capabilities, docstrings act as prompts, and type annotations serve as contracts. The project describes itself as research software.

## How Agents Work

- A method with a `...` body becomes a generation method that an LLM-driven strategy implements at runtime. A method with a real body remains deterministic Python.
- The model acts by writing Python in a Jupyter-style REPL with access to `self`, imports and helpers. Python methods and type annotations supply the callable interfaces, reducing the need for separate tool-schema definitions.
- Typed input and output come with auto-retry, live-object arguments are passed by reference, and model-callable context and event APIs are provided.
- Every LLM call, code execution and method invocation is traced by default, with parent-child spans preserved. A trace viewer runs locally through the `nooa start-dev` command.

## Setup Path

The core package installs with uv or pip (`nooa`). Models are selected through a client registry that works with LiteLLM-supported hosted or local models, with examples for Anthropic, OpenAI, Ollama and vLLM. Optional packages add a CLI with 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. Notebook tutorials, an examples catalog, a framework tour and a paper with SWE-bench Verified and Terminal-Bench 2.0 results accompany the repository.

## Safety Considerations

Agents can be configured to execute LLM-generated code. NOOA applies AST checks and module deny-lists, but the README states these are defense-in-depth guardrails, not a containment boundary. It recommends running such agents inside OS-level isolation like a container, VM or NVIDIA OpenShell.

## Features
- Agents defined as Python classes with typed state and methods
- LLM-driven generation methods using `...` bodies
- Code-as-action execution in a Jupyter-style REPL
- Typed input/output with auto-retry
- Live-object arguments passed by reference
- Default tracing with local trace viewer
- Model-agnostic via LiteLLM-supported models
- Optional CLI, ACP, memory and benchmark packages
- Notebook tutorials and examples catalog

## Integrations
LiteLLM, Anthropic, OpenAI, Ollama, vLLM, Agent Client Protocol, Zed, NVIDIA OpenShell, MCP

## Platforms
WEB, API, DEVELOPER_SDK, CLI

## Pricing
Open Source

## Version
v0.0.10

## Links
- Website: https://github.com/NVIDIA-NeMo/labs-OO-Agents
- Documentation: https://github.com/NVIDIA-NeMo/labs-OO-Agents/blob/main/docs/README.md
- Repository: https://github.com/NVIDIA-NeMo/labs-OO-Agents
- EveryDev.ai: https://www.everydev.ai/tools/nooa
