|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged dispatcher at Robotics Stack Exchange
|
dispatcher package from dispatcher repodispatcher |
ROS Distro
|
Package Summary
| Version | 0.4.4 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/nasa-jpl/dispatcher.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-09-05 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Kristopher Wehage
- Daniel Pastor
Authors
- Dennis Wai
- Alex Brinkman
- Preston Rogers
Dispatcher
A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.
Runtime Parameters
The dispatcher executable uses the following ROS parameters:
| Name | Type | Default | Description |
|---|---|---|---|
dispatcher_config_path |
string |
"" |
Path to the dispatcher YAML file. |
initial_configuration |
string |
"" |
Configuration name to select on startup. |
start_checked_on_startup |
bool |
false |
Start all checked process items after loading the initial configuration. |
ssh_timeout_sec |
int |
10 |
Timeout used when building remote SSH commands. |
target_loop_rate_hz |
double |
100.0 |
Main process/status polling rate. |
YAML Configuration
The top-level dispatcher YAML supports:
| Key | Required | Description |
|---|---|---|
workspace |
Yes | Workspace path used by ROS process items before sourcing install/setup.bash. |
nodes |
Yes | Process and category definitions rendered in the main panel. |
configurations |
No | Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon. |
cmd_prefix |
No | Default command prefix for the implicit all configuration. |
environment_variables |
No | Default environment variables for the implicit all configuration. |
hide_unconfigured_processes |
No | If true, items missing in the active configuration are hidden instead of disabled. |
scripts |
No | Script button definitions shown in the scripts panel. |
variables |
No | Variable selectors used for $VARIABLE command substitution. |
Node Types
Each entry in nodes can be:
- A ROS process item. If
typeis omitted, the item is treated as ROS by default. - A shell process item with
type: shell. - A collapsible category with
type: categoryand anitemsarray. Entries initemsfollow the same rules, including the default to ROS whentypeis omitted.
Common item fields include:
| Key | Description |
|---|---|
name |
UI label and tmux-session base name. |
cmd |
Command used for the implicit all configuration. |
configurations |
Per-configuration command definitions. |
start_checked |
Whether the item starts checked in the UI. Optional, defaults to false. |
stop_tmux_cmd |
Stop sequence sent to tmux. Optional, defaults to C-C. |
hostname / user
|
Optional remote execution target for local commands or configuration entries. |
use_cmd_prefix |
Enables or disables command-prefix injection. |
use_environment_variables |
Enables or disables environment-variable injection. |
attach_on_start |
Opens a terminal automatically after launch. |
ROS process items can additionally define node_name plus an optional
namespace, or a ros_nodes array with the same monitoring fields for
online-state monitoring. An omitted namespace resolves to the root namespace,
so name: talker matches the graph’s /talker; a name that is already
absolute, such as /fcat/fcat, carries its own namespace.
Shell process items use pgrep on the item name to infer online state.
Scripts and Variables
Script entries support:
| Key | Description |
|---|---|
name |
Button label. |
cmd or configurations
|
Script command definition. |
row, column
|
Grid placement in the scripts panel. |
icon |
Optional Qt resource path for the button icon. |
use_terminal |
Whether to wrap execution in gnome-terminal --. |
Variable entries support:
| Key | Description |
|---|---|
name |
Variable name used in commands, for example $FCAT_LOOP_RATE_HZ. |
choices |
Selectable values exposed in the UI. |
Examples
The following examples build incrementally from a minimal configuration to a
full-featured setup. Each one corresponds to a YAML file in config/
and a screenshot in doc/.
ROS 2 Demos (runnable out of the box)
Four examples run without any custom packages, using only the demos that ship
with ROS 2. Each is self-contained and includes an rqt_graph button. Install
the demo packages if needed:
```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \
File truncated at 100 lines see the full file
Changelog for package dispatcher
Forthcoming
0.4.4 (2026-09-05 02:08)
-
Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job
Fix "bump" workflow: use pull_request_target so fork-based merges can push tags
-
Fix bump workflow: use pull_request_target to get write token for fork PRs
Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>
-
Initial plan
-
Merge pull request #4 from PastorD/feature/start-checked-on-startup
Add checked-item startup parameter
-
improve config docs
-
fix category type default to match non-category behaviour
-
fix namespace resolution
-
add ros2 examples
-
Add checked-item startup parameter
-
Contributors: copilot-swe-agent[bot], Daniel Pastor
0.4.3 (2026-09-03 16:42)
-
Merge pull request #5 from nasa-jpl/update-authors
update authors
-
fix author name
-
update authors
-
Contributors: Daniel Pastor
0.4.2 (2026-08-31 07:32)
-
Merge pull request #3 from nasa-jpl/fix-rolling
Fix rolling
-
add changelo update
-
use target_link_libraries instead of deprecated ament_target_dependencies
-
Contributors: Daniel Pastor
0.4.0 (2026-06-28 20:40)
- chore: bump version to 0.4.0 [skip ci]
- Merge pull request #1 from nasa-jpl/github-ci add actions and workflows
- add actions and workflows
- Contributors: Daniel Pastor, github-actions[bot]
0.3.0 (2026-06-28 20:02)
- Merge branch 'prepare-public-release' into 'master' update license to Apache. Readme corrections. Manually bump version See merge request robotics/ros2/dispatcher!4
- update license to Apache. Readme corrections. Manually bump version
- Merge branch 'feature/script_categories' into 'master' Add categories to scripts See merge request robotics/ros2/dispatcher!3
- doc image resize
- Updated docs to mention script categories
- Added attribution-free icons
- categories extended to scripts
- Contributors: Daniel Pastor, Daniel Pastor Moreno, jongreen
0.2.0 (2026-04-24)
- manual version bump
- Merge branch 'improve_readme' into 'master' Improve readme See merge request robotics/ros2/dispatcher!2
- fix tests
- add more examples
- add more examples with screenshots
- make start checked optional
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp | |
| std_msgs | |
| sensor_msgs | |
| std_srvs | |
| builtin_interfaces |