<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/phoenix-liveview-beyond-saas-robotics-fleet-management-tisyoo16o" -->

---
title: Phoenix LiveView beyond SaaS: Robotics fleet management
description: Curiosum built a Control Tower interface for Thoro.ai's autonomous warehouse robot fleet using Elixir, Phoenix LiveView, MQTT, and Phoenix PubSub. The system...
canonical: https://daily.dev/posts/phoenix-liveview-beyond-saas-robotics-fleet-management-tisyoo16o
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Phoenix LiveView beyond SaaS: Robotics fleet management | daily.dev
og:description: Curiosum built a Control Tower interface for Thoro.ai's autonomous warehouse robot fleet using Elixir, Phoenix LiveView, MQTT, and Phoenix PubSub. The system...
og:url: https://daily.dev/posts/phoenix-liveview-beyond-saas-robotics-fleet-management-tisyoo16o
og:image: https://api.daily.dev/og/posts/TISYoo16O.png
og:image:alt: Phoenix LiveView beyond SaaS: Robotics fleet management
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Phoenix LiveView beyond SaaS: Robotics fleet management

**[Curiosum](https://daily.dev/sources/curiosum)** · 4 min read · 0 upvotes · 0 comments

## Summary

Curiosum built a Control Tower interface for Thoro.ai's autonomous warehouse robot fleet using Elixir, Phoenix LiveView, MQTT, and Phoenix PubSub. The system lets operators track robot positions on a live map, monitor telemetry, and summon robots via a Callbox feature, managing hundreds of devices globally. Engineers discuss challenges around initial page state consistency, avoiding MQTT flooding when nobody is watching, routing data to the correct viewers, and ensuring stricter contracts for outgoing commands than incoming telemetry to avoid robots mishandling bad payloads.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://curiosum.com/blog/phoenix-liveview-robotics-fleet-management>

## Questions this post answers

### How do you prevent flooding MQTT with robot status updates when no one is viewing the dashboard?

In Thoro.ai's Control Tower, built with Elixir and Phoenix LiveView, the system avoids constant status queries by only pulling telemetry over MQTT when a human operator is actively viewing the data, rather than continuously polling regardless of viewership. This keeps LiveView sessions consistent with frequent robot updates while reducing unnecessary MQTT traffic.

_Teams designing telemetry-heavy real-time UIs can find similar architecture patterns on daily.dev._

### Why is Phoenix LiveView a good choice for building operational interfaces connected to physical hardware like robots?

Phoenix LiveView suits hardware-connected operational interfaces because it gives desktop-like responsiveness, simplifies wiring telemetry and commands directly to the UI, supports real-time visualization, and inherits BEAM's high reliability. In Thoro.ai's robot fleet platform, this let a single engineer own full feature packages instead of requiring separate specialist backend and frontend developers.

_Developers weighing LiveView against separate frontend stacks can track real-world case studies like this on daily.dev._

### Why should command payloads sent to a robot have stricter validation than telemetry data coming from it?

Outgoing command payloads to robots need stricter contracts than incoming telemetry because a bad interpretation of incoming data typically just means missing information in the UI, while a mismatched type in an outgoing command can cause the robot to reject it or, worse, mishandle it physically. The portal-to-machine contract is deliberately made stricter than the machine-to-portal one.

_Engineers building safety-critical hardware interfaces can find related architecture discussions on daily.dev._

## Similar posts on daily.dev

- [Why I chose Phoenix LiveView over Rails, Laravel, and Next.js](https://daily.dev/posts/why-i-chose-phoenix-liveview-over-rails-laravel-and-next-js-yi3juefmt) · Hacker News · 3 upvotes · 0 comments
- [LiveView and Web Components](https://daily.dev/posts/liveview-and-web-components-pldqr8qpu) · Elixir Forum · 1 upvotes · 0 comments
- [How we built an AI-first operations platform at Tuist](https://daily.dev/posts/how-we-built-an-ai-first-operations-platform-at-tuist-ire7tgk5n) · 
      Tuist
     · 0 upvotes · 0 comments

---

Tags: [#backend](https://daily.dev/tags/backend), [#robotics](https://daily.dev/tags/robotics), [#elixir](https://daily.dev/tags/elixir), [#liveview](https://daily.dev/tags/liveview), [#real-time-systems](https://daily.dev/tags/real-time-systems)

[View this post on daily.dev](https://daily.dev/posts/phoenix-liveview-beyond-saas-robotics-fleet-management-tisyoo16o)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Phoenix LiveView beyond SaaS: Robotics fleet management","url":"https://daily.dev/posts/phoenix-liveview-beyond-saas-robotics-fleet-management-tisyoo16o","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/phoenix-liveview-beyond-saas-robotics-fleet-management-tisyoo16o"},"datePublished":"2026-08-18T11:31:56.510Z","dateModified":"2026-08-18T11:39:57.249Z","description":"Curiosum built a Control Tower interface for Thoro.ai's autonomous warehouse robot fleet using Elixir, Phoenix LiveView, MQTT, and Phoenix PubSub. The system...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/51c6b334ff0abfa0dcba1ce4bb47e1a2?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/51c6b334ff0abfa0dcba1ce4bb47e1a2?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Curiosum","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Curiosum","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/261877579b1d412ab55712f8ad331574","url":"https://daily.dev/sources/curiosum"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/phoenix-liveview-beyond-saas-robotics-fleet-management-tisyoo16o","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"backend,robotics,elixir,liveview,real-time-systems","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Curiosum","item":"https://daily.dev/sources/curiosum"},{"@type":"ListItem","position":3,"name":"Phoenix LiveView beyond SaaS: Robotics fleet management"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/phoenix-liveview-beyond-saas-robotics-fleet-management-tisyoo16o#faq","mainEntity":[{"@type":"Question","name":"How do you prevent flooding MQTT with robot status updates when no one is viewing the dashboard?","acceptedAnswer":{"@type":"Answer","text":"In Thoro.ai's Control Tower, built with Elixir and Phoenix LiveView, the system avoids constant status queries by only pulling telemetry over MQTT when a human operator is actively viewing the data, rather than continuously polling regardless of viewership. This keeps LiveView sessions consistent with frequent robot updates while reducing unnecessary MQTT traffic. Teams designing telemetry-heavy real-time UIs can find similar architecture patterns on daily.dev."}},{"@type":"Question","name":"Why is Phoenix LiveView a good choice for building operational interfaces connected to physical hardware like robots?","acceptedAnswer":{"@type":"Answer","text":"Phoenix LiveView suits hardware-connected operational interfaces because it gives desktop-like responsiveness, simplifies wiring telemetry and commands directly to the UI, supports real-time visualization, and inherits BEAM's high reliability. In Thoro.ai's robot fleet platform, this let a single engineer own full feature packages instead of requiring separate specialist backend and frontend developers. Developers weighing LiveView against separate frontend stacks can track real-world case studies like this on daily.dev."}},{"@type":"Question","name":"Why should command payloads sent to a robot have stricter validation than telemetry data coming from it?","acceptedAnswer":{"@type":"Answer","text":"Outgoing command payloads to robots need stricter contracts than incoming telemetry because a bad interpretation of incoming data typically just means missing information in the UI, while a mismatched type in an outgoing command can cause the robot to reject it or, worse, mishandle it physically. The portal-to-machine contract is deliberately made stricter than the machine-to-portal one. Engineers building safety-critical hardware interfaces can find related architecture discussions on daily.dev."}}]}
```

