github.com/ID-Robots. This page is the index: it maps each repo to its role, its language/stack, and the docs section that covers it in depth.
Fifteen repositories make up the platform today. Twelve are live services or firmware; three (observer, probe, carrier) are stubs — a README.md with generic development principles and no source code yet. Treat the stubs as planned work, not running systems.
Clone URLs follow one pattern —
https://github.com/ID-Robots/<repo>.git. To pull the whole platform into a ~/Projects layout that matches this documentation:How the repos fit together
The repos cluster into functional planes around the Gateway control-plane hub. The Gateway (Flask/Socket.IO) authenticates users and dispatches drone commands over rosbridge; everything else feeds into or hangs off that spine. For the end-to-end request/telemetry/video walkthroughs across these repos, see Platform Architecture Overview and the Ecosystem Overview.The repositories
Control plane
Video plane
Simulation
Network & manual control
Ground hardware & firmware
Deployment
Planned / stub repos
Shared infrastructure (not a repo)
Three backing stores are provisioned byskyhub_terraform and touched by multiple services rather than owned by any single repo:
- PostgreSQL — the shared
skyhubdatabase (user,drone,user_drone_access, and more). Read/written byskyhub_gateway_service,skyhub_ws_proxy, andskyhub_user_vpn. See Database Schema Reference. - Redis — the pub/sub bus for gamepad and telemetry channels, keyed off drone IP. Shared by the Gateway, WS Proxy, and on-drone
skyhub_core. See Redis Channels & MAVLink Port Map. - AWS S3 / ECR — asset storage, VPN peer configs, Terraform state, and the container registry each service pulls images from.
Scoping a cross-repo change
Because SkyHub is a polyrepo with shared infrastructure, some changes cannot stay in one repo:Changing the user / drone / user_drone_access schema
Changing the user / drone / user_drone_access schema
These tables are read by three repos simultaneously:
skyhub_gateway_service (ORM models), skyhub_ws_proxy (drone IP lookup), and skyhub_user_vpn (iptables rule generation). A migration in the Gateway ripples into VPN isolation and gamepad routing — coordinate all three.Touching the rosbridge topic contract
Touching the rosbridge topic contract
The Gateway’s command/telemetry contract on
:9090 is implemented by both skyhub_core (physical) and skyhub_sitl (simulated). A new topic or field must be added to both, or SITL and physical drones will diverge.Adding or moving a manual-control command
Adding or moving a manual-control command
Manual gamepad control does not flow through the Gateway. It travels Dashboard →
skyhub_ws_proxy → Redis → the agent half of skyhub_core’s application image. Changes here span the Dashboard, WS Proxy, and Core — never the Gateway.Changing the video pipeline
Changing the video pipeline
A single stream crosses four repos: producer (
skyhub_core or skyhub_sitl) → skyhub_whip → skyhub_janus → consumer (skyhub_dashboard), with the Gateway creating the room. SDP/codec/room-ID changes must be verified end-to-end.
