System for Articulated Intelligence and Navigation Tasks
SAINT.OS is a ROS2-based operating system for track-based mobile robots featuring dual manipulator arms and an articulated head system. Designed to run on Raspberry Pi hardware with a distributed node architecture.
- Distributed Architecture: Central server with multiple peripheral nodes (head, arms, tracks, console)
- Multiple Input Sources: WebSocket, Unreal Engine LiveLink, iOS/Android face tracking, RC controllers
- Unified Firmware: Single firmware image with role-based node adoption
- Real-time Control: Low-latency input routing with configurable bindings
- OTA Updates: Over-the-air firmware updates for all nodes
- Steam Deck Support: Native controller app with gyro, touchpad, and back button support
┌─────────────────────────────────────────────────────────────────┐
│ SAINT.OS Server │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────────────┐ │
│ │ WebSocket │ │ LiveLink │ │ Input/Output Router │ │
│ │ Server │ │ Receiver │ │ (configurable maps) │ │
│ └──────────────┘ └──────────────┘ └────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ ROS2
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Head │ │ Arms │ │ Tracks │
│ Node │ │ Node │ │ Node │
└─────────┘ └─────────┘ └─────────┘
The central coordinator running on Raspberry Pi 4/5:
- ROS2 node management and topic bridging
- WebSocket API for external control
- LiveLink receiver for Unreal Engine and face tracking
- Web administration interface
- Firmware repository and OTA distribution
Cross-platform Tauri application for remote control:
- Frontend: Angular 19 + TypeScript + Tailwind CSS
- Backend: Rust with native input handling
- Platforms: Steam Deck (SteamOS), macOS, Windows, Linux
- Features: Gamepad input, gyro control, touchpad support, customizable bindings
Unified firmware for peripheral nodes:
- Supports Raspberry Pi Pico W, ESP32-S3, and Raspberry Pi 4/5
- micro-ROS integration for ROS2 communication
- Role-based adoption (head, arms, tracks, console)
- GPIO control and sensor interfaces
- Ubuntu 22.04/24.04 (server) or macOS/Windows (development)
- ROS2 Humble or Iron
- Node.js 18+ and npm (for controller app)
- Rust toolchain (for controller app)
# Clone the repository
git clone https://github.com/your-org/saintos.git
cd saintos
# Install ROS2 dependencies
rosdep install --from-paths server --ignore-src -y
# Build (from the workspace root — colcon discovers the `server/` package)
colcon build
# Source and run
source install/setup.bash
ros2 launch saint_os server.launch.pycd controller
# Install dependencies
npm install
# Development
npm run tauri dev
# Build for production
npm run tauri buildSee INSTALL.md for detailed installation instructions.
- docs/SAINT_OS_SPEC.md — Full system specification
- docs/HARDWARE.md — Hardware requirements and supported platforms
- INSTALL.md — Source-build installation guide (dev machines)
- server/docs/SERVER_GUIDE.md — Operator guide: install, flash initial nodes, apply OTA updates, add peripherals, author routing sheets
- server/docs/DEPLOYMENT.md — Lower-level deployment reference (systemd, netplan, monitoring, security)
- controller/README.md — Controller build & deployment (Steam Deck Flatpak path + native dev mode)
- controller/docs/SHEETS_BINDINGS.md — Binding controller inputs to server routing-sheet WebSocket inputs
- controller/docs/BINDINGS_SYSTEM.md — Bindings data model (input sources, action types, preset panels)
| Platform | Status |
|---|---|
| Raspberry Pi 5 | Recommended |
| Raspberry Pi 4 | Supported |
| x86_64 Linux | Development |
| macOS (ARM) | Development |
| Platform | Status |
|---|---|
| Raspberry Pi Pico W | Recommended |
| ESP32-S3 | Supported |
| Raspberry Pi 4/5 | Supported |
| Platform | Status |
|---|---|
| Steam Deck | Primary target |
| Linux | Supported |
| macOS | Supported |
| Windows | Supported |
[Add license information]
[Add contribution guidelines]