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
.envfile (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:
- Technology stack is well-chosen. FastAPI + PostgreSQL + MQTT + Python on Pi is the right set of tools for this problem domain.
- The monorepo structure maps to real deployment boundaries (server, edge device, infrastructure) while keeping code colocated for easier development.
- MQTT is the correct protocol for edge device command/control -- lightweight, pub/sub, designed for constrained devices.
- 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.
- SatNOGS DB as the satellite catalog is pragmatic -- never duplicate what already exists.
- "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: passblocks 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_REGISTRYshared 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()withloggingmodule - [ ] Replace bare
except: passwith proper error handling - [ ] Fix
notify_systemto use a persistent MQTT client - [ ] Add Docker health checks
- [ ] Remove
reload=Truefrom 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.