A state-of-the-art, AI-powered mission control platform for satellite fleet management, constraint-based scheduling, resource intelligence, and ground station optimization — built for real-world space operations.
- Overview
- Problem Statement
- Proposed Solution
- Features
- System Architecture
- Folder Structure
- File-by-File Explanation
- Tech Stack
- Algorithms Used
- Data Structures Used
- Design Patterns
- Research Papers and References
- Installation
- Configuration
- How to Use
- API Documentation
- Database Schema
- ML Model Training Pipeline
- Security
- Performance Analysis
- Testing
- Deployment
- Limitations
- Future Improvements
- Troubleshooting
- License
- Contributors
- Acknowledgements
- Conclusion
OrbitOps is a full-stack, AI-assisted satellite mission control platform. It provides space operations teams with a unified interface to:
- Plan and schedule satellite missions with priority-based conflict resolution
- Monitor satellite telemetry (battery, temperature, signal strength, CPU, memory) in real time
- Optimize ground station selection using multi-criteria scoring strategies
- Predict battery depletion and resource risk using trained ML models (GradientBoosting + RandomForest)
- Generate AI recommendations that identify critical fleet issues proactively
- Export PDF and Excel operational reports
The platform follows a clean React + FastAPI + PostgreSQL architecture with a dedicated ML training pipeline (/training) and pre-trained model artifacts (/trained_models). It seeds a fully operational demo dataset on first run — 20 satellites, 15 global ground stations, 14 payloads, and 100 missions — making it immediately usable without external data.
Modern satellite operations involve managing dozens to hundreds of satellites simultaneously, each with:
- Strict resource budgets: battery (solar + eclipse cycles), onboard memory, CPU, payload power
- Time-constrained visibility windows: a satellite in LEO (~400 km) has windows of only 5–10 minutes over any single ground station
- Overlapping mission demands: multiple missions competing for the same satellite or ground station
- Silent failure risk: a battery critically draining or thermal threshold being breached during a mission can cause permanent hardware damage or mission failure
Without intelligent tooling, operators must manually cross-reference telemetry across multiple dashboards, resolve scheduling conflicts by hand, and react to battery/thermal emergencies only after they occur. This is operationally unsafe and does not scale beyond small fleets.
- Commercial satellite operators (fleet management companies)
- Government space agencies (NASA, ESA, ISRO)
- Academic and research satellite teams (CubeSat operators)
- Ground segment software engineers building mission control systems
- No predictive intelligence: traditional systems alert only after a threshold is breached, not before
- Manual conflict resolution: time-consuming and error-prone for large fleets
- Siloed tooling: separate systems for telemetry, scheduling, and planning without a unified workflow
- No data continuity: CRUD actions are not persisted back to datasets for ML retraining
OrbitOps addresses these limitations through a three-layer architecture:
A Branch and Bound Scheduler (BranchAndBoundScheduler.py) backed by a DynamicPriorityEngine sorts and schedules missions based on three weighted factors: base mission criticality (40%), time urgency (40%), and real-time resource availability (20%). A background job re-runs this every 15 minutes, and priority recalculation runs every 5 minutes via APScheduler.
Two trained models power real-time predictions:
- Battery Prediction (
GradientBoostingRegressor, MAE ≈ 0.85 pp, R² = 0.9967): Given current satellite telemetry, predicts the remaining battery percentage at the end of the mission window and generates a multi-hour forecast trajectory. - Resource Risk Classifier (
RandomForestClassifier, 96% accuracy, macro F1 = 0.957): Classifies each satellite's current telemetry profile asLOW,MEDIUM, orHIGHrisk, enabling proactive operator intervention.
A GroundStationOptimizer evaluates every available ground station using multi-criteria scoring across six strategies (Minimum Latency, Maximum Coverage, Load Balancing, Minimum Cost, Energy Efficient, Balanced) and returns a ranked recommendation with rejected stations and their reasons.
Operator opens UI → AppContext loads live data from FastAPI →
ML models predict battery/risk → Rule engine generates recommendations →
Scheduler resolves conflicts → Operator approves optimized schedule →
Dataset sync writes back to CSV for future model retraining
| Feature | Description | Key Source File(s) |
|---|---|---|
| Mission Operations Dashboard | Real-time fleet overview: active satellites, missions, alerts, resource gauges | pages/Dashboard.tsx |
| Mission Planning | Create, edit, duplicate, delete missions with full metadata | pages/MissionPlanning.tsx, services/mission.py |
| Mission Scheduler | Visual time-slot scheduler, today's schedule, calendar view | pages/MissionScheduler.tsx |
| Constraint-Based Optimization | Branch and Bound conflict resolution + ground station optimizer | optimization/BranchAndBoundScheduler.py, optimization/GroundStationOptimizer.py |
| Battery Prediction | GradientBoosting model predicts end-of-mission battery %, multi-hour forecast | services/resource_intelligence/battery_prediction.py |
| Resource Risk Classification | RandomForest classifies satellite telemetry as LOW/MEDIUM/HIGH risk | services/resource_intelligence/inference.py |
| AI Recommendations | Rule + model pipeline generates prioritized, actionable fleet recommendations | services/resource_intelligence/recommendation_engine.py |
| Satellite Operations | Telemetry visualization: battery, temperature, signal strength, power, CPU | pages/SatelliteOperations.tsx |
| Ground Station Planner | Multi-criteria ground station selection and optimization | pages/GroundStationPlanner.tsx, optimization/GroundStationOptimizer.py |
| Payload Planner | Assign, schedule, and monitor satellite payloads | pages/PayloadPlanner.tsx |
| Resources Dashboard | Fleet-wide utilization table with AI risk badges and battery forecasts | pages/Resources.tsx |
| Analytics | Charts, trends, and performance analytics across the fleet | pages/Analytics.tsx |
| Reports | Generate PDF and Excel operational reports for missions and alerts | pages/Reports.tsx, services/reportGenerator.ts |
| Settings | UI theme, constraint configuration, system preferences | pages/Settings.tsx |
| Auto-seeded Demo Data | 20 satellites, 15 ground stations, 14 payloads, 100 missions on first boot | database/database.py |
| Dataset Sync | Mission and telemetry actions persist back to CSV for future ML retraining | services/dataset_manager.py |
| Background Scheduler | APScheduler jobs: priority recalc every 5 min, optimization every 15 min | jobs/scheduler.py |
| Health Check Endpoint | GET /health returns service status |
main.py |
| OpenAPI Docs | Auto-generated Swagger UI at /docs |
FastAPI built-in |
| Optional LLM Assistant | Anthropic Claude integration for natural-language recommendation explanations | services/ai/llm_service.py |
flowchart TD
subgraph Frontend["Frontend — React / TypeScript / Vite"]
UI[Pages & Components]
CTX[AppContext — Global State]
SVC[API Service Layer — Axios]
RI[Resource Intelligence API]
RPT[Report Generator — jsPDF / XLSX]
end
subgraph Backend["Backend — FastAPI / Python"]
MAIN[main.py — FastAPI App]
API[API Router /api]
subgraph Endpoints["Endpoints"]
E1[/missions]
E2[/infrastructure]
E3[/telemetry]
E4[/alerts]
E5[/recommendations]
E6[/resources]
E7[/optimization/ground-stations]
E8[/maintenance/request]
end
subgraph Services["Service Layer"]
MS[MissionService]
IS[InfrastructureService]
DS[DatasetManager]
AI_SVC[LLM Service — Anthropic]
end
subgraph MLLayer["ML / Intelligence Layer"]
REC[RecommendationEngine]
INF[Inference — ResourceIntelligenceModels]
BAT[BatteryPrediction]
RU[ResourceUtilization]
FE[FeatureEngineering]
end
subgraph Optimization["Optimization Layer"]
BB[BranchAndBoundScheduler]
PE[DynamicPriorityEngine]
GSO[GroundStationOptimizer]
TS[TaskSplitter]
CS[ConstraintSolver]
end
JOBS[APScheduler Jobs — 5min / 15min]
end
subgraph Data["Data Layer"]
DB[(PostgreSQL — Supabase / SQLite)]
CSV[CSV Datasets — datasets/raw/]
MODELS[Trained Models — .pkl]
end
UI --> CTX
CTX --> SVC
SVC --> API
MAIN --> API
API --> Endpoints
Endpoints --> Services
Endpoints --> MLLayer
Endpoints --> Optimization
Services --> DB
Services --> CSV
MLLayer --> MODELS
Optimization --> DB
JOBS --> BB
JOBS --> PE
| Category | Technology | Version | Usage |
|---|---|---|---|
| Frontend Language | TypeScript | 5.6 | Strongly typed React components |
| Frontend Framework | React | 19.0 | SPA with hooks and context |
| Build Tool | Vite | 5.4 | Fast dev server and production bundler |
| CSS Framework | Tailwind CSS | 3.4 | Utility-first styling |
| Backend Language | Python | 3.11+ | Backend application logic |
| Backend Framework | FastAPI | 0.109 | Async REST API |
| ORM | SQLAlchemy (AsyncIO) | 2.0 | Async database access |
| Background Jobs | APScheduler | 3.10 | Async interval-based background tasks |
| ML — Regression | scikit-learn GradientBoostingRegressor | 1.4 | Battery prediction |
| ML — Classification | scikit-learn RandomForestClassifier | 1.4 | Resource risk classification |
| Database | PostgreSQL / SQLite | 14+ | Primary relational data store |
- Python 3.11+
- Node.js 18+ & npm 9+
- PostgreSQL (or local SQLite fallback)
cd backend
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the development server
python -m uvicorn app.main:app --port 8000 --reloadAccess API Swagger documentation at http://localhost:8000/docs.
cd frontend
# Install dependencies
npm install
# Start development server
npm run devOpen application at http://localhost:5173.
Base URL: http://localhost:8000/api
| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
Liveness check |
GET |
/missions |
List satellite missions |
POST |
/missions |
Create a new mission |
PUT |
/missions/{id} |
Update existing mission |
DELETE |
/missions/{id} |
Delete mission |
GET |
/infrastructure/satellites |
Get satellite fleet telemetry |
GET |
/infrastructure/ground-stations |
Get ground station telemetry |
POST |
/optimization/ground-stations |
Run multi-criteria ground station optimization |
GET |
/resources |
Get fleet resource metrics & predictions |
GET |
/recommendations |
Get AI recommendations |
POST |
/maintenance/request |
Submit equipment maintenance request |
Run unit & integration test suite:
python -m pytest tests/ -o pythonpath=backend