Phoenix LiveView beyond SaaS: building a real-time robotics Control Tower


Phoenix LiveView is usually associated with real-time web applications and SaaS dashboards. But what happens when the browser becomes an operational interface for a fleet of physical machines?
In the Fleet Management Platform built with Thoro.ai, it became the foundation of a Control Tower for monitoring and managing autonomous robots directly from the browser.
Operators can see robot positions in real time, overlaid on the actual site map, monitor their statuses, and review telemetry data. They can also use the Callbox feature to summon a robot to a selected waypoint without interacting with the machine directly.
Why Phoenix LiveView was a good fit for Thoro.ai's robotics platform
Asked why Phoenix LiveView was a good fit for this UI, and what it simplified compared to maintaining a separate frontend app, Curiosum CTO Michal Buszkiewicz said: ‘Phoenix LiveView for building the UI allowed us to bring it closer to the data ingestion mechanisms, in a way, without making both sides coupled too tightly.’
Michal stresses that Phoenix’s simplicity of usage alongside live update mechanisms including Phoenix PubSub has allowed the team to optimize their workload. ‘More than ever, a single person can own entire feature work packages as opposed to needing specialist backend and frontend engineers.’, he says.
But displaying live information is only one part of the challenge. The interface needs to stay aligned with the current state of physical devices while operators are monitoring the fleet and triggering actions from the browser.
Challenges of connecting Phoenix LiveView with real-time robot data
Connecting live robot data with the Control Tower interface was quite complex. According to engineer Mateusz Osiński, challenges start right when the page has to be initially served. ‘As maintaining a persistent snapshot of the view all the time is not feasible, you have to rely on telemetry to make the user confident that what they see is the complete, consistent picture’, he says.
A different important aspect was avoiding constant status queries when nobody is viewing. ‘While LiveView sessions must remain consistent as frequent robot updates arrive, we must prevent flooding MQTT when there is no human being watching the data’, says Mateusz.
There are more intricacies to consider. ‘We had to decide which updates go to which screens, keep the data from the robots and the portal in agreement, and be clear about what the operator needs to see versus what can just stay in the logs’, he says.
Data routing and scoping have also been an important consideration. Mateusz says, ’What comes to us via MQTT needs to be properly grouped and routed to the correct set of viewers’, also adding that this aspect is closely related to the reconciliation of data contracts between the machines and the portal. ‘A bad interpretation in the UI usually means missing information. A mismatched type in a command payload is worse: the robot may reject it, or in the worst case mis-handle it. The contract between portal and machine has to be stricter on the way out than on the way in.’
Why Elixir and Phoenix LiveView work well for robotics systems
Asked what this implementation demonstrated about using LiveView in operational or hardware-connected systems, Michal says that ‘what we get using Phoenix LiveView, is desktop-like responsiveness, the ease of wiring up telemetry and commands to the UI, real-time visualization, and BEAM’s high reliability’.
The system manages hundreds of physical devices concurrently across a global fleet and thanks to Elixir and Phoenix LiveView it’s more than just a real-time dashboard - it’s a fully featured operational interface connecting warehouse teams with autonomous fleets.
Read the full Thoro.ai’s case study to see how Curiosum built a fleet management platform for autonomous warehouse robots using Elixir, Phoenix LiveView, MQTT, and the BEAM.
The Thoro.ai Control Tower at a glance
- System: Fleet Management Platform / Control Tower
- Use case: monitoring and managing autonomous warehouse robots
- Backend: Elixir
- Real-time interface: Phoenix LiveView
- Messaging and telemetry: MQTT
- Real-time updates: Phoenix PubSub
- Scale: hundreds of physical devices across a global fleet
Want to power your product with Elixir? We’ve got you covered.
Related posts
Dive deeper into this topic with these related posts
You might also like
Discover more content from this category
In Elixir Meetup #12, Caleb Beers introduces Periscope, a powerful open-source tool designed to enhance debugging and introspection in Phoenix LiveView apps. It's essential for developers looking to improve their workflow and efficiency.
Security is a fundamental aspect of web development that should never be overlooked.
In my previous article, I described how to use Circuits.UART library to read and display data from the Arduino microcontroller using the serial monitor. This time, I want to go a step further and show how to use sensors to generate sounds.



