[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"readme:labs-oo-agents":3},"\u003Cdiv align=\"center\">\u003Cbr \u002F>\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002FNVIDIA-NeMo\u002Flabs-OO-Agents\u002Fmain\u002Fassets\u002Fnvidia-labs-object-oriented-agents-dark.svg\">\u003C\u002Fsource>\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002FNVIDIA-NeMo\u002Flabs-OO-Agents\u002Fmain\u002Fassets\u002Fnvidia-labs-object-oriented-agents-light.svg\">\u003C\u002Fsource>\n  \u003Cimg alt=\"NVIDIA-labs Object Oriented Agents\" src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FNVIDIA-NeMo\u002Flabs-OO-Agents\u002Fmain\u002Fassets\u002Fnvidia-labs-object-oriented-agents-light.svg\" width=\"820\" \u002F>\n\u003C\u002Fpicture>\u003Cp align=\"center\">\u003Cb>A Pythonic way to build AI agents.\u003C\u002Fb>\u003C\u002Fp>\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.nvidia.com\u002F\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNVIDIA-76B900?logo=nvidia&amp;logoColor=white\" alt=\"NVIDIA\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2607.20709\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpaper-arXiv-b31b1b?logo=arxiv&amp;logoColor=white\" alt=\"Paper\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdeveloper.nvidia.com\u002Fblog\u002Fsix-agent-harness-capabilities-for-higher-model-performance\u002F\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fblog-NVIDIA-76B900?logo=nvidia&amp;logoColor=white\" alt=\"Blog\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002Flabs-OO-Agents\u002Fblob\u002Fmain\u002FLICENSE\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue\" alt=\"License\" \u002F>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002Flabs-OO-Agents\u002Fblob\u002Fmain\u002Fdocs\u002FREADME.md\" rel=\"nofollow ugc noopener\">Docs\u003C\u002Fa>\u003C\u002Fstrong>  ·  \u003Cstrong>\u003Ca href=\"#quick-start\" rel=\"nofollow ugc noopener\">Quick Start\u003C\u002Fa>\u003C\u002Fstrong>  ·  \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002Flabs-OO-Agents\u002Fblob\u002Fmain\u002Fnotebook_tutorials\u002FREADME.md\" rel=\"nofollow ugc noopener\">Notebook Tutorials\u003C\u002Fa>\u003C\u002Fstrong>  ·  \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA-NeMo\u002Flabs-OO-Agents\u002Fblob\u002Fmain\u002Fexamples\u002FREADME.md\" rel=\"nofollow ugc noopener\">Examples\u003C\u002Fa>\u003C\u002Fstrong>  ·  \u003Cstrong>\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2607.20709\" rel=\"nofollow ugc noopener\">Paper\u003C\u002Fa>\u003C\u002Fstrong>  ·  \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fdeveloper.nvidia.com\u002Fblog\u002Fsix-agent-harness-capabilities-for-higher-model-performance\u002F\" rel=\"nofollow ugc noopener\">Blog\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cbr \u002F>\u003C\u002Fdiv>\u003Cp>NVIDIA-labs Object Oriented Agents (NOOA) is a model-agnostic Python framework designed to support reliable AI agent development. Many agent frameworks represent prompts, tools, callbacks, and workflows as separate abstractions. NOOA offers an alternative object-oriented interface that brings these concepts together in a Python class. NOOA lets developers express an agent’s state, capabilities, prompts, and typed interfaces through a single Python class:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-python\">from nooa import Agent\n\n# The agent is a Python object.\nclass SupportAgent(Agent):\n    \"\"\"You are a support agent.\"\"\"\n\n    # State lives on the object. Fields are typed.\n    order_db: OrderDB\n\n    # Ordinary method. Just Python.\n    def is_refund_eligible(self, order: Order) -&gt; bool:\n        return order.delivered and order.days_since_delivery &lt;= 30\n\n    # Agentic method: the runtime hands this to an LLM.\n    async def triage(self, message: str, order: Order) -&gt; Ticket:\n        \"\"\"Create a typed support ticket.\"\"\"\n        ...\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>What's happening here:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Agents are Python objects.\u003C\u002Fstrong> Fields are state, methods are capabilities, docstrings are prompts, type annotations are contracts.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>...\u003C\u002Fcode> bodies are LLM-driven.\u003C\u002Fstrong> A method with \u003Ccode>...\u003C\u002Fcode> becomes an agentic loop; a real body stays deterministic Python.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Code as action.\u003C\u002Fstrong> The model acts by writing Python in a Jupyter-style REPL with access to \u003Ccode>self\u003C\u002Fcode>, imports, and helpers — Python methods and type annotations supply the callable interfaces, reducing the need to write separate tool-schema definitions.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Pythonic and agent-ready.\u003C\u002Fstrong> Typed I\u002FO with auto-retry, live-object arguments passed by reference, and model-callable context and event APIs — designed around agent-oriented Python workflows.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This design supports familiar Python testing, tracing, refactoring, and version-control workflows — \u003Cstrong>just like the rest of your software\u003C\u002Fstrong>. Read \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2607.20709\" rel=\"nofollow ugc noopener\">the paper\u003C\u002Fa> for the design principles and evaluation results.\u003C\u002Fp>\n\u003Cp>Want to see how th\u003C\u002Fp>\n",1787581366779]