# Built a free CLI to diagnose ROS2 multi-machine setups: pip install ros2forge

**URL:** <https://discourse.openrobotics.org/t/built-a-free-cli-to-diagnose-ros2-multi-machine-setups-pip-install-ros2forge/55017>\
**Category:** ROS Ideas\
**Tags:** ros2, cli\
**Created:** [May 22, 2026, 2:07pm UTC](https://discourse.openrobotics.org/t/built-a-free-cli-to-diagnose-ros2-multi-machine-setups-pip-install-ros2forge/55017 "2026-05-22T14:07:05Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ambigram](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/ambigram/32/33983_2.png) [@ambigram](https://discourse.openrobotics.org/u/ambigram)\
**Post date:** [May 22, 2026, 2:07pm UTC](https://discourse.openrobotics.org/t/built-a-free-cli-to-diagnose-ros2-multi-machine-setups-pip-install-ros2forge/55017/1 "2026-05-22T14:07:05Z")

</div>

I’m a first-year engineering student on the IIT Bombay Mars Rover team.  
I kept losing days to the same ROS2 issues: DDS  
discovery failures, UFW silently blocking UDP, clock drift causing  
handshake failures, nodes not visible across devices even when ping worked.

Built a diagnostic CLI that catches all of this in one command:

`pip install ros2forge`  
`rosforge doctor`

It checks: ROS2 install, RMW/DDS config, ROS\_DOMAIN\_ID, network  
interfaces, multicast, UFW/iptables rules, DDS port availability,  
NTP sync, daemon health, and peer reachability (ICMP + UDP 7400).

Every failure comes with the exact fix command.

Also includes `rosforge scaf`: scaffolds a complete workspace  
(DDS config, install scripts, node boilerplate) from an interactive prompt.

GitHub: [GitHub - emphiasarmlorn/ros2forge: ROS2 workspace scaffolder + multi-machine diagnostics toolkit · GitHub](https://github.com/emphiasarmlorn/ros2forge)

Would love feedback from people who’ve hit these issues.

---

<div class="post-metadata">

**Author:** ![tfoote](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/tfoote/32/3813_2.png) [@tfoote](https://discourse.openrobotics.org/u/tfoote)\
**Post date:** [May 22, 2026, 3:13pm UTC](https://discourse.openrobotics.org/t/built-a-free-cli-to-diagnose-ros2-multi-machine-setups-pip-install-ros2forge/55017/2 "2026-05-22T15:13:22Z")

</div>

Thanks for making a tool that helps avoid some of these issues.

You say it’s “Free” in the title but for software the canonical way to make that happen is to apply a license to it.

Without a license technically all rights are reserved by default.

If you’d like an overview please take a look at: [https://choosealicense.com/](https://choosealicense.com/)

In the Open Robotics community the most common license is Apache-2.0

Slightly related have you considered contributing these as additional checks to [ros2doctor](https://index.ros.org/p/ros2doctor/) ? There’s some introduction how to use it at [Using ros2doctor to identify issues — ROS 2 Documentation: Rolling documentation](https://docs.ros.org/en/rolling/Tutorials/Beginner-Client-Libraries/Getting-Started-With-Ros2doctor.html)

And there’s documentation how to add new python entry points to your python package such that ros2doctor will find them and run them on your system: [Add New Checks](https://github.com/ros2/ros2cli/tree/rolling/ros2doctor#add-new-checks)

---

<div class="post-metadata">

**Author:** ![ambigram](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/ambigram/32/33983_2.png) [@ambigram](https://discourse.openrobotics.org/u/ambigram)\
**Post date:** [May 23, 2026, 6:59pm UTC](https://discourse.openrobotics.org/t/built-a-free-cli-to-diagnose-ros2-multi-machine-setups-pip-install-ros2forge/55017/3 "2026-05-23T18:59:11Z")

</div>

Thanks a lot for the response! I’ll definitely look into ros2doctor as well as the license details you pointed out.
