Releases: NVIDIA/NeMo-Agent-Toolkit
Releases · NVIDIA/NeMo-Agent-Toolkit
Release list
v1.8
What's Changed
🚀 Notable Features and Improvements
- Add Guardrails support
- Add Experimental coding-agent adapters with NeMo-Relay telemetry
- Add Microsoft Agent 365 integration plugin
- Add Windows WSL2 setup instructions
🚨 Breaking Changes
- Add NeMo Guardrails policy middleware by @ericevans-nv in #2006
- Remove integration package for RagaAI Catalyst by @dagardner-nv in #2013
- docs: Migrate Tavily search to provider-managed third-party plugin by @bbednarski9 in #2015
- fix(middleware): wire is_final enforcement with build-time validation and runtime call_next suppression by @ericevans-nv in #2070
✨ New Features
- feat(a365): add Microsoft Agent 365 integration plugins by @afourniernv in #1571
- experimental(agent): Add experimental coding-agent adapters with NeMo-Relay telemetry by @yczhang-nv in #1995
🔧 Improvements
- Generate a list of NIM models used in workflow YAML files in
pre-commitby @dagardner-nv in #1982 - Fix running
pytestfrom the root of the repo by @dagardner-nv in #2000 - Bump langchain NVIDIA endpoints dependency by @freshyjmp in #2002
- chore: Update dependencies by @dagardner-nv in #2022
- chore: bump nat-ui submodule to f4926a2 by @ericevans-nv in #2031
- fix(hitl): improve por_to_jiratickets example by @ericevans-nv in #2032
- Update ATIF Eval notebooks to install NAT from pypi by @dagardner-nv in #2035
- chore: Remove DBNL appears to have gone away by @dagardner-nv in #2043
- chore: Update to latest commit in NAT-UI main by @dagardner-nv in #2053
- chore: Update ADK version by @dagardner-nv in #2056
🐛 Bug Fixes
- fix(observability): Emit
OpenInferenceLLM cost lookup attributes for span exports by @yczhang-nv in #1988 - fix(tool_wrapper): Fix
LangChaintool input normalization for chat agent branches by @yczhang-nv in #1990 - fix(agent): Fix thinking metadata handling in agents by @yczhang-nv in #1992
- Fix and improve integration tests by @dagardner-nv in #1996
- fix(packaging): ship nat.plugin_api in nvidia-nat-core wheel by @bbednarski9 in #1997
- Fix HTTP 500 on human-in-the-loop pause for non-streaming FastAPI endpoints by @ericevans-nv in #1999
- Fix LangSmith integration tests by @dagardner-nv in #1998
- fix(agent): Fix ReWOO nested evidence placeholder substitution by @yczhang-nv in #2003
- docs: Fix vLLM serve command for Nemotron model in local LLMs guide by @zhongxuanwang-nv in #2007
- Subclass EmptyFunctionConfig, avoids name clash with other registered functions by @dagardner-nv in #2012
- fix(example): Fix
Agnopersonal finance workflow for Agno 2.x and switch to NIM by @yczhang-nv in #2016 - fix(auth): Fix protected
FastMCPOAuth token validation by @yczhang-nv in #2019 - fix: handle empty web ingest responses by @mnajafian-nv in #2021
- fix: update Dynamo latency demo compose path by @mnajafian-nv in #2020
- fix(fastapi): fix Generate endpoint for WebSocket non-streaming and HTTP streaming by @zhongxuanwang-nv in #2009
- fix(examples): Keep Haystack indexing chunks within NIM embedder token limit by @zhongxuanwang-nv in #2008
- fix: memmachine notebook by @dagardner-nv in #2041
- fix: improve Dynamo latency demo startup reliability by @mnajafian-nv in #2050
- fix: Delay deleting of environment directories when generating coverage files by @dagardner-nv in #2061
- fix: harden Dynamo latency demo against SGlang version drift and degenerate trie predictions by @bbednarski9 in #2067
- fix(dynamo): correct request-priority polarity for Dynamo >= 1.1.0 and mark integration as experimental by @bbednarski9 in #2076
📝 Documentation Updates
- Move Kaggle MCP example out of toolkit by @AnuradhaKaruppiah in #1972
- plugin docs: Stabilize the public plugin authoring API by @bbednarski9 in #1959
- docs: update Tavily examples to use function group by @lakshyaag-tavily in #2028
- docs: highlight third-party plugin contributors by @bbednarski9 in #2039
- Docs: add Redis third party package reference to release notes by @bbednarski9 in #2051
- docs: add Windows WSL2 setup section by @dagardner-nv in #2065
New Contributors
- @freshyjmp made their first contribution in #2002
- @lakshyaag-tavily made their first contribution in #2028
- @hemachandra666 made their first contribution in #2065
Full Changelog: v1.7.0...v1.8.0
v1.7.0
🚀 Notable Features and Improvements
- Add AI coding agent skills for NeMo Agent Toolkit
- Add consent-gated runtime telemetry for NeMo Agent Toolkit CLI commands
What's Changed
🚨 Breaking Changes
- chore: migrate openai dependency from 1.x to 2.x by @willkill07 in #1849
- chore: dependency cleanup - drops optuna chain and openinference from core by @bbednarski9 in #1902
- Remove the
nvidia-nat-vannaintegration package by @dagardner-nv in #1926
✨ New Features
- Add ATIF trajectory exporter for Phoenix visualization and debugging by @yczhang-nv in #1869
- Add Exa Search API support as internet search tool by @maxwbuckley in #1846
- Add OCI LangChain support for hosted Nemotron workflows by @fede-kamel in #1804
- ATOF v0.1: Agentic Trajectory Observability Format (aligned spec) by @bbednarski9 in #1890
- feat(cli): add consent-gated runtime telemetry for NAT CLI commands by @yczhang-nv in #1897
- feat(observability): Arize AX OTLP exporter, docs, and examples by @ryoung562 in #1898
- Feature: token streaming support for ReAct Agent by @thepatrickchin in #1851
🔧 Improvements
- Misc CI improvements by @dagardner-nv in #1866
- Misc CI improvements by @dagardner-nv in #1867
- Support client-id-only MCP OAuth2 and refine Outlook auth example config by @AnuradhaKaruppiah in #1885
- Misc test improvements and update model in the workflow template by @dagardner-nv in #1884
- Widen the version range for
starletteby @dagardner-nv in #1887 - Filter AIMessage state updates from streaming output by @MylesShannon in #1863
- Add optional
--client-idand--client-secretflags tonat mcp clientsub-commands by @dagardner-nv in #1891 - dependency fix: remove flask as a hard dependency of nat-core by @bbednarski9 in #1895
- dependency cleanup: move aioboto3, plotly, and wikipedia to dependent subpackages by @bbednarski9 in #1896
- fix(tool): stop leaking exception details in chat_completion error response by @ColinM-sys in #1876
- fix(example): Improve ADK-demo example with dynamic weather and time tools by @yczhang-nv in #1927
- chore: bump dependency versions by @willkill07 in #1931
- chore: bump dependency versions by @dagardner-nv in #1936
- chore: Replace
llama-3.2-nv-embedqa-1b-v2withllama-nemotron-embed-1b-v2by @dagardner-nv in #1937 - chore: set dependency version range for
azure-identityby @dagardner-nv in #1942 - Replace
llama-3.2-nv-rerankqa-1b-v2withllama-nemotron-rerank-1b-v2by @dagardner-nv in #1944 - Update older models by @dagardner-nv in #1960
- Adopt latest changes from NAT-UI by @dagardner-nv in #1963
- Update
model_health_check.pyto check for deprecation header by @dagardner-nv in #1974
🐛 Bug Fixes
- fix(memmachein): preserve conversation message order in
add_itemsby @fede-kamel in #1856 - Add an expiration time to cached MCP auth credentials by @dagardner-nv in #1872
- Fix
observability_evaluation_and_profilingexample notebook by @dagardner-nv in #1874 - Fix shutdown on Cntrl+c for
ci/scripts/run_tests.pyby @dagardner-nv in #1886 - fix: preserve tool_calls in _stream_llm for native tool calling by @getglad in #1864
- fix(mcp-client): set proper httpx timeouts for streamable-http transport by @yczhang-nv in #1889
- fix(front-end): Fix
HTTPInteractiveRunnerstreaming cleanup on client disconnect by @yczhang-nv in #1916 - fix(deps): update selected dependency floors by @mnajafian-nv in #1923
- fix(haystack): update urllib3 dependency floor by @mnajafian-nv in #1922
- fix(agno): update Agno dependency stack by @mnajafian-nv in #1919
- fix(fastmcp): update FastMCP to 3.2.4 by @mnajafian-nv in #1918
- Remove currency A2A example from release validation by @AnuradhaKaruppiah in #1924
- Update RL OpenPipe example by @dnandakumar-nv in #1925
- fix(Phoenix): Fix Phoenix telemetry API key support by @yczhang-nv in #1928
- fix(example): Fix
typing.Anyruntime checks in function conversion by @yczhang-nv in #1949 - Fix MCP schema model reuse for Kaggle tools by @AnuradhaKaruppiah in #1954
- fix(example): Fix auto-memory wrapper user ID lookup by @yczhang-nv in #1948
- fix(mcp): Fix MCP reconnect lifecycle after local server crash by @yczhang-nv in #1935
- Update LLM used in
simple_auth_mcpexample by @dagardner-nv in #1966 - fix(example): Fix
typing.Anyand string input handling in NAT LangChain tools by @yczhang-nv in #1965 - Fix auto memory recall scoping by @willkill07 in #1968
- fix: improve auto memory wrapper example and code by @willkill07 in #1976
- fix(server): emit canonical {"value": ...} envelope from /generate/full by @matthewgrossman in #1980
📝 Documentation Updates
- Update LLMs used in the profiler documentation by @dagardner-nv in #1904
- docs(memory): add Synap third-party memory plugin by @visy-ani in #1906
- Add AI coding agent skills for NAT by @yczhang-nv in #1921
- fix(skills): Fix skill-evolution routing for skill update decisions by @yczhang-nv in #1970
- Update the
Using Local LLMsdocumentation by @dagardner-nv in #1979
Other Changes
- Forward-merge release/1.6 into develop by @rapids-bot[bot] in #1857
- Forward-merge release/1.6 into develop by @rapids-bot[bot] in #1858
- Forward-merge release/1.6 into develop by @rapids-bot[bot] in #1860
- [RELEASE] NeMo-Agent-Toolkit v1.7.0 by @dagardner-nv in #1984
New Contributors
- @fede-kamel made their first contribution in #1856
- @maxwbuckley made their first contribution in #1846
- @getglad made their first contribution in #1864
- @ColinM-sys made their first contribution in #1876
- @visy-ani made their first contribution in #1906
- @ryoung562 made their first contribution in #1898
- @matthewgrossman made their first contribution in #1980
Full Changelog: v1.6.0...v1.7.0
v1.6.0
🚀 Notable Features and Improvements
- This release introduces ATIF-based evaluation, including a standalone evaluator class that can evaluate ATIF trajectories generated by any system
What's Changed
🚨 Breaking Changes
- NAT Eval Dependency Reduction by @AnuradhaKaruppiah in #1690
- Migrate nvidia_nat_ragas to Ragas v0.4 by @AnuradhaKaruppiah in #1780
- Add support for optionally disabling SSL/TLS verification by @dagardner-nv in #1640
- Add centralized user identity management and custom WebSocket authentication by @ericevans-nv in #1775
- Feat/optimizer package extraction by @bhuvan002 in #1637
- Decouple ATIF schemas from core and make nvidia-nat-eval lightweight by default by @AnuradhaKaruppiah in #1833
✨ New Features
- Add TimeoutMiddleware by @ericevans-nv in #1677
- feat(agent): stream tool call chunks by @MylesShannon in #1717
- Add ATIF adapter:
IntermediateStepto Harbor ATIF v1.6 trajectory conversion by @yczhang-nv in #1663 - feat(control_flow): add built-in parallel_executor with example by @antoniomtz in #1733
- Restore TimeoutMiddleware reverted by #1710 by @ericevans-nv in #1753
- Add ATIF-native evaluator interface and runtime dual-lane dispatch by @AnuradhaKaruppiah in #1747
- Add LLM error recovery, retry logic, and diagnostic logging to Tool Calling Agent by @ericevans-nv in #1757
- Add ATIF-only custom evaluator example and docs by @AnuradhaKaruppiah in #1766
- feat(profiler): ATIF-native profiler by @afourniernv in #1751
- Add pre-tool verifier defense middleware for input instruction violation detection by @lidan-capsule in #1605
- Add MemMachine memory integration for NeMo Agent toolkit by @Charlie-Yi-2002 in #1460
- Nested ATIF lineage by @AnuradhaKaruppiah in #1814
🔧 Improvements
- Forward-merge release/1.5 into develop by @willkill07 in #1676
- Add user attribution to Weave traces and feedback by @thepatrickchin in #1668
- Move eval callbacks to nvidia_nat_eval and guard core shim path by @AnuradhaKaruppiah in #1748
- Refactor eval file output into FileEvalCallback for Python API support by @yczhang-nv in #1743
- Add AtifBaseEvaluator for reusable concurrent ATIF custom evaluators by @AnuradhaKaruppiah in #1769
- Use nvidia-nat-eval from PyPI in the custom evaluator notebook by @AnuradhaKaruppiah in #1778
- chore(pre-commit): any
pyproject.tomlchanges should triggeruv lockchecks by @willkill07 in #1790 - Remove unneeded warning filter by @dagardner-nv in #1789
- Remove old/unused compatibility code by @dagardner-nv in #1794
- fix: handle Anthropic-style tool schemas in LangchainProfilerHandler by @cluster2600 in #1770
- Add ATIF-native evaluators for nvidia-nat-profiler runtime metrics by @afourniernv in #1791
- Update old CI variable names by @dagardner-nv in #1813
- Explicitly set
framework_wrappersfor LangChain tools by @dagardner-nv in #1820 - Report installed packages when testing built wheels by @dagardner-nv in #1821
- chore: pin LiteLLM to known good version by @willkill07 in #1823
- Ensure file paths are properly quoted in
gitutils.pyby @dagardner-nv in #1832 - Update
LICENSE-3rd-party.txtby @dagardner-nv in #1840 - Informational ATIF mapping docs and sample output colocation (no functional changes) by @AnuradhaKaruppiah in #1844
- fix: guard nim_langchain against ChatNVIDIA model lookup crash by @bbednarski9 in #1843
- Document that MemMachine integration is Experimental by @AnuradhaKaruppiah in #1854
- Restore profiler intermediate-step compatibility by rolling back selected ATIF-native changes by @AnuradhaKaruppiah in #1853
🐛 Bug Fixes
- Fix Simple Calculator MCP example to return consistent timezone results by @dagardner-nv in #1708
- fix: preserve nested Pydantic models when unpacking multi-arg functions by @MylesShannon in #1696
- Fix
_running_workflow_taskalways beingNonedue to method chaining by @AjayThorve in #1744 - Fix LoRA inference routing in OpenPipe ART cookbook by @aslanshi in #1662
- Add profiler callback to sequential executor for LLM observability by @thepatrickchin in #1786
- Enhance chat completion functionality to support OpenAI-style message history by @mdemoret-nv in #1674
- fix(crewai): CrewAI Profiler Handler logic
>=1.1.0by @willkill07 in #1803 - fix: add missing dependencies and repair logic for some tests by @willkill07 in #1815
- Fix urls in pypi markdown files by @dagardner-nv in #1828
- Fix default values for datetime fields in
JobInfoobjects by @dagardner-nv in #1829 - add targeted MCP OAuth2 diagnostics for redirect URI mismatches by @AnuradhaKaruppiah in #1830
- Ensure proper cancellation of in-flight workflow tasks by @thepatrickchin in #1819
- Ensure HTTP request attributes are propagated into eval and async requests by @dagardner-nv in #1838
- Update weave version to pickup fixes for tracing LangChain workflows by @dagardner-nv in #1841
- fix(middleware): improve pre-tool middleware guarding logic by @cparadis-nvidia in #1824
📝 Documentation Updates
- Add notebooks demonstrating standalone ATIF evaluation via Python API by @yczhang-nv in #1752
- Add notebook demonstrating end-to-end interoperability between third-party agent frameworks and the NeMo Agent toolkit evaluation harness by @yczhang-nv in #1799
- docs: add LangSmith to list of supported observability platforms by @abhisawa-Nvidia in #1825
- Fix license header in memmachine's README.md by @Charlie-Yi-2002 in #1831
- add memmachine into docs/ by @Charlie-Yi-2002 in #1839
- Document Otel endpoints for custom LangSmith deployments by @dagardner-nv in #1845
New Contributors
- @AjayThorve made their first contribution in #1744
- @cluster2600 made their first contribution in #1770
- @afourniernv made their first contribution in #1791
- @bhuvan002 made their first contribution in #1637
- @lidan-capsule made their first contribution in #1605
- @abhisawa-Nvidia made their first contribution in #1825
- @Charlie-Yi-2002 made their first contribution in #1460
- @cparadis-nvidia made their first contribution in #1824
Full Changelog: v1.5.0...v1.6.0
v1.4.3
What's Changed
🐛 Bug Fixes
- fix(release/1.4): specify explicit versions for the
nvidia-nat-allpackage by @dagardner-nv in #1801
Full Changelog: v1.4.2...v1.4.3
v1.4.2
What's Changed
🐛 Bug Fixes
- fix(release/1.4): specify explicit sub-package versions by @dagardner-nv in #1800
Full Changelog: v1.4.1...v1.4.2
v1.5.0
🚀 Notable Features and Improvements
- Dynamo Runtime Intelligence: Automatically infer per-request latency sensitivity from agent profiles and apply runtime hints for cache control, load-aware routing, and priority-aware serving.
- Agent Performance Primitives (APP): Introduce framework-agnostic performance primitives that accelerate graph-based agent frameworks such as LangChain, CrewAI, and Agno with parallel execution, speculative branching, and node-level priority routing.
- LangSmith Native Integration: Observe end-to-end agent execution with native LangSmith tracing, run evaluation experiments, compare outcomes, and manage prompt versions across development and production workflows.
- FastMCP Workflow Publishing: Publish NeMo Agent Toolkit workflows as MCP servers using the FastMCP runtime to simplify MCP-native deployment and integration.
Migration notice: 1.5.0 includes packaging and compatibility refactors (meta-package restructure, eval/profiling package split, and import-path updates). See the Migration Guide.
🚨 Breaking Changes
- Dynamic Inference Headers with Prediction Trie Integration by @dnandakumar-nv in #1483
- improvement(packaging): Packaging Restructure for libraries by @willkill07 in #1512
- fix: Langchain agents should reuse runnable config by @willkill07 in #1604
- Refactor: Split eval/profiler into optional nvidia-nat-eval package by @AnuradhaKaruppiah in #1599
- improvement: nvext.agent_hints and nvext.cache_control clean up by @bbednarski9 in #1648
✨ New Features
- Add evaluator feedback to GA optimizer by @dnandakumar-nv in #1442
- Add similarity scores and threshold filtering to Redis semantic search by @thepatrickchin in #1434
- Add end-to-end custom metadata propagation for observability by @ericevans-nv in #1480
- Expose MCP session ID and add custom headers support for session correlation by @yczhang-nv in #1500
- Preserve workflow state across WebSocket reconnections by @ericevans-nv in #1541
- feat(ci-scripts): utility scripts for license updates and SBOM by @willkill07 in #1548
- Add example of control flow composition with router agent and sequential executor by @thepatrickchin in #1550
- Add support for publishing a NeMo Agent Toolkit workflow as a MCP server via FastMCP3 by @AnuradhaKaruppiah in #1539
- Add dataset store registration and support by @dnandakumar-nv in #1576
- Allow for prompts to be stored in/loaded from files by @pastorsj in #1567
- feat(observability): Cross-Workflow Observability by @willkill07 in #1598
- FastAPI Frontend Refactor with HTTP HITL and OAuth Support by @willkill07 in #1603
- Add support for LangSmith evaluators by @mpenn in #1592
- Add automatic latency sensitivity inference by @dnandakumar-nv in #1618
- RAG Library Mode integration by @ericevans-nv in #1440
- feat: Add HuggingFace Inference API and Embedder providers by @bledden in #1570
- Integrate LangSmith Observability with Evaluation and Optimization by @pastorsj in #1593
- Add experimental nvidia-nat-app Agent Performance Primitives subpackage by @mpenn in #1636
- Add Dynamo Example for Latency Sensitivity Assignment by @dnandakumar-nv in #1634
- Revert unintended changes from PR #1704, preserve nat-ui submodule fix by @ericevans-nv in #1710
🔧 Improvements
- Restore version 1.5 on develop after forward merge by @mnajafian-nv in #1324
- Forward-merge release/1.4 into develop (conflict resolution) by @mnajafian-nv in #1394
- Add OAuth2-Protected MCP Calculator Example by @AnuradhaKaruppiah in #1403
- Forward-merge release/1.4 into develop by @mnajafian-nv in #1453
- Merge release/1.4 into develop by @willkill07 in #1459
- Add
use_native_tool_callingoption toReActagent by @yczhang-nv in #1476 - Add
raise_on_parsing_failureoption toReActagent by @yczhang-nv in #1477 - Enable per-user workflow support in nat eval by @ericevans-nv in #1503
- feat: make tavily internet search tool configurable by @cdgamarose-nv in #1518
- Update nat-ui submodule to latest main by @ericevans-nv in #1551
- chore(pre-commit): update versions in pre-commit; add root-level
uv.lockcheck by @willkill07 in #1553 - Add a new per-user MCP client tool list endpoint by @AnuradhaKaruppiah in #1561
- Add HTTP retry logic and error resilience for workflow evaluation by @ericevans-nv in #1563
- Fix workflow name regression introduced by custom OTEL span naming by @ericevans-nv in #1572
- Add Support for NVExt Annotations and Latency Sensitivity for Dynamo by @dnandakumar-nv in #1575
- chore(ci): add stale action for old Issues/PRs by @willkill07 in #1581
- Update dynamo headers to provide raw integer values by default by @dnandakumar-nv in #1583
- Resolve user ID from JWT or nat-session cookie by @AnuradhaKaruppiah in #1584
- Add support for Weave feedback comments by @thepatrickchin in #1586
- chore(llm-providers): Add env
OPENAI_BASE_URLforopenai; unify llm provider configs by @willkill07 in #1577 - HITL prompt timeouts and API error responses by @ericevans-nv in #1591
- Update nat-ui submodule to latest main by @ericevans-nv in #1594
- enh(sbom-licenses): refactor common code; enable multi-version diffs by @willkill07 in #1597
- Populate full connection attributes and payload for HTTP and WebSocket sessions by @ericevans-nv in #1602
- Refactor latency sensitivity to use integers instead of enums. by @dnandakumar-nv in #1601
- chore: update nat-ui submodule by @ericevans-nv in #1606
- Add cache pinning strategy for KV cache with TTL control by @dnandakumar-nv in #1609
- Add type converters for langgraph wrapper
nat serveendpoints by @ericevans-nv in #1610 - Add max_sensitivity for latency-based prioritization by @dnandakumar-nv in #1612
- feat(agent): add token-by-token streaming to tool_calling_agent by @MylesShannon in #1595
- chore(deps): upgrade uv.lock deps prior to release; relax dependencies by @willkill07 in #1621
- Allow running
pytestfrom project root by @dagardner-nv in #1622 - Fix warning messages emitted from
test_per_user_fastapi_integration.pyby @dagardner-nv in #1624 - feature: dynamo integration with nat profiler and prometheus/grafana dashboard by @bbednarski9 in #1486
- Remove
ci/release/update_toml_dep.pyscript by @dagardner-nv in #1646 - CI fix: exclude CHANGELOG.md from pre-commit checks by @bbednarski...
v1.4.1
What's Changed
🐛 Bug Fixes
- fix(serve): ensure a single event loop for python 3.11 by @willkill07 in #1558
📚 Documentation
- Document new
nat serveCLI flags by @dagardner-nv in #1562
Full Changelog: v1.4.0...v1.4.1
v1.4.0
🚀 Notable Features and Improvements
- LangGraph Agent Automatic Wrapper: Easily onboard existing LangGraph agents to NeMo Agent Toolkit. Use the automatic wrapper to access NeMo Agent Toolkit advanced features with very little modification of LangGraph agents.
- Automatic Reinforcement Learning (RL): Improve your agent quality by fine-tuning open LLMs to better understand your agent's workflows, tools, and prompts. Perform GRPO with OpenPipe ART or DPO with NeMo Customizer using NeMo Agent Toolkit built-in evaluation system as a verifier.
- Initial NVIDIA Dynamo Integration: Accelerate end-to-end deployment of agentic workflows with initial Dynamo support. Utilize the new agent-aware router to improve worker latency by predicting future agent behavior.
- A2A Support: Build teams of distributed agents using the A2A protocol.
- Safety and Security Engine: Strengthen safety and security workflows by simulating scenario-based attacks, profiling risk, running guardrail-ready evaluations, and applying defenses with red teaming. Validate defenses, profile risk, monitor behavior, and harden agents across any framework.
- Amazon Bedrock AgentCore and Strands Agents Support: Build agents using Strands Agents framework and deploy them securely on Amazon Bedrock AgentCore runtime.
- Microsoft AutoGen Support: Build agents using the Microsoft AutoGen framework.
- Per-User Functions: Use per-user functions for deferred instantiation, enabling per-user stateful functions, per-user resources, and other features.
🚨 Breaking Changes
- Update weave trace identifiers by @dagardner-nv in #1055
- feat: switch calculator functions to a single function group by @willkill07 in #954
- Use Pydantic
SecretStrfields for all sensitive values by @dagardner-nv in #1123 - Migrate Zep Cloud integration from v2 to v3 API by @jackaldenryan in #1122
- feat!(llm): exclude unset fields in model dump for all LLMs and Embedders by @willkill07 in #1143
- Documentation Restructure by @dagardner-nv in #1231
- Implement Per-User Function Instantiation by @yczhang-nv in #1206
- Remove
default_user_idfromGeneralConfigto prevent unsafe per-user workflow sharing by @yczhang-nv in #1282 - chore: update dependency package versions for 1.4 by @willkill07 in #1316
- improvement: change Function Group separator to
__by @willkill07 in #1328 - Refactor MCP Frontend: Move to nvidia-nat-mcp package by @AnuradhaKaruppiah in #1332
- chore: update
nvidia-nat-alland add documentation by @willkill07 in #1340
✨ New Features
- Add DBNL Telemetry Exporter by @dbnl-renaud in #1111
- Add default Phoenix session tracking support by @ericevans-nv in #1132
- Add support for workflow configuration inheritance by @thepatrickchin in #1152
- Add
Middlewareand native support forFunctionMiddlewarefor all functions by @dnandakumar-nv in #1130 - Add support for a customizable MCP service account auth provider by @AnuradhaKaruppiah in #1176
- Introduce vanna text2sql by @jiaxiangr in #974
- Strands integration by @ronjer30 in #1063
- NAT A2A Client & Server Support by @AnuradhaKaruppiah in #1147
- Introduce Finetuning Harness for In-Situ Reinforcement Learning of Agentic Workflows by @dnandakumar-nv in #1221
- Add Support for NeMo Customizer to Finetuning Harness by @dnandakumar-nv in #1241
- Register per-user
ReActagent by @yczhang-nv in #1274 - dynamo llm integration with examples, analysis, and custom predictive routers by @bbednarski9 in #1242
- Add a bridge between NAT and A2A auth mechanisms by @AnuradhaKaruppiah in #1232
- Migrate the a2a client implementation to per-user mode by @AnuradhaKaruppiah in #1281
- Add weave feedback integration for chat interactions by @thepatrickchin in #781
- Extend Middleware interface with pre/post invoke hooks and add DynamicFunctionMiddleware by @ericevans-nv in #1216
- Agent Safety And Security Engine by @ericevans-nv in #1262
- Microsoft Autogen Framework Integration [Synopsys] by @bbednarski9 in #1330
- Implement per-user resource usage monitoring endpoint by @yczhang-nv in #1280
- Add automatic wrappers for LangGraph Agents by @mdemoret-nv in #1322
- Make All CLI Commands Plugin-Discoverable by @AnuradhaKaruppiah in #1346
- feat: Add AutoMemoryWrapper agent for automatic memory management by @jackaldenryan in #1137
- Add health endpoint to FastAPI server by @antoniomtz in #1466
🔧 Improvements
- Add a configurable memory profiler for the MCP frontend by @AnuradhaKaruppiah in #961
- Optimize retry logic with memory management improvements by @dnandakumar-nv in #1014
- Refactor to make
model_namean optimizable field across LLMs by @dnandakumar-nv in #1020 - Added new agent and example utilizing the OpenAI Responses API by @dnandakumar-nv in #414
- Include input and output messages in weave observability traces by @thepatrickchin in #1050
- Allow attaching arbitrary attributes to Weave traces by @dagardner-nv in #1057
- feat: nat optimizer support for Optuna GridSearch by @bbednarski9 in #1076
- Lint fixes by @dagardner-nv in #1097
- Make the
run_workflowmethod a part of the core API by @dagardner-nv in #1098 - Support Redis password authentication by @dagardner-nv in #1110
- Update example notebook to use the
run_workflowfunction by @dagardner-nv in #1113 - Add E2E tests for Simple RAG Example by @dagardner-nv in #1114
- Add E2E test for ADK demo example by @dagardner-nv in #1115
- Cleanup E2E tests by @dagardner-nv in #1116
- Update password fields to use Pydantic
SecretStrtype by @dagardner-nv in #1118 - Update fastapi version by @AnuradhaKaruppiah in #1117
- Support custom MCP server implementations by @AnuradhaKaruppiah in #1087
- Add reference to NAT job_id in Weave evaluation attributes by @thepatrickchin in #1140
- Add evaluator reasoning to Weave score logs by @thepatrickchin in #1141
- Add E2E tests for notebook examples by @dagardner-nv in #1128
- Add E2E test for simple auth example by @dagardner-nv in https://github.com/NVIDIA/NeMo-Agent...
v1.3.1
What's Changed
✨ New Features
- feat: Add claude-sonnet-4.5 support by model-gating
top_pby @willkill07 in #1134 - Add support for arbitrary JSON body types in custom routes by @ericevans-nv in #1163
🐛 Bug Fixes
- bug: fix non json serializable objects in config by @bbednarski9 in #1112
- fix ADK demo multi-user session by @antoniomtz in #1120
- Fixes to detect optional parameters in tool conversion used by "nat mcp serve" by @willkill07 in #1133
- Async Chat fixes by @dagardner-nv in #1131
- Fix code concatenation issue with
code_execution_toolwhen using a Piston server by @dagardner-nv in #1154 - Fix documentation version switcher by @willkill07 in #1167
📝 Documentation Updates
- Misc Documentation Fixes by @dagardner-nv in #1136
- Document the need to install
nvidia-nat-testprior to usingToolTestRunnerby @dagardner-nv in #1150 - Update reasoning diagrams by @dagardner-nv in #1153
- Update Quick Start UI documentation by @ericevans-nv in #1156
- Add SECURITY.md document by @dagardner-nv in #1164
- docs: 1.3.1 changelog by @willkill07 in #1166
- Add
security-considerations.mddocument by @dagardner-nv in #1168
Other Changes
- [RELEASE] NeMo-Agent-Toolkit v1.3.1 by @willkill07 in #1169
New Contributors
- @antoniomtz made their first contribution in #1120
Full Changelog: v1.3.0...v1.3.1
v1.3.0
What's Changed
🚀 Notable Features and Improvements
- ADK Support: Supports Google Agent Development Kit (ADK). Adds tool calling, core observability, and LLM integration in this release.
- Control-Flow Agents: Sequential Executor (Linear Agent) and Router Agent now control flow patterns of tool calls and sub-agents.
- Function Groups: Packages multiple related functions together so they share configuration, context, and resources.
- Hyperparameter Agent Optimizer: Automates hyperparameter tuning and prompt engineering for workflows.
- Introductory Notebook Improvements: Reorganizes getting started notebooks and adds Open in Colab links.
- LLM Improvements
- Adds LiteLLM Provider
- Supports GPT-5 (
/chat/completionsendpoint only) - Adds Nemotron thinking configuration
- MCP Improvements
- Supports
streamable-http-sseis no longer the default transport type. - Supports initial authorization - Enables connecting to MCP servers that require authentication.
- Supports multiple MCP tools from a single configuration - Pulls in entire tool sets published by MCP servers or filters them based on user configuration.
- Enhances CLI utilities for MCP servers and clients - Improves the
nat mcpsub command for querying, calling, and listing tools.
- Supports
- Python 3.13 support
🚨 Breaking Changes
- Redis Configuration Changes in @willkill07 in #649
- MCP enhancements: improves server config and adds support for all transport types (stdio, streamable-http) by @AnuradhaKaruppiah in #718
- Move MCP client to a separate sub-package by @AnuradhaKaruppiah in #768
- Signature change for
BaseAgentby @yczhang-nv in #757 - Builtin GitHub tools switched to Function Groups by @willkill07 in #684
- Fix chat history support in tool_calling_agent by @gfreeman-nvidia in #837
- Change
nat mcpto a command group withserveandclientsubcommands by @zhongxuanwang-nv in #811 - Builder
get_*functions should be markedasyncby @willkill07 in #834 - MCP Client Auth Support (part-2) by @AnuradhaKaruppiah in #854
- ReWOO Agent Workflow Refactoring (Dependency DAG for async Executor). by @billxbf in #861
- Reduce phoenix dependencies by @willkill07 in #985
- Remove example with poor performance by @dagardner-nv in #1011
- Deprecate the
WeaveTelemetryExporter.entityfield by @dagardner-nv in #1016 - Syncing UI submodule to bring secure proxy server updates by @ericevans-nv in #1044
✨ New Features
- Add features
nat workflow createa versioned dependency anddataand symlinks folder by @zhongxuanwang-nv in #639 - Feature: Azure OpenAI LLM provider and client by @willkill07 in #643
- Timezone Support for
datetimeTool and Normalize Response Time Handling by @zhongxuanwang-nv in #660 - Feature: GPT-5 Support by @willkill07 in #664
- Customize Log Truncation in Config by @RohanAdwankar in #723
- feat: Support for Nemotron thinking configuration by @willkill07 in #717
- Track agent system prompt in config and add config to skip maintenance check by @hsin-c in #724
- Add
nvidia-nat-data-flywheelsubpackage with NeMo Data Flywheel integrations by @mpenn in #716 - Enhance
ProcessingExportersystem to support redaction of content in telemetry traces by @mpenn in #751 - feat: Python 3.13 support by @willkill07 in #761
- Add test LLM provider to support testing by @zhongxuanwang-nv in #764
- Support additional provider parameters in LLM and Embedder config by @YosiElias in #749
- Add return_direct option to tool_calling_agent for direct tool responses by @thepatrickchin in #775
- Enable MCP auth for NAT MCP clients by @AnuradhaKaruppiah in #752
- Add function group filtering by @willkill07 in #807
- Implement
Sequential Executortool by @yczhang-nv in #806 - Add a /debug route to NAT MCP frontend to expose MCP tools by @zhongxuanwang-nv in #813
- MCP OAuth2 Token Introspection Validator by @ericevans-nv in #809
- [Synopsys] Feature: Google ADK Integration by @saglave in #726
- Add a blueprint for Haystack Deep Research Agent by @oryx1729 in #461
- fix: re-add litellm after accidental removal by @willkill07 in #852
- Add
mcp/client/tool/listendpoint by @yczhang-nv in #853 - feat: LiteLLM support for LangChain/LangGraph, Agno, CrewAI, LlamaIndex by @willkill07 in #881
- Add configurable token storage to MCP auth by @yczhang-nv in #883
- feat: Improve the developer journey for example notebooks by @willkill07 in #912
- feat: Add .env loading support to NAT cli by @willkill07 in #952
- feat: make built-in agents input adaptable by @willkill07 in #959
- UI submodule update 1.3 by @ericevans-nv in #1002
- feat: switch to nemotron reasoning models by @willkill07 in #1036
🔧 Improvements
- Collapse the
docsdependency group into thedevdependencies group by @dagardner-nv in #591 - Forward-merge release/1.2 into develop by @dagardner-nv in #679
- Forward-merge release/1.2 into develop by @dagardner-nv in #690
- Weave: Group workflow traces under the parent evaluation call by @AnuradhaKaruppiah in #663
- Misc release script improvements by @dagardner-nv in #692
- Fix
pytestfixture deprecation warning by @willkill07 in #698 - Adopt ruff in CI by @dagardner-nv in #694
- Upload test results to codecov by @dagardner-nv in #699
- Add Coderabbit config by @dagardner-nv in #710
- Allow custom post-processing of EvalInput after the workflow is run by @AnuradhaKaruppiah in #701
- Adding a Needs Triage label to issues which are created externally by @mdemoret-nv in #700
- Add fixtures allowing e2e tests to be optionally skipped upon missing environment variables by @dagardner-nv in #720
- Enable running e2e tests for nightly CI by @dagardner-nv in #727
- Enable the forward merger plugin of the rapids ops bot by @dagardner-nv in #728
- Ensure error reporting and propagating in a consistent pattern by @yczhang-nv in #722
- Improve input normalization of
ReActagent by @yczhang-nv in #730 - Update version of numpy to be more recent by @zhongxuanwang-nv in #746
- chore: update LangChain and LangGraph versions by @Willki...