# SkyHub > SkyHub is an end-to-end platform for operating fleets of autonomous drones (physical and SITL-simulated): an on-drone OS (SkyCore/Core), a Flask cloud Gateway Service, and an Angular Dashboard, deployed on AWS. This documentation is the single source of truth, structured so both humans and AI agents can navigate it. Each page carries `summary` and `read_when` hints. Repositories (github.com/ID-Robots): skyhub_core, skyhub_gateway_service, skyhub_dashboard, skyhub_terraform, plus ecosystem services (janus, whip, sitl, user_vpn, ws_proxy, nexus). ## Getting Started - [SkyHub Platform Introduction](https://docs.skyhub.ai): What SkyHub is: a drone-fleet operations platform spanning the Dashboard, Gateway, SkyCore Drone OS, AWS infrastructure, and ecosystem services. Explains the control plane vs video plane vs network plane and how the six repos fit together. - [Core Concepts & Glossary](https://docs.skyhub.ai/getting-started/concepts): Key terms and entities used throughout: drone (physical vs SITL), rosbridge, MAVROS/MAVLink, mavp2p, WireGuard planes (10.69/10.70/10.71), Janus VideoRoom, WHIP, redispad, execution, mission vs geofence, the three auth models, and Cloud Map service discovery. - [Local Development Quickstart](https://docs.skyhub.ai/getting-started/quickstart): How to run the stack locally: Gateway via docker-compose, Dashboard via ng serve (local/e2e configs), and SkyCore against ArduPilot SITL with the docker-compose.local.yml overlay (mock VPN 10.223.0.0/16, IP_OVERRIDE, TEST camera). - [Repository Map & Ownership](https://docs.skyhub.ai/getting-started/repositories): Table of all repos (gateway_service, dashboard, core, terraform, janus, whip, sitl, user_vpn, ws_proxy, nexus, rover, ugv) plus stub repos (observer, probe, carrier), their language/tech, and their role in the platform. ## Platform Architecture - [Platform Architecture Overview](https://docs.skyhub.ai/architecture/platform-overview): End-to-end topology: Dashboard ↔ Gateway ↔ drones (SkyCore/SITL), the video plane (Janus + WHIP), the network plane (User VPN + jumphost), the control plane (rosbridge + WS Proxy), and shared infra (PostgreSQL, Redis, S3). Includes the platform topology diagram. - [Cross-System Data Flows](https://docs.skyhub.ai/architecture/cross-system-flows): The canonical end-to-end sequences: user command path, telemetry streaming, video pipeline, SITL spawn, mission upload+execute, manual gamepad control, and drone activation/self-update — each with a sequence diagram and the key gotchas. - [Real-time Transport Channels](https://docs.skyhub.ai/architecture/realtime-channels): The three concurrent transports — Socket.IO telemetry (Gateway :5000, ?token=), redispad raw WS commands (WS Proxy :7070, access_token=), and Janus WebRTC video (:8188) — their directions, auth, reconnection/subscription-replay behavior, and why they must not be conflated. - [Authentication & Security Model](https://docs.skyhub.ai/architecture/auth-and-security): The three coexisting auth models: JWT Bearer (UI, HS256, 10min access / 12h refresh, in-memory BLOCKLIST), VPN-source-IP trust (check_vpn_ip for drone callbacks), and token/signature (10-digit activation token, video-room token, Stripe-Signature). Covers the drone-scoped Socket.IO room security caveat and spoofing risks. - [Network & VPN Topology](https://docs.skyhub.ai/architecture/network-topology): WireGuard address plan (server 10.69/16, users 10.70/16, drones 10.71/16), the jumphost as the single public ingress and Docker/rosbridge bridge, Cloud Map internal DNS (skyhub-prod.internal), and IPService CIDR allocation. ## Gateway: HTTP & Socket.IO API - [Gateway Service Overview](https://docs.skyhub.ai/gateway/overview): The Flask/Socket.IO gateway: ~113 HTTP endpoints under /api/v1, 12 blueprints, the response-envelope pattern, thin-route/service-delegation design, and how it brokers UI, drone, and Stripe traffic. - [HTTP API Overview & Auth Models](https://docs.skyhub.ai/gateway/api/overview): Base path /api/v1, the 12 blueprints, get_success_response/get_error_response envelope, and the three auth models. Notes the 201-for-reads and envelope inconsistencies between newer and older routes. - [Authentication & JWT Lifecycle](https://docs.skyhub.ai/gateway/api/authentication): login/refresh/logout/register/activate/reset flows, access(10m)/refresh(12h) expiry, the in-memory BLOCKLIST and its multi-worker limitation, and the 'level' claim added on activation. - [Drone Management & Control Actions](https://docs.skyhub.ai/gateway/api/drones-and-actions): Drone CRUD (402 on subscription limit) and the ~25 /drone/action/* commands (arm/takeoff/land/rtl/guided/set_mode/params/motortest/move/goto/push_mission/geofence/start_mission/video-source), body shapes, and the duplicate arm endpoints. - [Socket.IO Telemetry Streaming](https://docs.skyhub.ai/gateway/api/telemetry-socketio): connect (?token=), subscribe/unsubscribe_telemetry, drone-scoped room naming (drone_{id}_{stream}), stream types, dashboard fan-out and server-side yaw, DO_UNSUBSCRIBE, and the single-stream vs dashboard emission gotcha (only dashboard delivers). - [Executions, Assets & Reports](https://docs.skyhub.ai/gateway/api/executions-assets-reports): VPN-IP-authed drone callbacks (executions start/complete/log/current, authenticate_upload/complete_upload) and JWT UI endpoints (list/get/delete, analyze-log, archive, send-report, flight-stats, report-emails). Covers deferred-report logic and async pymavlink analysis. - [Missions & Geofences API](https://docs.skyhub.ai/gateway/api/missions-geofences): JWT CRUD for missions + mission points and geofences + geofence points (batch/toggle), the array-body [0] quirk, and the MAVLink-compatible fields. - [Billing, Calendar, VPN, Video & Isaac Sim API](https://docs.skyhub.ai/gateway/api/billing-calendar-misc): Stripe billing incl. the signature-verified webhook, calendar events + recurring occurrences (RRULE), VPN config/status, token-authed video-room create + JWT start/stop/restart, and Isaac Sim EC2 control. ## Gateway: Services & Realtime Internals - [Service Layer & get_service Factory](https://docs.skyhub.ai/gateway/services/overview): How services are wired as singletons in app.py, the get_service(drone_type) factory (physical eager, SITL lazy behind ENABLE_SITL), get_vpn_service lazy init, and the DroneService → Physical/SITL inheritance. - [DroneControlService & Rosbridge Dispatch](https://docs.skyhub.ai/gateway/services/drone-control): The rosbridge connection pool, get_client/SITL IP translation, all MAVROS command methods, video-room topic publishing, and Socket.IO telemetry emission with dashboard yaw. Flags the get_param NameError and start_mission AUTO-switch caveat. - [SITL Drone Lifecycle (Docker Orchestration)](https://docs.skyhub.ai/gateway/services/sitl-lifecycle): The 3-container SITL+CORE+GAMEPAD stack plus shared Redis, container numbering/port math, local vs remote Docker (ECR auth), healthcheck/rosbridge waits, default params, and reverse-order cleanup. - [Janus Video Rooms & On-Drone Video Control](https://docs.skyhub.ai/gateway/services/video-rooms): VideoService create/recreate/delete (id==drone.id, h264) and DroneControlService publishing /video_room_* topics; the physical vs SITL bootstrapping difference (physical push is commented out on create). - [S3 Assets, HLS Video & Execution Archives](https://docs.skyhub.ai/gateway/services/assets-archives): AssetService S3 key scheme, presigned upload/download, thumbnails, HLS m3u8 rewriting, atomic two-phase delete; ArchiveService ZIP generation; the thumbnail path inconsistency to reconcile. - [Executions, Log Analysis & Reports](https://docs.skyhub.ai/gateway/services/executions-reports): ExecutionService flight lifecycle + update_flight_stats, LogAnalysisService pymavlink parsing into FlightStats, and ReportService background archive+email pipeline (2-worker ThreadPool). - [Stripe Billing & Vehicle Limits](https://docs.skyhub.ai/gateway/services/billing): SubscriptionService checkout/portal/webhooks, hardcoded EUR120/vehicle/year pricing, and can_user_add_vehicle free-tier (1 SITL) vs paid enforcement that gates drone creation. - [Users, IP Allocation, Calendar & Isaac Sim](https://docs.skyhub.ai/gateway/services/platform-services): UserService bcrypt/email flows and hex-encoded password round-trip, IPService CIDR allocation, Mission/Point/Geofence services, CalendarService recurring events, and the partly-dormant Isaac Sim EC2 services. - [Rosbridge Connection & Reconnect](https://docs.skyhub.ai/gateway/realtime/rosbridge-connection): Connection + SmartSocket internals: bounded outgoing queue and consumer thread, subscription tracking/replay, TCP+WS keepalive, reconnect/backoff/give-up (is_expired), reachability probing, and synchronous service-call RPC. Flags the add-only subscription set and service-id collision. - [Connection Pool & Startup Wiring](https://docs.skyhub.ai/gateway/realtime/connection-pool): drone_mapping pooling keyed by drone_id, connection_lock semantics, ownership checks only on creation, SITL vs physical IP resolution, and the load-bearing startup order that attaches the SocketIO emit callback. ## Gateway: Data, Config & Ops - [Database Schema Overview](https://docs.skyhub.ai/gateway/data/schema-overview): Full table inventory (user, drone, mission, mission_point, mission_execution, asset, user_drone_access, geofence(+point), calendar_event(+occurrence), subscription, payment, isaac_sim_*), the core ER diagram, cascade rules, and the nullable-Enum and timezone gotchas. - [Migrations, DB Connection & Dev Mode](https://docs.skyhub.ai/gateway/data/migrations-connection): DBConnector/postgresql URI/pool settings/DB_* vars, the Alembic chain and single head, and the APP_ENVIRONMENT=dev db.create_all() shortcut and its limitations (no Isaac Sim views, service-import model registration). - [Mission & Geofence MAVLink Format](https://docs.skyhub.ai/gateway/data/mission-waypoint-format): How MissionPoint maps to MAVLink via to_mavlink_waypoint, the auto-TAKEOFF-prepend in push_mission, and GeofencePoint fence commands 5001-5004. Flags the stale CLAUDE.md return-path/RTL/speed description. - [Isaac Sim Tables (Raw SQL, no ORM)](https://docs.skyhub.ai/gateway/data/isaac-sim-raw-sql): The 4 isaac_sim_* tables, 3 views, 2 PL/pgSQL functions and triggers created only in migration e85b13d42b08 and accessed via raw psycopg2 in instance_scheduler_service.py, and what a refactor must preserve. - [Gateway Environment Variables](https://docs.skyhub.ai/gateway/config/environment-variables): Exhaustive table of the gateway's ~80 env vars grouped by concern (Deployment, DB, Auth/JWT, VPN/Jumphost, SITL, Docker, Video, Socket.IO, Rosbridge, Observability, Billing, Email, AWS) with defaults and settings.py-vs-template mismatches. - [Startup, Validation & Composition Root](https://docs.skyhub.ai/gateway/config/startup-validation): main.py boot order: logging-first, import-time JWT_SECRET_KEY guard, validate_critical_config, DBConnector, OTel, blueprint registration, and DEPLOYMENT_ENVIRONMENT vs APP_ENVIRONMENT. - [VPN IP Authentication & Jumphost Routing](https://docs.skyhub.ai/gateway/security/vpn-middleware-jumphost): The check_vpn_ip network-trust model (10.71.* + X-Drone-IP whitelist), which routes use it, and how rosbridge Connection uses JUMPHOST_IP with x-drone-ip/x-drone-port to multiplex drones behind nginx. Includes the spoofing caveat. - [OpenTelemetry & SigNoz Observability](https://docs.skyhub.ai/gateway/observability/opentelemetry-signoz): How tracing/log export is wired, the OTEL_* env vars, the endpoint-path/port footguns, the ignored OTEL_RESOURCE_ATTRIBUTES, and the fact that only auto-instrumentation produces spans. ## Dashboard (Frontend) - [App Shell, Bootstrap & Structure](https://docs.skyhub.ai/dashboard/overview): How the Angular 16 (NgModule) app boots (main.ts → AppModule → AppComponent), the global chrome (toast/confirm/subscription banner/progress bars), root providers, and the monolithic HomeComponent. - [Routing & Lazy Loading](https://docs.skyhub.ai/dashboard/routing): The route tree ('' redirect, lazy AuthGuard-protected /home and /billing, eager /login /register /reset-password), PreloadAllModules behavior, and the missing 404 route. - [Auth: Guard, Interceptor & AuthService](https://docs.skyhub.ai/dashboard/authentication): AuthGuard, AuthInterceptor (Bearer injection, 401 refresh-and-retry, per-URL rules, '1234' fallback), AuthService token lifecycle and 8-minute refresh timer, and the snake_case/camelCase refresh-token pitfall. - [Frontend ↔ Gateway Integration](https://docs.skyhub.ai/dashboard/backend-integration): The four transport channels (REST, Socket.IO telemetry, redispad command WS, Janus video), their env-var config, and how they map to ports 5000/7070/8188. - [Real-time Telemetry Client](https://docs.skyhub.ai/dashboard/telemetry-socketio): WebsocketService: connect handshake, subscribe/unsubscribe events, stream types, TELEMETRY_DATA_TYPES routing into RxJS Subjects, NgZone handling, and subscription replay on reconnect. - [Vehicle Commands & Gamepad (redispad)](https://docs.skyhub.ai/dashboard/vehicle-commands): VehicleCommandService + ControllerDataSenderService + GuidedControlService: gamepad/keyboard/guided-control/LAND commands over the redispad proxy, the guided-control gate, and the ArUco overlay sharing the same proxy. - [Angular Services & REST Reference](https://docs.skyhub.ai/dashboard/services-reference): Catalog of every service (Drone, Mission, Geofence, Asset, Execution, ScheduledEvent, Billing, IsaacSim, User) and the gateway endpoints each calls. - [App State & Video (Janus/WebRTC)](https://docs.skyhub.ai/dashboard/state-and-video): AppStateService BehaviorSubject hub and dialog flags, DroneSubscriptionService bus, ModelCacheService 3-tier GLB caching, and JanusService WebRTC subscription + HLS asset playback. - [Map & Live Vehicle Tracking](https://docs.skyhub.ai/dashboard/features/map-tracking): Mapbox GL + Threebox/Three.js rendering vehicles as 3D compass arrows, GPS position/yaw animation, ground/orientation/flight-path lines, mission spheres, geofence polygons, ruler, and follow-vehicle camera. - [Mission & Waypoint Planning](https://docs.skyhub.ai/dashboard/features/mission-planning): Creating/editing MAVLink waypoint missions (commands 16/22/21/20/178), map-click point creation, OrderList reordering, and upload/start to the vehicle. - [Video, Gimbal & Manual Flight Control](https://docs.skyhub.ai/dashboard/features/video-and-control): Janus video subscriber lifecycle, gimbal/zoom/record/photo commands, ArUco precision-landing overlay, and the three input paths (gamepad, keyboard, virtual joystick) with the guided-control gate and mode/arm/takeoff/land UI. - [Drone Fleet Management](https://docs.skyhub.ai/dashboard/features/fleet-management): Listing/selecting drones, the DroneService action surface, the telemetry HUD (battery, mode, GPS/RTK fix, altitude MSL vs AGL), and selected-drone propagation. - [Environments, Build & CI](https://docs.skyhub.ai/dashboard/build-and-config): Compile-time environment selection (production/aws-dev/development/e2e/local), key env vars, bundle budgets, the two-stage nginx Docker image (port 8001), Jest/Playwright/Biome CI, and the built-but-unregistered service worker. ## Drone OS (SkyCore) - [SkyCore Drone OS Overview](https://docs.skyhub.ai/drone-os/overview): The on-drone microservice architecture (docker-compose profiles: core, camera-proxy, mavproxy, rtk-ntrip, ws_proxy/gamepad, isaac-slam), the three interconnect fabrics (MAVLink via mavp2p, ROS2 DDS, Redis), and how the cloud attaches at rosbridge :9090. - [Microservices & Container Profiles](https://docs.skyhub.ai/drone-os/services): Per-service reference (core, gamepad/ws_proxy, mavproxy, rtk-ntrip, camera-proxy, isaac-slam): role, COMPOSE_PROFILE, network mode, key env vars, and startup ordering (STARTDELAY, depends_on, supervisord inside core). - [SkyCore CLI Reference](https://docs.skyhub.ai/drone-os/skycore-cli): The host-run MAVLink diagnostic CLI (skycore_cli.py): nav-source toggle (gps/slam/ekf), params, message streaming, dataflash log download, terrain FTP upload, camera-SD tools. Clarifies it is a maintenance tool, not the orchestrator. - [Redis Message Bus & WebSocket Interfaces](https://docs.skyhub.ai/drone-os/message-bus): IP-namespaced Redis channels ({ip}:gamepad_input/output/chat/slam_control/aruco_tracking/... and global video_stream_state), the /gamepad FastAPI WebSocket (:5001), rosbridge (:9090), and the dual command path (Redis relay vs direct WS). - [MAVLink Routing (mavp2p)](https://docs.skyhub.ai/drone-os/mavlink-topology): The mavp2p endpoint map (serial FCU + 14550 core / 14777 gamepad / 14560 rtk / 14561 aruco / 14900 external), MAVROS stream-rate setup, and why isaac-slam uses DDS + serial VIO rather than MAVLink UDP. - [Core & Gamepad Module Systems](https://docs.skyhub.ai/drone-os/module-system): The two independent module architectures: core's ROS2 env-registry ModuleLoader (video_stream/aruco_landing/battery) and the gamepad service's explicitly-registered modules (mavlink/redis/gimbal/charging/video/siyi/guided_control). How to add a module to each. - [Guided Velocity Control & Safety Model](https://docs.skyhub.ai/drone-os/safe-control): GUIDED-mode SET_POSITION_TARGET_LOCAL_NED control that replaced RC_CHANNELS_OVERRIDE: enable/disable protocol, velocity limits, dead-zone, 20Hz send + 10Hz timeout watchdog, and the three safety guards a refactor must preserve. Includes the gamepad button/axis map. - [Video Streaming (RTSP → WHIP/WebRTC)](https://docs.skyhub.ai/drone-os/robotics/video-streaming): The core video_stream module: CameraFactory drivers (ZR30/A8/RealSense/UDP/TEST), HardwareDetector HW vs software encode, GStreamer→whipsink, camera-proxy dual RTSP, and the stream state machine (arm/disarm/manual/force-start). - [Isaac Visual SLAM & Pose Bridge](https://docs.skyhub.ai/drone-os/robotics/slam-navigation): RealSense stereo+IMU → isaac_ros_visual_slam → pose_bridge_with_covariance → VISION_POSITION_ESTIMATE into ArduPilot EKF for GPS-denied nav; nvblox mapping/obstacle avoidance; the ENU→NED transform and default EKF origin caveats. - [YOLO Detection, ArUco Landing & Docking](https://docs.skyhub.ai/drone-os/robotics/detection-and-landing): YOLOv11n person/vehicle detection with gimbal tracking (and armed auto-disarm safety), e-ArUco multi-level precision landing (RTL/AUTO auto-trigger, gimbal lock, canvas overlay), and RealSense-ArUco rover docking state machine. - [RTK NTRIP GPS Corrections](https://docs.skyhub.ai/drone-os/robotics/rtk-ntrip): The rtk-ntrip service: NTRIP client receiving RTCM and injecting it into ArduPilot (udpout:14560), GGA feedback to the caster, and the credentials-in-code caveat. - [Local Development with SITL & Field Uplink](https://docs.skyhub.ai/drone-os/local-dev-sitl): Running SkyCore against ArduPilot SITL + local Redis via docker-compose.local.yml (mock VPN, IP_OVERRIDE, TEST camera, disabled hardware), plus the OpenWrt + Quectel 4G LTE field connectivity scripts. ## Ecosystem Services - [SkyHub Ecosystem Overview](https://docs.skyhub.ai/ecosystem/overview): How the satellite services fit around the core control plane: Janus + WHIP (video), User VPN (network), WS Proxy (gamepad), shared PostgreSQL/Redis/S3, and ground hardware (Nexus, Rover/UGV). Includes a role-by-repo table. - [Janus WebRTC SFU](https://docs.skyhub.ai/ecosystem/janus): The Janus SFU built from meetecho source, WS :8188 API, VideoRoom model, STUN/ICE config, event handlers, and how Gateway/WHIP/Dashboard connect to it. - [WHIP Ingest Server](https://docs.skyhub.ai/ecosystem/whip): WHIP REST API on :7080 (/whip/create, /endpoint, /resource), how drone/SITL GStreamer pipelines publish, and the WHIP→Janus VideoRoom bridge. - [SITL Simulator](https://docs.skyhub.ai/ecosystem/sitl): Dockerized ArduPilot + ROS2 (MAVROS 14550, rosbridge 9090, WHIP video via supervisord), container naming/port allocation, and how the Gateway spawns and connects to SITL identically to real drones. - [User VPN & Network Isolation](https://docs.skyhub.ai/ecosystem/user-vpn): Three WireGuard planes (core 51822 / user 51823 / drone 51824), iptables per-user isolation derived from user_drone_access, S3 config distribution, the :5050 status API, and how 10.71.x drone addressing reaches the Gateway. - [WebSocket Gamepad Proxy](https://docs.skyhub.ai/ecosystem/ws-proxy): FastAPI relay on :7070: direct /gamepad vs Redis /redispad modes, drone IP lookup from PostgreSQL, the Redis channel contract, and the auth-gap TODO. - [Nexus AirHub & Ground Vehicle Firmware](https://docs.skyhub.ai/ecosystem/nexus-and-vehicles): The Nexus battery-swap/charging station (Arduino serial + IMAX B6 USB charger control) and the ESP32/PlatformIO firmware for Rover and UGV ground robots (WiFi/ESP-NOW, gamepad :5001, ESP32 core 2.0.17 constraint). - [Planned / Stub Repos — Observer, Probe, Carrier](https://docs.skyhub.ai/ecosystem/planned-services): Placeholder repos with only README/dev-principles today: Observer (observability/spectator), Probe/Prob-E (hybrid air+ground vehicle running SkyCore), and Carrier (ground transport for Prob-E). Documents intent so readers know they are unimplemented. ## Deployment & Infrastructure - [AWS Infrastructure Overview](https://docs.skyhub.ai/deployment/infra-overview): How SkyHub runs in AWS eu-central-1: the Terraform repo layout (environments + ~16 modules), the S3 state bucket, single-AZ VPC, ECS Fargate cluster, Cloud Map service discovery, and the jumphost-centric ingress model. Includes the prod topology diagram. - [Environments, State & Terraform Workflow](https://docs.skyhub.ai/deployment/environments-state): Per-environment root modules (dev, prod), the S3 remote state backend and keys, settings.tfvars (with committed secrets caveat), and the exact init/plan/apply commands. Notes prod-tags vs dev-develop deploy triggers. - [VPC, WireGuard Jumphost & nginx Routing](https://docs.skyhub.ai/deployment/networking-jumphost): The single-AZ VPC/subnets/NAT and the WireGuard EC2 jumphost that TLS-terminates and reverse-proxies every public port (443/5000/7070/8188/9090/2375/4317 + UDP media) to internal Cloud Map services and the on-prem Docker host. Includes the nginx routing table. - [ECS Fargate Services](https://docs.skyhub.ai/deployment/ecs-services): Per-service task definitions (CPU/mem, ARM64 vs x86, ports, env, Cloud Map names), the fact that Postgres runs on Fargate+EFS (not RDS) and Redis is ephemeral (not ElastiCache), and the API redeploy-loop CloudWatch alarms. - [CI/CD: CodeBuild, ECR & Frontend Deploy](https://docs.skyhub.ai/deployment/cicd-images): The per-service CodeBuild pipelines (build Dockerfile.ecr → push ECR :latest → force-new-deployment), GitHub webhook filters (prod tags v_*, dev develop), DB migration builds, drone image pipelines, and the Angular frontend build that syncs dist/ to S3. - [Storage, Backups & Alerting](https://docs.skyhub.ai/deployment/storage-backup-alarms): S3 buckets (frontend, assets, user-vpn, TF state, build caches), EFS-backed Postgres with AWS Backup daily plans, the S3 gateway VPC endpoint, and the SNS + Slack/email alarm pipeline. - [Gateway Build, Docker & Runtime](https://docs.skyhub.ai/deployment/gateway-build-runtime): The two Dockerfiles (main:app vs src.main:app), docker-entrypoint.sh SSH-key injection and remote-Docker tunnel, the single GeventWebSocketWorker constraint (per-process rooms/pool/BLOCKLIST), and Swagger generation. - [AWS Production Configuration](https://docs.skyhub.ai/deployment/production-config): Required prod env vars (secrets as placeholders), the ECR registry, INSTALLER_BUCKET compose distribution, SSM/STS credential brokering to physical drones, the SITL remote-Docker flow, and the pre-deployment checklist. ## Reference - [Full HTTP & Socket.IO API Reference](https://docs.skyhub.ai/reference/api): Consolidated endpoint catalog for all ~113 gateway HTTP routes plus Socket.IO events, grouped by blueprint, with method, purpose, auth, request/response shapes, and status-code quirks. - [Platform-Wide Environment Variables](https://docs.skyhub.ai/reference/env-vars): Cross-service index of configuration: gateway (~80 vars), dashboard environment.ts (url/ws_proxy/janus/stripe/mapbox), SkyCore drone .env (COMPOSE_PROFILES, camera, SLAM, RTK, IP_OVERRIDE), and Terraform tfvars — with links to each service's detailed env page. - [Database Schema Reference](https://docs.skyhub.ai/reference/database-schema): Full column-level reference for every table and enum, cascade/ondelete rules, indexes, the Isaac Sim raw-SQL objects, and the ER diagrams. - [Redis Channels & MAVLink Port Map](https://docs.skyhub.ai/reference/redis-mavlink): The complete Redis pub/sub channel catalog (IP-namespaced vs global) with publisher/subscriber matrix across core/gamepad/isaac-slam/backend, plus the mavp2p MAVLink port map and MAVROS topic inventory.