Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-08 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.2 |
| nodl_tutorial_basics | 2.0.2 |
| nodl | 2.0.2 |
| nodl_common_interfaces | 2.0.2 |
| nodl_conformance | 2.0.2 |
| nodl_docgen | 2.0.2 |
| nodl_generator_cpp | 2.0.2 |
| nodl_observe | 2.0.2 |
| nodl_schema | 2.0.2 |
| ros2nodl | 2.0.2 |
| test_ament_nodl | 2.0.2 |
| test_nodl_generator_cpp | 2.0.2 |
README
NoDL - Node Definition Language

NoDL (Node Definition Language) is a schema and toolkit to describe a ROS 2 node’s interface: parameters, topics (publishers and subscriptions), services (clients and servers), and actions (clients and servers).
Find complete documentation at https://nodl.readthedocs.io/en/latest/
Repository structure
- ament_nodl/: CMake macros to register NoDL documents with the ament index
-
nodl/: Metapackage that pulls in the other packages as dependencies. Acts as an easy default for those who don’t want a-la-carte.
- doc/: Documentation source for the ReadTheDocs page
-
nodl_common_interfaces/: NoDL descriptions for standard ROS 2 node base classes (
rclcpp::Node,rclcpp_lifecycle::LifecycleNode), registered in the ament index until upstream ships its own. - nodl_docgen/: Sphinx extension rendering a NoDL document into a documentation page at build time.
- nodl_generator_cpp/: C++ code generator — produces an abstract base class from a NoDL document, with a CMake macro for build integration.
-
nodl_observe/: C++ (
ament_cmake) package that observes a running ROS 2 node and produces its runtime interface as arosgraph_msgs/Nodemessage — a reusableobserve_node(...)library plus anobserveexecutable. Stage one of Observe → Describe. - nodl_schema/: Package providing the NoDL schema, plus a Python package with validation tools and typed data model to work with it. nodl.schema.yaml: The NoDL schema, key to this whole thing!
-
ros2nodl/:
ros2cliextension providingros2 nodl ...commands -
test_nodl_generator_cpp/: Integration tests for
nodl_generator_cpp— exercises the CMake macro end-to-end. - tools/: Scripts supporting development and build workflows
Developing
Setup
- Clone the repo and install pre-commit hooks:
pre-commit install
pre-commit install --hook-type prepare-commit-msg
The prepare-commit-msg hook will automatically add the Signed-off-by line to your commits. If you prefer to sign off manually, use git commit -s.
Pip dependencies for full test suite
The packages in this repository use a few package only available from pip as test_depends.
For the buildfarm environment, these dependencies and tests are disabled, because a package may not be packaged into a deb/rpm against dependencies from another package manager (pip).
To install all dependencies and run the full test suite, export environment variable ENABLE_PIP_TEST_DEPENDS=1 - which the GitHub Action CI for this repo does.