Skip to content

Latest commit

 

History

History
1326 lines (1278 loc) · 155 KB

File metadata and controls

1326 lines (1278 loc) · 155 KB

Changelog

All notable changes to this project will be documented in this file.

[1.5.0] - 2026-03-11

🚀 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.

What's Changed

🚨 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_calling option to ReAct agent by @yczhang-nv in #1476
  • Add raise_on_parsing_failure option to ReAct agent 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.lock check 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_URL for openai ; 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 serve endpoints 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 pytest from project root by @dagardner-nv in #1622
  • Fix warning messages emitted from test_per_user_fastapi_integration.py by @dagardner-nv in #1624
  • feature: dynamo integration with nat profiler and prometheus/grafana dashboard by @bbednarski9 in #1486
  • Remove ci/release/update_toml_dep.py script by @dagardner-nv in #1646
  • CI fix: exclude CHANGELOG.md from pre-commit checks by @bbednarski9 in #1653
  • Remove NASSE naming by @ericevans-nv in #1632
  • chore: remove all unnecessary docker deployment guides from examples by @willkill07 in #1655
  • Remove Profiler Agent Example from the Primary Toolkit Repo by @AnuradhaKaruppiah in #1656
  • improvement: nvext.cache_control warning and HiCache for SgLang images by @bbednarski9 in #1658
  • Fix multi_frameworks example UnboundLocalError and upgrade default LLM by @ericevans-nv in #1661
  • Fixes and improvements for tests by @dagardner-nv in #1659
  • improvement(logging): add file logging mode option by @willkill07 in #1651
  • Refactor defense and red teaming middleware with pre/post invoke hooks by @ericevans-nv in #1671
  • Add a server-side override for the A2A Agent Card URL by @AnuradhaKaruppiah in #1673
  • Fix Mem0 metadata validation error and improve auto_memory_wrapper example by @ericevans-nv in #1683
  • Add an optional proxy server to map model names for integration testing by @dagardner-nv in #1679
  • chore(deps): bump package versions by @willkill07 in #1682
  • Fix DynamicFunctionMiddleware builder patching regression by @ericevans-nv in #1691
  • Fix incorrect CLI flag in auto_memory_wrapper README by @ericevans-nv in #1692
  • Add E2E test for Tool Calling Responses API Agent by @dagardner-nv in #1726
  • Fix Milvus connection failures in RAG integration tests by @ericevans-nv in #1724
  • feat: add NIM model endpoint health check by @mnajafian-nv in #1716
  • feat: add embedder inference check and Slack reporting for model health by @mnajafian-nv in #1736
  • Update container tag for the nginx-rewrite-models service by @dagardner-nv in #1740
  • Improve the text file ingest E2E test by @dagardner-nv in #1759
  • Update uv.lock files by @dagardner-nv in #1762
  • Improves FastMCP dev experience and docs by @AnuradhaKaruppiah in #1773
  • Observability user experiences fixes by @dnandakumar-nv in #1760

🐛 Bug Fixes

  • fix: bump NAT version to 1.5 for packages that were added under release/1.4 by @willkill07 in #1399
  • Fix MCP tool validation for nullable optional fields by @AnuradhaKaruppiah in #1507
  • fix(serve): ensure a single event loop for python 3.11 by @willkill07 in #1528
  • fix: flaky batching processor test by @willkill07 in #1529
  • fix(ci): coverage reports should only be for nat code and examples by @willkill07 in #1536
  • fix(ci): Fix build_wheels and slack notifications for nightlies by @willkill07 in #1537
  • fix(tests): add required deps for some e2e tests; get notebook tests working by @willkill07 in #1538
  • Forward-merge release/1.4 into develop by @willkill07 in #1552
  • Use relative paths for symlink creation in workflow create command by @thepatrickchin in #1557
  • fix(milvus): Fix vector_field config mapping and document_id type by @rmalani-nv in #1555
  • Refactor span attribute serialization to use JSON strings by @dnandakumar-nv in #1574
  • fix(ci): ensure packaging works in GitLab CI by @willkill07 in #1582
  • Fix FastMCP example E2E tests by @AnuradhaKaruppiah in #1580
  • fix(gitlab-ci): ensure gitlab artifact upload is configured correctly by @willkill07 in #1588
  • fix(ci): ensure stale action has required permissions by @willkill07 in #1589
  • fix(mcp): Cache enum classes to prevent validation errors by @bledden in #1564
  • fix(tests): prepare for OpenAI endpoint for nightlies; fix failing tests by @willkill07 in #1596
  • Refactor call index tracking for prefix predictions by @dnandakumar-nv in #1608
  • Fix failures after nvidia-nat-eval isolation by @willkill07 in #1615
  • fix(mcp-client): ensure tools are only invoked when available by @willkill07 in #1616
  • fix: update openpipe-art accuracy reward logic by @aslanshi in #1623
  • fix: Preserve custom dataset fields in workflow output by @bledden in #1628
  • fix: Skip output directory cleanup when --skip_workflow is set by @bledden in #1627
  • fix: Pass request_timeout through to OpenAI/Azure LLM clients by @bledden in #1626
  • fix: Filter empty LLM responses from ReAct retry scratchpad by @bledden in #1629
  • Fix auth callback trace and update test scripts by @AnuradhaKaruppiah in #1633
  • fix(http-hitl-oauth): fix streaming and default configuration values by @willkill07 in #1641
  • Add validation alias for nvext_max_sensitivity in DynamoLLM by @dnandakumar-nv in #1657
  • Treat explicit null defaults as nullable in MCP schema translation by @AnuradhaKaruppiah in #1665
  • Fix Unicode escape sequences showing in console workflow output by @yczhang-nv in #1664
  • Improve ReAct tool input parsing for Python-style Action Input literals by @AnuradhaKaruppiah in #1666
  • Add missing dependency for nvidia-nat-opentelemetry to nvidia-nat-langchain by @dagardner-nv in #1670
  • Fix ReAct agent parsing failures with reasoning models (<think> tags) by @yczhang-nv in #1667
  • Simplify the example questions to bypass priv levels by @AnuradhaKaruppiah in #1672
  • Fix thought matching issue in ReAct agent with the Llama-3.1-Nemotron-Nano-4B-v1.1 model by @dagardner-nv in #1675
  • chore(deps): provide upper-bound for starlette; bump grpcio versions by @willkill07 in #1669
  • Fix setting the openai base url for llama index by @dagardner-nv in #1686
  • examples(mcp): make example more robust to LLM hallucination by @willkill07 in #1695
  • Fix mixture of agent example from reaching GRAPH_RECURSION_LIMIT by @dagardner-nv in #1697
  • fix: handle GraphRecursionError gracefully in tool_calling_agent by @mnajafian-nv in #1705
  • Update nat-ui submodule to include conversation state fix by @ericevans-nv in #1704
  • Fix alert_triage_agent empty reports in offline mode (#1699) by @mnajafian-nv in #1703
  • fix(notebooks): add missing nat workflow reinstall before nat run by @mnajafian-nv in #1713
  • fix(simple-web-query): harden tool description; disable thinking by @willkill07 in #1722
  • Fix pydantic model validation for nvext hints by @dnandakumar-nv in #1723
  • Pin nvidia-nat-ragaai to setuptools v81 by @dagardner-nv in #1730
  • Fix Strands integration tests by @dagardner-nv in #1731
  • fix: replace llama-3.1-405b model in email phishing analyzer by @mnajafian-nv in #1712
  • Fix alert triage agent: switch to nemotron-3-nano model and improve prompts by @hsin-c in #1750
  • fix(ci): sanitize sbom license response by @willkill07 in #1763
  • fix: replace deprecated mistral-nemo-12b and fix reasoning agent tool discovery by @mnajafian-nv in #1781
  • fix: toplevel pyproject.toml should specify tool.uv.managed=true by @willkill07 in #1783

📝 Documentation Updates

  • Fix typo in documentation for uv sync command by @thepatrickchin in #1542
  • docs: 1.5 migration guide for packaging by @willkill07 in #1625
  • chore(docs): add GitHub Issues/PRs to Linkcheck ignorelist by @willkill07 in #1642
  • Ensure that we allways spell vLLM with the same casing that the proje… by @dagardner-nv in #1644
  • Document the need to set the NVIDIA_API_KEY in the Redis example by @dagardner-nv in #1678
  • Add documentation for langsmith evaluators by @pastorsj in #1643
  • Organize alternate source/package install commands into tabs by @dagardner-nv in #1737
  • Cleanup vale vocabulary by @dagardner-nv in #1745

Other Changes

  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1275
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1279
  • Revert langchain version update in example for dynamo by @mnajafian-nv in #1299
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1302
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1325
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1396
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1413
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1461
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1467
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1468
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1470
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1471
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1473
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1474
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1481
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1487
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1488
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1496
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1497
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1502
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1504
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1510
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1511
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1517
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1519
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1521
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1523
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1524
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1527
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1531
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1532
  • Forward-merge release/1.4 into develop by @rapids-bot[bot] in #1534

New Contributors

  • @bledden made their first contribution in #1564
  • @pastorsj made their first contribution in #1567

[1.4.1] - 2026-02-09

🐛 Bug Fixes

  • fix(serve): ensure a single event loop for python 3.11 by @willkill07 in #1558

📚 Documentation

  • Document new nat serve CLI flags by @dagardner-nv in #1562

Full Changelog: https://github.com/NVIDIA/NeMo-Agent-Toolkit/compare/v1.4.0...v1.4.1

[1.4.0] - 2026-02-02

🚀 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.
  • NeMo Agent Toolkit Safety and Security: Strengthen safety and security of 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 SecretStr fields 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_id from GeneralConfig to 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-all and 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 Middleware and native support for FunctionMiddleware for 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 ReAct agent 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_name an 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_workflow method 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_workflow function 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 SecretStr type 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 #1148
  • Support Unix shell-style wildcards in dataset filter configuration by @thepatrickchin in #1146
  • Add optional TTL configuration for Redis object store by @thepatrickchin in #1157
  • Local sandbox improvements by @dagardner-nv in #1162
  • Forward merge 'release/1.3' into develop by @willkill07 in #1135
  • feat: relax temperature bounds to be model-specific by @willkill07 in #1172
  • Update the test_lifetime_task_timeout test to not take 60s by @dagardner-nv in #1171
  • Ensure that the compatibility loader is removed after each test by @dagardner-nv in #1177
  • Add an E2E test for Simple Calculator Galileo observability example by @dagardner-nv in #1095
  • Improve haystack_deep_research_agent example by @mpangrazzi in #1170
  • Add a simple evaluate_item endpoint by @AnuradhaKaruppiah in #1138
  • Remove work-around for qdrant/qdrant-client#983 by @dagardner-nv in #1186
  • Provide a method for adding routes at the root level of the NAT-MCP server by @AnuradhaKaruppiah in #1187
  • Silence warnings being emitted during tests by @dagardner-nv in #1189
  • Work-around slow import issue for google-adk by @dagardner-nv in #1192
  • Remove pytest-pretty by @dagardner-nv in #1193
  • Add E2E test for RagaAI Catalyst by @dagardner-nv in #1194
  • Create TTC Functions for Multi-LLM Generation by @dnandakumar-nv in #1203
  • Add a Kaggle MCP usage example by @AnuradhaKaruppiah in #1209
  • Security and Lint updates for AgentCore Deploy by @BuildOnCloud in #1220
  • Add a tabular output for evaluation results by @AnuradhaKaruppiah in #1239
  • Update finetuning docs and add harness to workflows guide by @dnandakumar-nv in #1245
  • Update README for RL Example by @dnandakumar-nv in #1252
  • Mark wheels with a beta tag as ready by @dagardner-nv in #1284
  • fix: uv.lock update for nat_react_benchmark_agent by @bbednarski9 in #1285
  • Add rules to try and catch a bug where default='' is used for a SecretStr field by @dagardner-nv in #1304
  • dynamo unit test patch and cleanup by @bbednarski9 in #1303
  • fix: AWS AgentCore IAM policy rules and example prerequisites by @bbednarski9 in #1315
  • Update copyright year by @dagardner-nv in #1317
  • Fix: add parent-child lineage to trace/span exporter attributes by @bbednarski9 in #1320
  • changed to simplified system prompt and properly handle no inputs by @mnajafian-nv in #1307
  • Add configurable description for sequential executor by @thepatrickchin in #1293
  • Add early exit mechanisms for Sequential Executor by @thepatrickchin in #1289
  • chore: bump github actions version to v6 by @willkill07 in #1334
  • Implement Non-session-aware Per-user MCPClient by @yczhang-nv in #1253
  • Add Configuration Preservation to Evaluation Output by @AnuradhaKaruppiah in #1336
  • chore: bump langchain deps; regenerate uv.lock by @willkill07 in #1333
  • Remove stray file unintentionally added to the repository by @dagardner-nv in #1339
  • Rename Sequential Executor input parameter for compatibility with generate endpoints by @thepatrickchin in #1291
  • Implement CLI Plugin Discovery System by @AnuradhaKaruppiah in #1341
  • Improve Safety and Security Engine README by @ericevans-nv in #1344
  • Add documentation specific rules to .coderabbit.yaml by @dagardner-nv in #1348
  • Improves finetuning end status logging by @dnandakumar-nv in #1350
  • chore: update NAT UI submodule by @willkill07 in #1352
  • Update the build_wheel CI stage to always build wheels with matching version dependencies by @dagardner-nv in #1343
  • Update langsmith.xlsx to match data in langsmith.csv by @dagardner-nv in #1360
  • Clean up SWE-bench example: Remove unmaintained predictor and migrate to remote datasets by @AnuradhaKaruppiah in #1361
  • chore: update ui submodule, semantic-kernel, and langchain versions by @willkill07 in #1369
  • Reorganize A2A Examples for Clarity by @AnuradhaKaruppiah in #1368
  • add support for langchain agents that are wrapped as async context managers by @gfreeman-nvidia in #1371
  • chore: bump urllib3+langchain; specify werkzeug as transitive dep by @willkill07 in #1375
  • chore: speed up tests by @willkill07 in #1378
  • Decouple HuggingFace LLM provider from LangChain dependency by @ericevans-nv in #1367
  • Add code owners for example data directories by @dagardner-nv in #1379
  • Fix Windows path parsing in find_package_root by @ericevans-nv in #1380
  • chore: update nvidia_nat_weave > weave > fickling dependency by @willkill07 in #1386
  • Add a pre-commit script to ensure output cells of notebooks are cleared by @dagardner-nv in #1381
  • Increase the time limit for the test stage by @dagardner-nv in #1400
  • Expose Dask memory_limit config by @dagardner-nv in #1401
  • Standardize RAG service response schema parsing by @ericevans-nv in #1406
  • Fix/simplify event loop test by @mnajafian-nv in #1405
  • fix: correct ReWOO planner prompt JSON example format by @mnajafian-nv in #1410
  • Add pytest-timeout and set a global 5min timeout by @dagardner-nv in #1411
  • Expose Dask threads per worker by @dagardner-nv in #1408
  • Handle consecutive status check failures with retry logic in DPO trainer adapter by @dnandakumar-nv in #1415
  • Fix multi_frameworks workflow CI failure by @mnajafian-nv in #1418
  • Update middleware to use FunctionGroup.SEPARATOR for function matching by @ericevans-nv in #1448
  • Update A2A docs by @AnuradhaKaruppiah in #1447
  • Update the build_wheel CI script to test that built wheels are installable by @dagardner-nv in #1457
  • Add websocket MCP auth check script (no UI) by @AnuradhaKaruppiah in #1465
  • docs: Restore Llama config docs in simple_web_query_eval README by @mnajafian-nv in #1472
  • fix: dynamo multi-worker deployment shell script update by @bbednarski9 in #1479
  • update package versions in uv.lock; update UI submodule by @willkill07 in #1469
  • Update Dask by @dagardner-nv in #1478
  • Improve Safety and Security retail agent docs by @ericevans-nv in #1492
  • improvement(adk-example): update example to prefer NVIDIA NIM by @willkill07 in #1495
  • add name attribute to FunctionBaseConfig for workflow naming in span exporter by @bbednarski9 in #1482
  • chore: prefer non-required packages are manually installed by @willkill07 in #1516
  • chore: remove huggingface extra by @willkill07 in #1525

🐛 Bug Fixes

  • Ensure CI uses --first-parent when calling git describe by @dagardner-nv in #940
  • Fixes to detect optional parameters in tool conversion used by "nat mcp serve" by @AnuradhaKaruppiah in #1126
  • Mini Patch ReWOO Test Failure by @billxbf in #1155
  • Fix documentation version switcher by @thepatrickchin in #1159
  • Ensure that the ADKProfilerHandler patches are not applied more than once by @dagardner-nv in #1175
  • Fix documentation_checks.sh script to run on MacOS by @dagardner-nv in #1178
  • Add bind_tools and bind methods to LangChainTestLLM by @AnuradhaKaruppiah in #1181
  • Truncate long error messages by @dagardner-nv in #1182
  • Ensure jq is installed prior to running integration tests by @dagardner-nv in #1183
  • fix(azure-openai): ensure api_version is specified by @willkill07 in #1185
  • Replace nest-asyncio with nest-asyncio2 by @dagardner-nv in #1190
  • Bug/strands unit tests by @bbednarski9 in #1196
  • Fix: Add ca-certificates to simple_calculator Dockerfile by @rmalani-nv in #1201
  • Use secret value for client_secret in OAuth client by @dzmitryv111111 in #1198
  • Fix the aiq_compatibility_span_prefix fixture by @dagardner-nv in #1199
  • Add model_name as a computed field to AzureOpenAIModelConfig by @dagardner-nv in #1214
  • Enable observability for individual function calls in MCP server by @mpenn in #1234
  • Update the nvidia-nat-vanna dependency on nvidia-nat to declare plugins using the square bracket form by @dagardner-nv in #1238
  • Use a local Piston server for E2E integration tests by @dagardner-nv in #1244
  • Fix ReAct agent TypeError with LiteLLM and Anthropic models by @sjarmak in #1251
  • Adopt fixes for image generation by @dagardner-nv in #1286
  • Unify the user_id adding logic to context_state for multiple CLI commands by @yczhang-nv in #1287
  • Fix MCP workflow entry function handling by @mpenn in #1277
  • Fix bug where SecretStr fields defaulting to an empty string were not being instantiated by @dagardner-nv in #1298
  • Fix TypeConverter not able to handle Union type conversion by @yczhang-nv in #1301
  • Revert version specification to 1.4 by @willkill07 in #1312
  • Change the url field in ImageUrl model from HttpUrl to str by @mpenn in #1314
  • Add error handling to E2E test report script by @dagardner-nv in #1319
  • Fix notebook E2E tests by @dagardner-nv in #1321
  • Update openpipe-art to version 0.5.4 by @dnandakumar-nv in #1323
  • Fix simple_calculator protected a2a server installation issues by @AnuradhaKaruppiah in #1326
  • Improve Multi-User Testing Instructions in Math Assistant A2A Example by @AnuradhaKaruppiah in #1329
  • Resolve dependency conflicts from nvidia_nat_openpipe_art package by @dagardner-nv in #1331
  • Add missing tzdata package to Docker image by @dagardner-nv in #1337
  • Fix CI failures: RAG recursion and eval assertion by @mnajafian-nv in #1347
  • Fix A2A Client CLI Commands After Multi-User Migration by @AnuradhaKaruppiah in #1353
  • Revert system prompt for react agent's prompt by @mnajafian-nv in #1358
  • fix: strip remaining occurrences of . for function groups by @willkill07 in #1362
  • Update weave to latest version, resolves a conflict with autogen by @dagardner-nv in #1363
  • Update FunctionGroup separator in MCP client CLI by @yczhang-nv in #1359
  • Fix training cancellation 404 error by @mnajafian-nv in #1364
  • chore: ensure all installable examples are specified in root pyproject.toml by @willkill07 in #1373
  • For tagged and nightly builds use GIT_TAG as-is by @dagardner-nv in #1376
  • bug fix: Dynamo SGLang Startup Script Cleanup by @bbednarski9 in #1357
  • fix: Amd64 Support for Bedrock Strands Demo by @bbednarski9 in #1377
  • Update currency agent A2A example instructions to use openai models by @AnuradhaKaruppiah in #1372
  • fix: langchain<>huggingface integration by @willkill07 in #1382
  • Async endpoint improvements by @dagardner-nv in #1374
  • Fix/agno flaky test release 1.4 by @mnajafian-nv in #1383
  • fix: update config_inheritance example with proper setup by @willkill07 in #1384
  • fix: update configs for autogen example; fix MCP tool wrapping by @willkill07 in #1387
  • Fix nvbug: SSL cert verification and FD exhaustion in email_phishing_analyzer Docker build by @mnajafian-nv in #1389
  • Fix issues with haystack deep research agent example by @dagardner-nv in #1388
  • Update help string and doc for "nat run --input_file" by @AnuradhaKaruppiah in #1390
  • autogen demo: LA traffic example by @bbednarski9 in #1426
  • Update test models to nemotron 3 and fix test assertions by @hsin-c in #1425
  • Re-generate several dataset in examples by @yczhang-nv in #1427
  • fix(oauth2): Add client_id to refresh_token request for MaaS OAuth servers by @andywy110 in #1421
  • Fix token usage statistics and image viewing in Profiler Agent by @dagardner-nv in #1428
  • Update deep research notebook with Nemotron models and clearer instructions by @yczhang-nv in #1436
  • fix(eval): prevent awaited coroutine reuse on Exception by @willkill07 in #1438
  • fix(weave): ensure contextmanager protocol is implemented for weave mock by @willkill07 in #1439
  • fix(deps): version specifiers with major.minor.patch should not use ~= by @willkill07 in #1452
  • Update models and inputs langgraph_deep_research notebook to enhance performance and consistency by @yczhang-nv in #1444
  • Fix MCP tool UI display by @AnuradhaKaruppiah in #1462
  • Fix CI failures: Complete Llama→Nemotron migration for remaining exam… by @mnajafian-nv in #1464
  • Fix concurrent async generate requests by @dagardner-nv in #1498
  • Remove the task_timeout from the a2a sample config files by @AnuradhaKaruppiah in #1508
  • Escape special characters in Redis user_id for vector search by @thepatrickchin in #1494
  • chore: update UI submodule to have latest fixes by @willkill07 in #1522
  • Fix LLM calling actions not traced in phoenix when running nat serve by @yczhang-nv in #1520
  • fix(testing): guard huggingface integration test with importorskip by @willkill07 in #1535

📝 Documentation Updates

  • docs: initial nat optimizer notebook by @bbednarski9 in #1053
  • doc: cleanup notebook 6 (nat optimize) and alert triage agent optimization by @bbednarski9 in #1125
  • docs: getting started notebook 7 - mcp client and server setup using NAT by @bbednarski9 in #1145
  • docs: renumbering the getting started notebooks by @bbednarski9 in #1149
  • Enhance documentation for Strands Agents integration by @ronjer30 in #1205
  • Updates to AWS AgentCore README and scripts by @ronjer30 in #1208
  • google-adk version upgrade by @bbednarski9 in #1217
  • tests: remove obsolete conftest by @bbednarski9 in #1219
  • Restructuring and reorganizing workflows by @lvojtku in #1173
  • Update Cursor rules to use the new naming guidance by @yczhang-nv in #1273
  • Define terms in documentation on first use, and refer back to definition when used in other documents by @dagardner-nv in #1254
  • Add support matrix for RL by @dnandakumar-nv in #1327
  • Update README instructions for consistency and clarity by @dnandakumar-nv in #1338
  • Add documentation compatibility redirects for old 1.3 urls by @dagardner-nv in #1351
  • Update Python version to 3.13 in README example by @dnandakumar-nv in #1366
  • Fix kaggle_mcp example input by @yczhang-nv in #1395
  • docs: fix docker run commands for local LLMs by @willkill07 in #1398
  • Update langchain_deep_research documentation to mention Anthropic API key is needed by @yczhang-nv in #1402
  • docs: add deepwiki badge; update troubleshooting to mention conda by @willkill07 in #1412
  • docs: add complexity levels to all examples by @willkill07 in #1422
  • bug fix: dynamo integration - model download and instructions clarification by @bbednarski9 in #1420
  • Add no cache installation to ART by @dnandakumar-nv in #1424
  • fix: strands demo reliability improvements by @bbednarski9 in #1429
  • docs: nat-dynamo startup scripts improved envar documentation by @bbednarski9 in #1443
  • docs: add conda install warning to installation.md by @bbednarski9 in #1446
  • docs: add CUDA prereq warning to examples by @bbednarski9 in #1455
  • Minor cleanup to Simple Calculator Eval documentation by @dagardner-nv in #1463
  • docs: dynamo readme simplification and hardware requirements cleanup by @bbednarski9 in #1509
  • Update RL README with OpenAI API key setup and adjust commands by @dnandakumar-nv in #1514
  • docs: dynamo integration performance comparison docs by @bbednarski9 in #1515
  • Update documentation for prerequisites and logprobs clarification by @dnandakumar-nv in #1530
  • docs: add migration guide for 1.4 by @willkill07 in #1533
  • docs: 1.4 changelog and release notes by @willkill07 in #1544
  • Update README for 1.4 Release by@mdemoret-nv in #1546

🙌 New Contributors

  • @dbnl-renaud made their first contribution in #1111
  • @mpangrazzi made their first contribution in #1170
  • @jiaxiangr made their first contribution in #974
  • @ronjer30 made their first contribution in #1063
  • @rmalani-nv made their first contribution in #1201
  • @dzmitryv111111 made their first contribution in #1198
  • @BuildOnCloud made their first contribution in #1220
  • @sjarmak made their first contribution in #1251
  • @andywy110 made their first contribution in #1421

[1.3.1] - 2025-11-07

📦 Overview

This is a minor release with documentation updates, bug fixes, and non-breaking improvements.

✨ New Features

  • feat: Add claude-sonnet-4.5 support by model-gating top_p by @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_tool when 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-test prior to using ToolTestRunner by @dagardner-nv in #1150
  • Update reasoning diagrams by @dagardner-nv in #1153
  • Update Quick Start UI documentation by @ericevans-nv in #1156
  • Add security-considerations.md document by @dagardner-nv in #1168
  • docs: 1.3.1 changelog by @willkill07 in #1166

🙌 New Contributors

  • @antoniomtz made their first contribution in #1120

[1.3.0] - 2025-10-24

🚀 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/completions endpoint only)
    • Adds Nemotron thinking configuration
  • MCP Improvements
    • Supports streamable-http - sse is 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 mcp sub command for querying, calling, and listing tools.
  • 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 BaseAgent by @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 mcp to a command group with serve and client subcommands by @zhongxuanwang-nv in #811
  • Builder get_* functions should be marked async by @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.entity field 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 create a versioned dependency and data and symlinks folder by @zhongxuanwang-nv in #639
  • Feature: Azure OpenAI LLM provider and client by @willkill07 in #643
  • Timezone Support for datetime Tool 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-flywheel subpackage with NeMo Data Flywheel integrations by @mpenn in #716
  • Enhance ProcessingExporter system 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 Executor tool 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/list endpoint 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

🐛 Bug Fixes

📝 Documentation Updates

🙌 New Contributors

[1.2.1] - 2025-08-20

📦 Overview

This is a documentation only release, there are no code changes in this release.

📜 Full Change Log

[1.2.0] - 2025-08-20

📦 Overview

The NeMo Agent Toolkit, formerly known as Agent Intelligence (AIQ) toolkit, has been renamed to align with the NVIDIA NeMo family of products. This release brings significant new capabilities and improvements across authentication, resource management, observability, and developer experience. The toolkit continues to offer backwards compatibility, making the transition seamless for existing users.

While NeMo Agent Toolkit is designed to be compatible with the previous version, users are encouraged to update their code to follow the latest conventions and best practices. Migration instructions are provided in the migration guide.

🚨 Breaking Changes

🚀 Notable Features and Improvements

  • Authentication for Tool Calling: Implement robust authentication mechanisms that enable secure and configurable access management for tool invocation within agent workflows.
  • Test Time Compute: Dynamically reallocate compute resources after model training, allowing agents to optimize reasoning, factual accuracy, and system robustness without retraining the base model.
  • Sizing Calculator: Estimate GPU cluster requirements to support your target number of users and desired response times, simplifying deployment planning and scaling.
  • Object Store Integration: Connect and manage data through supported object stores, improving agent extensibility and enabling advanced data workflows.
  • Enhanced Cursor Rules: Build new workflows or extend existing ones by leveraging cursor rules, making agent development faster and more flexible.
  • Interactive Notebooks: Access a suite of onboarding and example notebooks to accelerate agent workflow development, testing, and experimentation.
  • Observability Refactor: Onboard new observability and monitoring platforms more easily, and take advantage of improved plug-in architecture for workflow inspection and analysis.
  • Examples Reorganization: Organize examples by functionality, making it easier to find and use the examples.

📜 Full Change Log

🙌 New Contributors

[1.1.0] - 2025-05-16

Key Features

  • Full MCP (Model Context Protocol) support
  • Weave tracing
  • Agno integration
  • ReWOO Agent
  • Alert Triage Agent Example

What's Changed

New Contributors

[1.1.0a1] - 2025-04-05

Added

  • Added CORS configuration for the FastAPI server
  • Added support for customizing evaluation outputs and uploading results to remote storage

Fixed

  • Fixed aiq serve when running the simple_rag workflow example
  • Added missing platformdirs dependency to aiqtoolkit package

[1.0.0] - 2024-12-04

Added

  • First release.