Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.3 |
| nodl_tutorial_basics | 2.0.3 |
| nodl_tutorial_dummy_robot | 2.0.3 |
| nodl | 2.0.3 |
| nodl_common_interfaces | 2.0.3 |
| nodl_docgen | 2.0.3 |
| nodl_generator_common | 2.0.3 |
| nodl_generator_cpp | 2.0.3 |
| nodl_generator_py | 2.0.3 |
| nodl_observe | 2.0.3 |
| nodl_runtime_py | 2.0.3 |
| nodl_schema | 2.0.3 |
| ros2nodl | 2.0.3 |
| test_ament_nodl | 2.0.3 |
| test_nodl_generators | 2.0.3 |
| test_nodl_generators_downstream | 2.0.3 |
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
NoDL is split into packages for the schema, code generators, documentation generation, and ROS 2 integration.
The nodl metapackage pulls in the common ones, so most users only need to depend on it.
The package list in the documentation describes each package.
The NoDL schema, key to this whole thing, is nodl.schema.yaml.
Outside the packages:
- design/: Design documents for NoDL features
- examples/: Example packages that the tutorials build on
- nodl/doc/: Documentation source for the ReadTheDocs page
- test_ament_nodl/, test_nodl_generators/ and test_nodl_generators_downstream/: Integration tests for the CMake macros and the code generators
- tools/: Scripts supporting development and build workflows
Developing
See RELEASING.md for versioning and tag releases.
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.
ROS Distribution Status
| Distro | Dev | Doc | Ubuntu Bin |
|---|---|---|---|
| Humble | |||
| Jazzy | |||
| Lyrical | |||
| Rolling |
Unsupported Distributions
These ROS distributions will receive no future release updates or code compatibility support.
| Distro | Date Support Ended | Reason |
|---|---|---|
| Kilted Kaiju | October 5, 2026 | Distro EOL in November |
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.3 |
| nodl_tutorial_basics | 2.0.3 |
| nodl_tutorial_dummy_robot | 2.0.3 |
| nodl | 2.0.3 |
| nodl_common_interfaces | 2.0.3 |
| nodl_docgen | 2.0.3 |
| nodl_generator_common | 2.0.3 |
| nodl_generator_cpp | 2.0.3 |
| nodl_generator_py | 2.0.3 |
| nodl_observe | 2.0.3 |
| nodl_runtime_py | 2.0.3 |
| nodl_schema | 2.0.3 |
| ros2nodl | 2.0.3 |
| test_ament_nodl | 2.0.3 |
| test_nodl_generators | 2.0.3 |
| test_nodl_generators_downstream | 2.0.3 |
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
NoDL is split into packages for the schema, code generators, documentation generation, and ROS 2 integration.
The nodl metapackage pulls in the common ones, so most users only need to depend on it.
The package list in the documentation describes each package.
The NoDL schema, key to this whole thing, is nodl.schema.yaml.
Outside the packages:
- design/: Design documents for NoDL features
- examples/: Example packages that the tutorials build on
- nodl/doc/: Documentation source for the ReadTheDocs page
- test_ament_nodl/, test_nodl_generators/ and test_nodl_generators_downstream/: Integration tests for the CMake macros and the code generators
- tools/: Scripts supporting development and build workflows
Developing
See RELEASING.md for versioning and tag releases.
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.
ROS Distribution Status
| Distro | Dev | Doc | Ubuntu Bin |
|---|---|---|---|
| Humble | |||
| Jazzy | |||
| Lyrical | |||
| Rolling |
Unsupported Distributions
These ROS distributions will receive no future release updates or code compatibility support.
| Distro | Date Support Ended | Reason |
|---|---|---|
| Kilted Kaiju | October 5, 2026 | Distro EOL in November |
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.3 |
| nodl_tutorial_basics | 2.0.3 |
| nodl_tutorial_dummy_robot | 2.0.3 |
| nodl | 2.0.3 |
| nodl_common_interfaces | 2.0.3 |
| nodl_docgen | 2.0.3 |
| nodl_generator_common | 2.0.3 |
| nodl_generator_cpp | 2.0.3 |
| nodl_generator_py | 2.0.3 |
| nodl_observe | 2.0.3 |
| nodl_runtime_py | 2.0.3 |
| nodl_schema | 2.0.3 |
| ros2nodl | 2.0.3 |
| test_ament_nodl | 2.0.3 |
| test_nodl_generators | 2.0.3 |
| test_nodl_generators_downstream | 2.0.3 |
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
NoDL is split into packages for the schema, code generators, documentation generation, and ROS 2 integration.
The nodl metapackage pulls in the common ones, so most users only need to depend on it.
The package list in the documentation describes each package.
The NoDL schema, key to this whole thing, is nodl.schema.yaml.
Outside the packages:
- design/: Design documents for NoDL features
- examples/: Example packages that the tutorials build on
- nodl/doc/: Documentation source for the ReadTheDocs page
- test_ament_nodl/, test_nodl_generators/ and test_nodl_generators_downstream/: Integration tests for the CMake macros and the code generators
- tools/: Scripts supporting development and build workflows
Developing
See RELEASING.md for versioning and tag releases.
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.
ROS Distribution Status
| Distro | Dev | Doc | Ubuntu Bin |
|---|---|---|---|
| Humble | |||
| Jazzy | |||
| Lyrical | |||
| Rolling |
Unsupported Distributions
These ROS distributions will receive no future release updates or code compatibility support.
| Distro | Date Support Ended | Reason |
|---|---|---|
| Kilted Kaiju | October 5, 2026 | Distro EOL in November |
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.3 |
| nodl_tutorial_basics | 2.0.3 |
| nodl_tutorial_dummy_robot | 2.0.3 |
| nodl | 2.0.3 |
| nodl_common_interfaces | 2.0.3 |
| nodl_docgen | 2.0.3 |
| nodl_generator_common | 2.0.3 |
| nodl_generator_cpp | 2.0.3 |
| nodl_generator_py | 2.0.3 |
| nodl_observe | 2.0.3 |
| nodl_runtime_py | 2.0.3 |
| nodl_schema | 2.0.3 |
| ros2nodl | 2.0.3 |
| test_ament_nodl | 2.0.3 |
| test_nodl_generators | 2.0.3 |
| test_nodl_generators_downstream | 2.0.3 |
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
NoDL is split into packages for the schema, code generators, documentation generation, and ROS 2 integration.
The nodl metapackage pulls in the common ones, so most users only need to depend on it.
The package list in the documentation describes each package.
The NoDL schema, key to this whole thing, is nodl.schema.yaml.
Outside the packages:
- design/: Design documents for NoDL features
- examples/: Example packages that the tutorials build on
- nodl/doc/: Documentation source for the ReadTheDocs page
- test_ament_nodl/, test_nodl_generators/ and test_nodl_generators_downstream/: Integration tests for the CMake macros and the code generators
- tools/: Scripts supporting development and build workflows
Developing
See RELEASING.md for versioning and tag releases.
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.
ROS Distribution Status
| Distro | Dev | Doc | Ubuntu Bin |
|---|---|---|---|
| Humble | |||
| Jazzy | |||
| Lyrical | |||
| Rolling |
Unsupported Distributions
These ROS distributions will receive no future release updates or code compatibility support.
| Distro | Date Support Ended | Reason |
|---|---|---|
| Kilted Kaiju | October 5, 2026 | Distro EOL in November |
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.3 |
| nodl_tutorial_basics | 2.0.3 |
| nodl_tutorial_dummy_robot | 2.0.3 |
| nodl | 2.0.3 |
| nodl_common_interfaces | 2.0.3 |
| nodl_docgen | 2.0.3 |
| nodl_generator_common | 2.0.3 |
| nodl_generator_cpp | 2.0.3 |
| nodl_generator_py | 2.0.3 |
| nodl_observe | 2.0.3 |
| nodl_runtime_py | 2.0.3 |
| nodl_schema | 2.0.3 |
| ros2nodl | 2.0.3 |
| test_ament_nodl | 2.0.3 |
| test_nodl_generators | 2.0.3 |
| test_nodl_generators_downstream | 2.0.3 |
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
NoDL is split into packages for the schema, code generators, documentation generation, and ROS 2 integration.
The nodl metapackage pulls in the common ones, so most users only need to depend on it.
The package list in the documentation describes each package.
The NoDL schema, key to this whole thing, is nodl.schema.yaml.
Outside the packages:
- design/: Design documents for NoDL features
- examples/: Example packages that the tutorials build on
- nodl/doc/: Documentation source for the ReadTheDocs page
- test_ament_nodl/, test_nodl_generators/ and test_nodl_generators_downstream/: Integration tests for the CMake macros and the code generators
- tools/: Scripts supporting development and build workflows
Developing
See RELEASING.md for versioning and tag releases.
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.
ROS Distribution Status
| Distro | Dev | Doc | Ubuntu Bin |
|---|---|---|---|
| Humble | |||
| Jazzy | |||
| Lyrical | |||
| Rolling |
Unsupported Distributions
These ROS distributions will receive no future release updates or code compatibility support.
| Distro | Date Support Ended | Reason |
|---|---|---|
| Kilted Kaiju | October 5, 2026 | Distro EOL in November |
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.3 |
| nodl_tutorial_basics | 2.0.3 |
| nodl_tutorial_dummy_robot | 2.0.3 |
| nodl | 2.0.3 |
| nodl_common_interfaces | 2.0.3 |
| nodl_docgen | 2.0.3 |
| nodl_generator_common | 2.0.3 |
| nodl_generator_cpp | 2.0.3 |
| nodl_generator_py | 2.0.3 |
| nodl_observe | 2.0.3 |
| nodl_runtime_py | 2.0.3 |
| nodl_schema | 2.0.3 |
| ros2nodl | 2.0.3 |
| test_ament_nodl | 2.0.3 |
| test_nodl_generators | 2.0.3 |
| test_nodl_generators_downstream | 2.0.3 |
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
NoDL is split into packages for the schema, code generators, documentation generation, and ROS 2 integration.
The nodl metapackage pulls in the common ones, so most users only need to depend on it.
The package list in the documentation describes each package.
The NoDL schema, key to this whole thing, is nodl.schema.yaml.
Outside the packages:
- design/: Design documents for NoDL features
- examples/: Example packages that the tutorials build on
- nodl/doc/: Documentation source for the ReadTheDocs page
- test_ament_nodl/, test_nodl_generators/ and test_nodl_generators_downstream/: Integration tests for the CMake macros and the code generators
- tools/: Scripts supporting development and build workflows
Developing
See RELEASING.md for versioning and tag releases.
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.
ROS Distribution Status
| Distro | Dev | Doc | Ubuntu Bin |
|---|---|---|---|
| Humble | |||
| Jazzy | |||
| Lyrical | |||
| Rolling |
Unsupported Distributions
These ROS distributions will receive no future release updates or code compatibility support.
| Distro | Date Support Ended | Reason |
|---|---|---|
| Kilted Kaiju | October 5, 2026 | Distro EOL in November |
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ubuntu-robotics/nodl.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2022-11-17 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| nodl_python | 0.3.1 |
| ros2nodl | 0.3.1 |
README
NoDL - Node Definition Language
NoDL is the Node Definition Language - a common declarative representation of a Node’s interfaces including Parameters, Topics, Services, and Actions. See the design document (review in progress) for more context on the project.
This repository contains the CLI and parsing utilities for NoDL.
Installation
Run python3 setup.py install
Install the ‘ament_nodl’ extension for exporting NoDL .xml files:
sudo apt-get install ros-<ros2_distro>-ament-nodl
Configuration
Add to package.xml:
<depend>ament_nodl</depend>
Add to CMakeLists.txt:
find_package(ament_nodl REQUIRED)
nodl_export_node_description_file(<package_name>.nodl.xml)
Usage
Create a file called “
Valid values for the topic role tag are: publisher, subscription, or both.
Valid values for the service role tag are: server, client, or both.
Valid values for the action role tag are: server, client, or both.
Types can have custom names.
Example
<interface version="1">
<node name="<node1_name>" executable="<executable_name>">
<parameter name="rate" type="int" />
<topic name="/foo/bar" type="std_msgs/msg/String" role="subscription" />
<service name="/example_service" type="std_srvs/srv/Empty" role="client" />
<action name="/example_action" type="example_interfaces/action/Fibonacci" role="both" />
</node>
<node name="<node2_name>" executable="<executable_name>">
...
</node>
</interface>
CLI
See available verbs on the ROS 2 command line tools for NoDL repo.
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ubuntu-robotics/nodl.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2022-11-17 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| nodl_python | 0.3.1 |
| ros2nodl | 0.3.1 |
README
NoDL - Node Definition Language
NoDL is the Node Definition Language - a common declarative representation of a Node’s interfaces including Parameters, Topics, Services, and Actions. See the design document (review in progress) for more context on the project.
This repository contains the CLI and parsing utilities for NoDL.
Installation
Run python3 setup.py install
Install the ‘ament_nodl’ extension for exporting NoDL .xml files:
sudo apt-get install ros-<ros2_distro>-ament-nodl
Configuration
Add to package.xml:
<depend>ament_nodl</depend>
Add to CMakeLists.txt:
find_package(ament_nodl REQUIRED)
nodl_export_node_description_file(<package_name>.nodl.xml)
Usage
Create a file called “
Valid values for the topic role tag are: publisher, subscription, or both.
Valid values for the service role tag are: server, client, or both.
Valid values for the action role tag are: server, client, or both.
Types can have custom names.
Example
<interface version="1">
<node name="<node1_name>" executable="<executable_name>">
<parameter name="rate" type="int" />
<topic name="/foo/bar" type="std_msgs/msg/String" role="subscription" />
<service name="/example_service" type="std_srvs/srv/Empty" role="client" />
<action name="/example_action" type="example_interfaces/action/Fibonacci" role="both" />
</node>
<node name="<node2_name>" executable="<executable_name>">
...
</node>
</interface>
CLI
See available verbs on the ROS 2 command line tools for NoDL repo.
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.3 |
| nodl_tutorial_basics | 2.0.3 |
| nodl_tutorial_dummy_robot | 2.0.3 |
| nodl | 2.0.3 |
| nodl_common_interfaces | 2.0.3 |
| nodl_docgen | 2.0.3 |
| nodl_generator_common | 2.0.3 |
| nodl_generator_cpp | 2.0.3 |
| nodl_generator_py | 2.0.3 |
| nodl_observe | 2.0.3 |
| nodl_runtime_py | 2.0.3 |
| nodl_schema | 2.0.3 |
| ros2nodl | 2.0.3 |
| test_ament_nodl | 2.0.3 |
| test_nodl_generators | 2.0.3 |
| test_nodl_generators_downstream | 2.0.3 |
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
NoDL is split into packages for the schema, code generators, documentation generation, and ROS 2 integration.
The nodl metapackage pulls in the common ones, so most users only need to depend on it.
The package list in the documentation describes each package.
The NoDL schema, key to this whole thing, is nodl.schema.yaml.
Outside the packages:
- design/: Design documents for NoDL features
- examples/: Example packages that the tutorials build on
- nodl/doc/: Documentation source for the ReadTheDocs page
- test_ament_nodl/, test_nodl_generators/ and test_nodl_generators_downstream/: Integration tests for the CMake macros and the code generators
- tools/: Scripts supporting development and build workflows
Developing
See RELEASING.md for versioning and tag releases.
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.
ROS Distribution Status
| Distro | Dev | Doc | Ubuntu Bin |
|---|---|---|---|
| Humble | |||
| Jazzy | |||
| Lyrical | |||
| Rolling |
Unsupported Distributions
These ROS distributions will receive no future release updates or code compatibility support.
| Distro | Date Support Ended | Reason |
|---|---|---|
| Kilted Kaiju | October 5, 2026 | Distro EOL in November |
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/ros-tooling/nodl.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-30 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| ament_nodl | 2.0.3 |
| nodl_tutorial_basics | 2.0.3 |
| nodl_tutorial_dummy_robot | 2.0.3 |
| nodl | 2.0.3 |
| nodl_common_interfaces | 2.0.3 |
| nodl_docgen | 2.0.3 |
| nodl_generator_common | 2.0.3 |
| nodl_generator_cpp | 2.0.3 |
| nodl_generator_py | 2.0.3 |
| nodl_observe | 2.0.3 |
| nodl_runtime_py | 2.0.3 |
| nodl_schema | 2.0.3 |
| ros2nodl | 2.0.3 |
| test_ament_nodl | 2.0.3 |
| test_nodl_generators | 2.0.3 |
| test_nodl_generators_downstream | 2.0.3 |
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
NoDL is split into packages for the schema, code generators, documentation generation, and ROS 2 integration.
The nodl metapackage pulls in the common ones, so most users only need to depend on it.
The package list in the documentation describes each package.
The NoDL schema, key to this whole thing, is nodl.schema.yaml.
Outside the packages:
- design/: Design documents for NoDL features
- examples/: Example packages that the tutorials build on
- nodl/doc/: Documentation source for the ReadTheDocs page
- test_ament_nodl/, test_nodl_generators/ and test_nodl_generators_downstream/: Integration tests for the CMake macros and the code generators
- tools/: Scripts supporting development and build workflows
Developing
See RELEASING.md for versioning and tag releases.
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.
ROS Distribution Status
| Distro | Dev | Doc | Ubuntu Bin |
|---|---|---|---|
| Humble | |||
| Jazzy | |||
| Lyrical | |||
| Rolling |
Unsupported Distributions
These ROS distributions will receive no future release updates or code compatibility support.
| Distro | Date Support Ended | Reason |
|---|---|---|
| Kilted Kaiju | October 5, 2026 | Distro EOL in November |