Skip to content

TALOS Ground Station Network -- Executive Research Summary

Date: 2026-04-01 Scope: Architecture, Security, Operations, CCSDS Compliance, SatNOGS Strategy, Technology Roadmap Repo: talos (monorepo: core/, director/, agent/, ops/, shared/)


Completed

The following items from Phase 1 have been implemented as part of the monorepo consolidation:

  • [x] Consolidated three repositories (talos-core, talos-agent, talos-ops) into a single monorepo
  • [x] Extracted Mission Director as a separate component (director/) with its own entry point
  • [x] Created shared/ package for MQTT topic constants, payload schemas, and time utilities
  • [x] Moved secrets to environment variables and .env file (gitignored)
  • [x] Signed session cookies replacing plaintext cookie authentication
  • [x] Enabled MQTT authentication and disabled anonymous broker access
  • [x] Added CI/CD pipeline with GitHub Actions (lint, type check, test)
  • [x] Consolidated SatNOGS API client with response caching
  • [x] Produced six architecture research reports with prioritized recommendations
  • [x] Created development documentation and contributor guide

v0.2 Implementation

The following organization-grade features have been implemented in v0.2 (see 07-v02-strategy.md for the full strategy):

  • [x] Organization model with slug-based identification and auto-creation for new users
  • [x] Membership system with role-based access control (owner, operator, viewer)
  • [x] Campaign model replacing the single-mission system, with lifecycle management (draft, active, completed)
  • [x] Per-station campaign assignments with time windows and no-double-booking constraints
  • [x] Multi-satellite concurrent tracking in the Director (per-assignment physics loop)
  • [x] Org-scoped MQTT topics (talos/{org_slug}/gs/{station_id}/...)
  • [x] Org-scoped API endpoints (/api/org/{slug}/...)
  • [x] Multi-campaign dashboard visualization with color-coded satellite tracks
  • [x] Alembic database migrations for schema versioning
  • [x] Station ownership moved from email-based to organization-based

What TALOS Is

TALOS (Tracking, Acquisition, and Link Operation System) is a distributed satellite ground station controller organized as a monorepo with five components:

  • core/ -- FastAPI web API + PostgreSQL database + dashboard templates + SatNOGS integration
  • director/ -- Mission Director physics engine (SGP4 propagation at 2 Hz, Doppler correction, pass prediction)
  • agent/ -- Lightweight Python edge client (Raspberry Pi) bridging MQTT commands to Hamlib (rotctld/rigctld)
  • shared/ -- Common utilities: MQTT topic constants, payload schemas, UTC time helpers
  • ops/ -- Docker Compose orchestration, Mosquitto broker configuration, deployment infrastructure

The system runs real-time SGP4 propagation at 2 Hz, computes Doppler corrections, and pushes pointing/tuning commands to multiple ground stations simultaneously over MQTT. It integrates with SatNOGS DB for satellite metadata and TLEs.


What TALOS Gets Right

Across all six research tracks, several design decisions were validated:

  1. Technology stack is well-chosen. FastAPI + PostgreSQL + MQTT + Python on Pi is the right set of tools for this problem domain.
  2. The monorepo structure maps to real deployment boundaries (server, edge device, infrastructure) while keeping code colocated for easier development.
  3. MQTT is the correct protocol for edge device command/control -- lightweight, pub/sub, designed for constrained devices.
  4. Centralized physics engine is a genuine differentiator. No other open-source ground network (SatNOGS, TinyGS) offers real-time multi-station coordination from a central propagator.
  5. SatNOGS DB as the satellite catalog is pragmatic -- never duplicate what already exists.
  6. "Magic Find" sky scanning (8000+ orbits in milliseconds) is unique and valuable.

Critical Issues (Unanimous Across Reports)

Every research track flagged the same core problems. These must be addressed before any operational use:

1. No Security Boundary Exists

  • 7 critical vulnerabilities identified (see 03-security-review.md)
  • Hardcoded SECRET_KEY = "super_secret_mission_key" in source control
  • Unsigned plaintext cookies for authentication (any user can forge sessions)
  • MQTT broker allows anonymous access -- anyone on the network can move rotators
  • Browser-side MQTT gives JavaScript direct hardware control
  • Database credentials hardcoded and port exposed to host network
  • Effort to fix the worst 4: ~1 day

2. Silent Failure Everywhere

  • 5+ bare except: pass blocks silently swallow errors
  • No logging framework (only print() with emojis)
  • No monitoring, metrics, or alerting
  • If the Mission Director crashes, nobody knows until a pass is missed
  • Effort to fix: ~1 day (logging + exception handling)

3. Global Mutable State + Threading

  • GLOBAL_SAT_REGISTRY shared across threads with no synchronization
  • Mission Director runs as a thread with no crash recovery
  • New MQTT client created per notification (connection churn)
  • Effort to fix: ~2-3 days (extract Director as separate process)

Strategic Position: TALOS + SatNOGS

TALOS should complement SatNOGS, not replace it. (See 05-satnogs-integration.md)

SatNOGS TALOS
Model Batch-scheduled autonomous stations Real-time centralized fleet control
Strength Global network, 12M+ observations, data pipeline Multi-station coordination, live Doppler, instant provisioning
Gap No real-time coordination No signal processing or data products

Recommended architecture: Run satnogs-client and talos-agent side-by-side on station hosts. TALOS handles real-time missions; SatNOGS handles scheduled observations and data upload. A mutex prevents hardware conflicts.


CCSDS Standards Worth Adopting

Not all CCSDS standards apply. The practical ones for TALOS (see 04-ccsds-compliance.md):

Standard What It Does Effort Value
CCSDS 301.0 (Time Codes) Fix datetime.utcnow() + inconsistent timestamps Half day High
CCSDS 502.0 (OMM) Standard wrapper for TLE/SGP4 data 1-2 days High
CCSDS 503.0 (TDM) Export tracking data (az/el/Doppler) 2-3 days High
CCSDS 508.0 (CDM) Conjunction alerts for tracked satellites 3-5 days Medium
CCSDS SLE (910.x) Interop with professional ground networks 2-4 weeks Low (for now)

Skip: CCSDS 401 (RF), 131/132/232 (TM/TC framing), full MO Services -- overkill for TALOS's abstraction layer.


Technology Upgrades (Prioritized)

From 06-recent-technologies.md, the top 5 upgrades that fit TALOS's existing stack:

# Technology What It Enables Effort
1 MQTT 5.0 Shared subscriptions, message expiry, better error codes Low (Mosquitto 2 already supports it)
2 dSGP4 (ESA) GPU/batch-accelerated SGP4, ML-corrected propagation Low (pip install dsgp4)
3 OR-Tools scheduling Constraint-based pass scheduling optimization Medium
4 Grafana Station health monitoring, connects to existing PostgreSQL Low
5 CesiumJS 3D orbital visualization replacing Leaflet 2D maps Medium-High

Skip: AWS Ground Station (wrong market), Kubernetes (premature), full Orekit (JVM overhead), WebRTC (wrong pattern).


Scalability Outlook

Scale Status Key Bottleneck
10 stations Works Silent failures are the risk
100 stations Breaks Physics loop exceeds 0.5s budget; pass prediction stalls
1000 stations Impossible Single-threaded Python loop, MQTT fan-out, memory

Key fixes for scale: Vectorize SGP4 (dSGP4), decouple pass prediction from realtime loop, cache ground track computation, shard Director by region.


Unified Roadmap

Phase 1: Monorepo Consolidation -- DONE

  • [x] Consolidate talos-core, talos-agent, talos-ops into single monorepo
  • [x] Extract Mission Director as separate component (director/)
  • [x] Create shared/ package (topic constants, payload schemas, time utilities)
  • [x] Move secrets to environment variables / .env file
  • [x] Sign session cookies (replace plaintext cookie auth)
  • [x] Enable MQTT authentication, disable anonymous access
  • [x] Add CI/CD pipeline with GitHub Actions
  • [x] Consolidate SatNOGS API client with caching
  • [x] Add architecture research documents and development documentation

Phase 2: Hardening -- "Reliability"

  • [ ] Replace all print() with logging module
  • [ ] Replace bare except: pass with proper error handling
  • [ ] Fix notify_system to use a persistent MQTT client
  • [ ] Add Docker health checks
  • [ ] Remove reload=True from production
  • [x] Add Alembic for database migrations
  • [ ] Standardize timestamps to ISO 8601 UTC (CCSDS 301.0)
  • [ ] Cache ground track computation (eliminate 48 wasted SGP4 calls/tick)
  • [ ] Move pass prediction to background thread

Phase 2.5: Organization-Grade Architecture (v0.2) -- DONE

  • [x] Organization model with membership management
  • [x] Role-based access control (owner, operator, viewer)
  • [x] Campaign system replacing single-mission model
  • [x] Per-station campaign assignments with time windows
  • [x] Multi-satellite concurrent tracking in Director
  • [x] Org-scoped MQTT topics and API endpoints
  • [x] Multi-campaign dashboard visualization
  • [x] Auto-organization creation for new users

Phase 3: Security Hardening -- "Trust Boundary"

  • [x] Add authentication to all API endpoints
  • [x] Implement RBAC (owner / operator / viewer roles)
  • [ ] Route dashboard through FastAPI WebSocket (remove browser-to-MQTT)
  • [ ] Add MQTT TLS + topic ACLs
  • [ ] Add CORS middleware with explicit origin list
  • [ ] Add rate limiting to API endpoints

Phase 4: Capabilities (Months 2-3) -- "Production Ready"

  • [ ] Upgrade to MQTT 5.0 (shared subscriptions, message expiry)
  • [ ] Add Prometheus metrics + Grafana dashboards
  • [ ] Integrate dSGP4 for batch propagation
  • [ ] Add OMM import/export (CCSDS 502.0)
  • [ ] Add TDM tracking data export (CCSDS 503.0)
  • [ ] Implement constraint-based scheduling (OR-Tools)
  • [ ] SatNOGS coexistence layer (agent mutex)

Phase 5: Growth (Months 4-6) -- "Scale & Interop"

  • [ ] CesiumJS 3D visualization
  • [ ] CDM conjunction alerting (CCSDS 508.0)
  • [ ] gr-satellites integration for SDR stations
  • [ ] Evaluate NATS as messaging backbone
  • [ ] Statistical anomaly detection for station health
  • [ ] SatNOGS data contribution pipeline

Research Documents Index

File Focus
docs/research/01-architecture-best-practices.md Code quality, separation of concerns, state management, MQTT patterns, data flow
docs/research/02-operations-scalability.md DevOps, observability, scaling analysis (10/100/1000 stations), performance
docs/research/03-security-review.md 7 critical + 6 high + 8 medium findings, threat model, remediation roadmap
docs/research/04-ccsds-compliance.md Standards gap analysis, OMM/TDM/time codes, interoperability benefits
docs/research/05-satnogs-integration.md Feature comparison, integration strategy, complement-not-replace positioning
docs/research/06-recent-technologies.md dSGP4, MQTT 5.0, CesiumJS, OR-Tools, Grafana, hardware trends
docs/research/07-v02-strategy.md v0.2 strategy: organizations, campaigns, RBAC, multi-satellite tracking

One-Line Summary

TALOS has a strong architectural foundation and a genuine differentiator (real-time multi-station coordination). With v0.2, it now supports organization-grade operations including multi-campaign tracking, RBAC, and org-scoped resource isolation. The remaining priorities are reliability hardening (logging, error handling, observability) and security completion (MQTT TLS, rate limiting) before full operational deployment.