diff --git a/demo_nodes_cpp/CMakeLists.txt b/demo_nodes_cpp/CMakeLists.txt
index e4b572551..b278a2067 100644
--- a/demo_nodes_cpp/CMakeLists.txt
+++ b/demo_nodes_cpp/CMakeLists.txt
@@ -12,6 +12,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 endif()
 
 find_package(ament_cmake REQUIRED)
+find_package(ament_nodl REQUIRED)
 find_package(example_interfaces REQUIRED)
 find_package(rclcpp REQUIRED)
 find_package(rclcpp_components REQUIRED)
@@ -112,6 +113,7 @@ rclcpp_components_register_node(parameters_library
 rclcpp_components_register_node(topics_library
   PLUGIN "demo_nodes_cpp::Talker"
   EXECUTABLE talker)
+nodl_export_node_description_file(talker.nodl.xml)
 rclcpp_components_register_node(topics_library
   PLUGIN "demo_nodes_cpp::LoanedMessageTalker"
   EXECUTABLE talker_loaned_message)
@@ -121,6 +123,7 @@ rclcpp_components_register_node(topics_library
 rclcpp_components_register_node(topics_library
   PLUGIN "demo_nodes_cpp::Listener"
   EXECUTABLE listener)
+nodl_export_node_description_file(listener.nodl.xml)
 rclcpp_components_register_node(topics_library
   PLUGIN "demo_nodes_cpp::SerializedMessageListener"
   EXECUTABLE listener_serialized_message)
diff --git a/demo_nodes_cpp/listener.nodl.xml b/demo_nodes_cpp/listener.nodl.xml
new file mode 100644
index 000000000..afb4071d3
--- /dev/null
+++ b/demo_nodes_cpp/listener.nodl.xml
@@ -0,0 +1,5 @@
+<interface version="1">
+  <node name="listener" executable="listener">
+    <topic name="chatter" type="std_msgs/msg/String" role="subscription" />
+  </node>
+</interface>
diff --git a/demo_nodes_cpp/package.xml b/demo_nodes_cpp/package.xml
index 5c8b3eabb..4d34de046 100644
--- a/demo_nodes_cpp/package.xml
+++ b/demo_nodes_cpp/package.xml
@@ -12,6 +12,7 @@
   <author email="william@osrfoundation.org">William Woodall</author>
 
   <buildtool_depend>ament_cmake</buildtool_depend>
+  <buildtool_depend>ament_nodl</buildtool_depend>
 
   <build_depend>example_interfaces</build_depend>
   <build_depend>rclcpp</build_depend>
diff --git a/demo_nodes_cpp/talker.nodl.xml b/demo_nodes_cpp/talker.nodl.xml
new file mode 100644
index 000000000..2be3d54c1
--- /dev/null
+++ b/demo_nodes_cpp/talker.nodl.xml
@@ -0,0 +1,5 @@
+<interface version="1">
+  <node name="talker" executable="talker">
+    <topic name="chatter" type="std_msgs/msg/String" role="publisher" />
+  </node>
+</interface>