How nvidia-nemo/labs-oo-agents works
NOOA is a Python framework for building model-agnostic agents whose typed Python objects combine state, prompts, deterministic methods, and LLM-driven capabilities. Its principal workflow is to define an agent method, assemble context and callable interfaces, let a strategy generate and execute code, and return a typed result. Runtime events, persistence, and tracing support that workflow. The repository also documents optional coding-agent, long-term memory, benchmark, evaluation, CLI, and trace-viewer products. Some subsystem paths are known from the tree, but unsampled integration wiring is not inferred.
Main entry points: agent.py Agent object · codeact.py Agent strategies · actor.py Execution runtime · event_manager.py Event manager
Components 26
Agent runtime
- Agent object
src/nooa/agent.py - Agent methods
src/nooa/method_llm.py - Context blocks
src/nooa/runtime/context_manager.py - Context builder
src/nooa/runtime/context_builder.py - Skills and tools
src/nooa/skill.py
Execution and models
- Agent strategies
src/nooa/strategies/codeact.py - Execution runtime
src/nooa/runtime/actor.py - Code sandbox
src/nooa/runtime/sandbox/executor.py - Code validation
src/nooa/runtime/code_validator.py - Unified LLM client
src/nooa/unifiedllm/unifiedllm.py
State and observability
- Event manager
src/nooa/runtime/event_manager.py - Event backend
src/nooa/runtime/event_backend.py - Agent persistence
src/nooa/storage/manager.py - SQLite storage
src/nooa/storage/sqlite.py - Tracing exporters
src/nooa/tracing/exporters.py
Product extensions
- Long-term memory
packages/nooa-memory/src/nooa_memory/manager.py - ACP coding adapter
packages/nooa-acp/src/nooa_acp/server.py - Benchmark runner
packages/nooa-bench/src/nooa_bench/runner.py - Evaluation pipeline
util/eval_pipeline/src/eval_pipeline/pipeline.py - CLI commands
packages/nooa-cli/src/nooa_cli/commands/traces.py - Trace viewer API
src/nooa/viewer/trace_routes.py - Evaluation viewer API
src/nooa/viewer/eval_routes.py - OTLP trace store
src/nooa/viewer/otlp_store.py - Trace and eval UI
src/nooa/viewer/frontend-react/src/App.tsx
Other components
- Agent developer
- Model provider
Connections 25
- Agent developer → Agent object: defines
- Agent object → Agent methods: exposes
- Agent methods → Agent strategies: dispatches
- Agent strategies → Context builder: builds context
- Context builder → Context blocks: resolves blocks
- Agent strategies → Skills and tools: uses interfaces
- Agent strategies → Unified LLM client: requests generation
- Unified LLM client → Model provider: sends requests
- Agent strategies → Execution runtime: runs agent turn
- Execution runtime → Code validation: checks generated code
- Execution runtime → Code sandbox: executes code
- Agent object → Event manager: owns events
- Event manager → Event backend: records events
- Agent object → Agent persistence: saves or restores
- Agent persistence → SQLite storage: persists state
- Event manager → Tracing exporters: exports telemetry
- Long-term memory → Agent object: installs hooks
- ACP coding adapter → Agent object: serves coding sessions
- Benchmark runner → Agent object: runs benchmarks
- Evaluation pipeline → Agent object: executes samples
- CLI commands → Trace viewer API: supports trace workflows
- Trace viewer API → OTLP trace store: reads and manages traces
- Evaluation viewer API → OTLP trace store: reads evaluation traces
- Trace and eval UI → Trace viewer API: requests trace data
- Trace and eval UI → Evaluation viewer API: requests eval data