DendROS
Colorized ROS 2 terminal output.
DendROS shadows the ros2 command with a shell function. When you run ros2 launch or ros2 run, the output is piped through a lightweight Python colorizer that reads a small YAML config from your package, matches the [node-N] prefix on each line, and applies group colors. Every other ros2 subcommand passes through unchanged. Packages without a config are completely unaffected β no changes to launch files, no exit-code clobbering, no buffering.
Features
Group-based coloring
Assign colors to logical groups β localization, navigation, hardware. Every node in a group shares its color and badge label.
Smart node matching
Exact names, namespaced paths, and fnmatch wildcards. nav2_* covers every Nav2 node in one pattern.
Scaffold in one command
dendros init scans your launch files and writes a ready-to-edit dendROS.yaml automatically.
Interactive config TUI
dendros config opens a curses TUI for managing global defaults β no YAML editing required.
Crash alert
Inline banner flags crashed nodes the moment they die, lists exit codes, and reprints periodically so you never miss it.
Traceback highlighting
Python tracebacks colored automatically β bold red header, dim red frames, even when prefixed with a node name.
All ros2 CLI commands wrapped
Node list, node info, service list, action list, topic list, param list, param describe β all colorized with the same group colors and badges, zero config overhead. [See all β](reference.md#ros2--intercepted-subcommands)
Parameter change alert
Inline notification whenever a node's parameter changes at runtime β shows node, param name, and oldβnew value directly in the launch log.
Truly non-invasive
No launch file changes. Exit codes preserved. DENDROS_DISABLE=1 bypasses everything instantly.
Quick start
colcon build --packages-select my_bringup
source install/setup.bash
ros2 launch my_bringup main.launch.py
See Installation for the full setup or Quick Start for a step-by-step walkthrough.