diff --git a/backend/pyproject.toml b/backend/pyproject.toml
index ed2d8b3..96d29ff 100644
--- a/backend/pyproject.toml
+++ b/backend/pyproject.toml
@@ -21,6 +21,7 @@ dependencies = [
"reverse-geocoder==1.5.1",
"sgp4==2.23",
"orjson>=3.10.0",
+ "paho-mqtt>=1.6.0",
"slowapi==0.1.9",
"uvicorn==0.34.0",
"yfinance==0.2.54",
diff --git a/frontend/src/components/InfonetTerminal/NetworkStats.tsx b/frontend/src/components/InfonetTerminal/NetworkStats.tsx
index cd5de3f..9c36a37 100644
--- a/frontend/src/components/InfonetTerminal/NetworkStats.tsx
+++ b/frontend/src/components/InfonetTerminal/NetworkStats.tsx
@@ -49,10 +49,12 @@ export default function NetworkStats() {
}, []);
const nodeColor = stats.syncOutcome === 'ok' ? 'text-green-400'
+ : stats.syncOutcome === 'running' ? 'text-amber-400'
: stats.nodeEnabled ? 'text-amber-400' : 'text-gray-600';
const nodeLabel = stats.syncOutcome === 'ok' ? 'CONNECTED'
: stats.syncOutcome === 'running' ? 'SYNCING'
- : stats.nodeEnabled ? 'SYNCING' : 'OFFLINE';
+ : stats.syncOutcome === 'error' || stats.syncOutcome === 'fork' ? 'RETRYING'
+ : stats.nodeEnabled ? 'WAITING' : 'OFFLINE';
return (
diff --git a/uv.lock b/uv.lock
index fd7aae5..7719fd3 100644
--- a/uv.lock
+++ b/uv.lock
@@ -77,6 +77,7 @@ dependencies = [
{ name = "feedparser" },
{ name = "httpx" },
{ name = "orjson" },
+ { name = "paho-mqtt" },
{ name = "playwright" },
{ name = "playwright-stealth" },
{ name = "pydantic" },
@@ -110,6 +111,7 @@ requires-dist = [
{ name = "feedparser", specifier = "==6.0.10" },
{ name = "httpx", specifier = "==0.28.1" },
{ name = "orjson", specifier = ">=3.10.0" },
+ { name = "paho-mqtt", specifier = ">=1.6.0" },
{ name = "playwright", specifier = "==1.50.0" },
{ name = "playwright-stealth", specifier = "==1.0.6" },
{ name = "pydantic", specifier = "==2.11.1" },
@@ -981,6 +983,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" },
]
+[[package]]
+name = "paho-mqtt"
+version = "2.1.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/39/15/0a6214e76d4d32e7f663b109cf71fb22561c2be0f701d67f93950cd40542/paho_mqtt-2.1.0.tar.gz", hash = "sha256:12d6e7511d4137555a3f6ea167ae846af2c7357b10bc6fa4f7c3968fc1723834", size = 148848, upload-time = "2024-04-29T19:52:55.591Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c4/cb/00451c3cf31790287768bb12c6bec834f5d292eaf3022afc88e14b8afc94/paho_mqtt-2.1.0-py3-none-any.whl", hash = "sha256:6db9ba9b34ed5bc6b6e3812718c7e06e2fd7444540df2455d2c51bd58808feee", size = 67219, upload-time = "2024-04-29T19:52:48.345Z" },
+]
+
[[package]]
name = "pandas"
version = "2.3.3"