# Is OTA for ROS 2 robots a solved problem?

**URL:** <https://discourse.openrobotics.org/t/is-ota-for-ros-2-robots-a-solved-problem/58933>\
**Category:** ROS General\
**Tags:** release, ros2, docker, rolling, deployment\
**Created:** [October 18, 2026, 11:05pm UTC](https://discourse.openrobotics.org/t/is-ota-for-ros-2-robots-a-solved-problem/58933 "2026-10-18T23:05:42Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![maxh1t](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/maxh1t/32/34170_2.png) [@maxh1t](https://discourse.openrobotics.org/u/maxh1t)\
**Post date:** [October 18, 2026, 11:05pm UTC](https://discourse.openrobotics.org/t/is-ota-for-ros-2-robots-a-solved-problem/58933/1 "2026-10-18T23:05:42Z")

</div>

I could not find anything out there built specifically for OTA updates in the ROS 2 ecosystem. Coming from the web I wanted to see how close I could get to the developer experience I know, so I built a small project on a Raspberry Pi. The device pulls new container images from GitHub releases, runs a health check and rolls back automatically if a release is broken.

It turned out to be harder than just shipping Docker containers. My updater for example could not update itself. A/B updates seem to solve that, but each approach has its trade-offs.

So I would love to hear from people who run robots in production. What did you pick and why? Is anything still painful with Mender, balena or other tools or do they already cover everything?

Write-up: [The code was the easy part - Max Riazantsev](https://maxriazantsev.substack.com/p/the-code-was-the-easy-part)  
Code: [https://github.com/maxriazantsev/vision-stand](https://github.com/maxriazantsev/vision-stand)

 ![vision-stand-photo](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/4/9/49f0e51bcc0f7ed23183ccfee32e7cf6d58539b7.jpeg)

---

<div class="post-metadata">

**Author:** ![JRTG](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/jrtg/32/15378_2.png) [@JRTG](https://discourse.openrobotics.org/u/JRTG)\
**Post date:** [October 19, 2026, 6:01am UTC](https://discourse.openrobotics.org/t/is-ota-for-ros-2-robots-a-solved-problem/58933/2 "2026-10-19T06:01:29Z")

</div>

There recently was a related thread: [How are you handling firmware updates on fleet robots without bricking one?](https://discourse.openrobotics.org/t/how-are-you-handling-firmware-updates-on-fleet-robots-without-bricking-one/57050)

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [October 19, 2026, 7:43am UTC](https://discourse.openrobotics.org/t/is-ota-for-ros-2-robots-a-solved-problem/58933/3 "2026-10-19T07:43:51Z")

</div>

Very nice write-up! You said MacOS is not really supported. Did you go the Homebrew way or the Pixi way?
