Operations
From development to production deployment, fleet management, and ongoing maintenance. This section covers everything you need to ship your HORUS application to real hardware.
Quick Reference
| Task | Command |
|---|---|
| Deploy to one robot | horus deploy pi@192.168.1.100 |
| Deploy to named target | horus deploy jetson-01 |
| Deploy to all robots | horus deploy --all |
| List deploy targets | horus deploy --list |
| Monitor running system | horus monitor |
| Check system health | horus doctor |
| View flight recorder | horus blackbox |
| Record a session | horus run --record session1 |
| Replay a recording | horus record replay session1 |
Deployment
New to deploying? See Deploy to Your Robot for the full setup guide — from preparing your robot to running your first deploy.
Single Robot
Deploy directly to a host:
# Build, sync, and deploy
horus deploy pi@192.168.1.100
# Deploy and run immediately
horus deploy pi@192.168.1.100 --run
# Deploy to specific architecture
horus deploy ubuntu@jetson.local --arch aarch64
# Preview without deploying
horus deploy pi@192.168.1.100 --dry-run
Named Targets
Configure robots in deploy.yaml (project root):
targets:
jetson-01:
host: nvidia@10.0.0.1
arch: aarch64
dir: ~/robot
jetson-02:
host: nvidia@10.0.0.2
arch: aarch64
dir: ~/robot
arm-controller:
host: pi@10.0.0.10
arch: aarch64
dir: ~/arm
port: 2222
identity: ~/.ssh/robot_key
Deploy by name:
horus deploy jetson-01
horus deploy jetson-01 --run
Fleet Deployment
Deploy to multiple robots at once:
# Multiple named targets
horus deploy jetson-01 jetson-02 jetson-03
# All targets from deploy.yaml
horus deploy --all
# Preview fleet deployment
horus deploy --all --dry-run
# List all configured targets
horus deploy --list
Fleet deploy builds once (shared binary for same architecture), then syncs to each robot sequentially. Confirmation is asked once for the entire fleet, not per robot.
If a deployment fails for one robot, the fleet continues to the next. A summary is printed at the end:
HORUS Fleet Deploy (3 targets)
--- [1/3] jetson-01
[checkmark] jetson-01 done
--- [2/3] jetson-02
[checkmark] jetson-02 done
--- [3/3] jetson-03
[x] jetson-03 failed: SSH connection refused
=== Fleet Deploy Summary
[checkmark] 2/3 targets deployed successfully
Supported Architectures
| Architecture | Alias | Common Robots |
|---|---|---|
aarch64 | arm64, jetson, pi4, pi5 | Raspberry Pi 4/5, Jetson Nano/Xavier/Orin |
armv7 | arm, pi3, pi2 | Raspberry Pi 2/3, older ARM boards |
x86_64 | x64, amd64, intel | Intel NUC, standard PCs |
native | host, local | Same as build machine |
Monitoring
Web Dashboard
horus monitor
# Opens web dashboard at http://localhost:4200
The monitor shows:
- Active nodes with health status, tick rates, CPU/memory usage
- Topic graph with message flow and rates
- Parameters with live editing
- Packages with install/uninstall
- API Docs with searchable symbol browser and topic flow visualization
- Logs with filtering by node and severity
TUI Dashboard
horus monitor --tui
# Terminal-based dashboard (no browser needed)
Programmatic Access
# Node status
horus node list --json
# Topic rates
horus topic list --json
# System health
horus doctor --json
Environment Management
Reproducible Builds
horus.lock pins every dependency to an exact version. Commit it to git, and horus build on another machine installs identical deps.
Flight Recorder (BlackBox)
The BlackBox records the last N events before a crash — like an airplane's black box.
// Enable in code
let scheduler = Scheduler::new()
.blackbox(64) // Keep last 64MB
.tick_rate(100_u64.hz());
# View after crash
horus blackbox
horus blackbox --json
horus blackbox anomalies
Record and Replay
Record a session for debugging or regression testing:
# Record
horus run --record session1
# List recordings
horus record list
# Replay
horus record replay session1
# Compare two recordings
horus record diff session1 session2
# Export for analysis
horus record export session1 --format mcap
Health Checks
# Full system health check
horus doctor
# JSON output for CI
horus doctor --json
The doctor checks:
- Rust toolchain (cargo, rustc, clippy, fmt)
- Python toolchain (python3, ruff, pytest)
- Project manifest validity
- Shared memory status
- Disk usage
- Plugin registry connectivity
Deployment Checklist
Before deploying to production:
- Enable safety monitoring —
.watchdog(500_u64.ms()) - Configure real-time —
.prefer_rt()for graceful RT,.require_rt()for strict - Run tests —
horus test - Check health —
horus doctor - Deploy —
horus deploy <target> --run - Monitor —
horus monitorfrom your development machine
See Production Deployment for the full guide.
See Also
- Production Deployment — RT setup, safety, performance tuning
- Scheduler Configuration — Tick rates, budgets, deadlines
- Package Management — Installing and managing packages
- CLI Reference — All 46+ commands