Centralized management and monitoring for Robotont robots.
Initial scope:
- Provision Robotont computers using Ansible
- Update Robotont ROS software
- Update Robotont firmware
- Provide a simple management interface using Semaphore
- Monitor Robotont health using Prometheus and Grafana
Planned architecture:
- Ansible for configuration and deployment
- Semaphore as the management UI
- Prometheus for metrics collection
- Grafana for monitoring
- Docker Compose for management-server services
Future work may include:
- Automated Ubuntu installation
- Containerized Robotont runtime
- More advanced inventory management
- VPN / overlay networking
- Centralized logging
## Status (2026-09-27)
Robots are Docker-only: "1. Setup Ubuntu" prepares the host (network, hostname, udev, Wi-Fi,
Docker Engine) and "2. Deploy" puts the workspaces of this repository onto a robot, pulling the
images that GitHub Actions builds and pushes to GHCR. "3. Switch workspace" selects what runs:
the driver, a demo, later a student environment (docs/07).
Verified end to end on a Robotont 3 Lite (Raspberry Pi 5) with mainboard and lidar; the first
CI image build is pending a push. The upstream robotont-setup playbooks remain as
"Setup ROS (legacy)" for robots that keep ROS on the host (git submodules, docs/06).
Semaphore: cp server/.env.example server/.env, fill in the robot-side values, then
docker compose -f server/compose.yaml up -d. The project, keys, inventory, environment and the
tasks are created automatically (docs/semaphore-setup.md); log in as
admin / admin at http://localhost:3000, run "1. Setup Ubuntu", then "2. Deploy".
The same from a terminal:
git clone --recurse-submodules git@github.com:robotont/robotont-management.git
cd robotont-management
ansible-playbook playbooks/setup_ubuntu.yml -K -e robot_address=robotont-123.local -e robotont_id=123 -e robot_type=3lite -e robotont_camera=false \
-e wifi_hotspot_password=... -e wifi_client_ssid=... -e wifi_client_password=...
ansible-playbook playbooks/deploy.yml -K -e robotont_id=123
ansible-playbook playbooks/switch_workspace.yml -K -e robotont_id=123 -e workspace=test-talker
robot/ deployed to /srv/robotont: workspaces/, images/ (Dockerfiles), releases/ (pinned sources), bin/
.github/workflows/ images.yml: builds robotont-ros per release and pushes to GHCR
playbooks/ setup_ubuntu, deploy, switch_workspace (Semaphore tasks 1 to 3); setup_ros (legacy);
status (command-line report until Grafana)
roles/ robotont_headless (Ubuntu Server prerequisites), robotont_host (hostname, udev, Wi-Fi),
docker, robotont_workspaces
inventory/ groups.yaml, robots/ (one file per enrolled robot, written by Setup Ubuntu), group_vars
server/ Docker Compose for Semaphore, automatic bootstrap
external/robotont-setup/ upstream playbooks for NUC robots (git submodule, pinned; legacy)
external/robotont-setup-rpi/ the same repository at the Raspberry Pi branch (git submodule, pinned; legacy)
patches/ local patches applied to the submodule checkouts at run time (legacy)
test/ sample environment for static checks
docs/ analysis, mapping, plans, runbooks
| Document | Content |
|---|---|
| docs/01-repository-map.md | Which repositories and branches matter, ROS 1 vs ROS 2, versioning conventions found |
| docs/02-existing-ansible-analysis.md | How robotont-setup provisions a robot today, task by task, and what blocks fleet use |
| docs/03-provisioning-steps-mapping.md | Every post-install step and where it lands in the fleet roles and playbooks |
| docs/04-software-firmware-versioning.md | Software deployment and versioning, firmware flashing options, monitoring signals |
| docs/05-implementation-plan.md | Decisions, target layout, steps with tests, upstream fixes, open questions (later phases) |
| docs/06-v1-reproduce-current-setup.md | Legacy host-ROS setup: how the upstream playbooks run from here, the submodules, test log |
| docs/07-container-runtime.md | Workspaces: switching, images and CI, devices, monitoring hooks, runbook, phases, test log |
| docs/semaphore-setup.md | The local Semaphore: automatic setup, the tasks and their dialog fields |
| docs/08-hardware-test-guide.md | Step-by-step manual verification on a robot: host setup, workspaces, known issues |

