Real-time satellite tracking β’ Conjunction detection β’ Visibility predictions β’ High-performance analytics
Features β’ Installation β’ Performance β’ Usage β’ Documentation
OrbitGuard AI is a high-performance satellite tracking and monitoring platform with:
π Real-time TLE Data - Automatic retrieval from Space-Track.org
π‘ Visibility Predictions - Ground station pass forecasting
πΊοΈ Interactive Visualization - 2D (Folium) and 3D (Plotly) globe views
π Performance Optimized - Redis caching, async processing, Rust engine
πΎ Data Export - CSV and HTML reports for post-analysis
| Feature | Description | Status |
|---|---|---|
| π°οΈ TLE Retrieval | Automatic satellite data fetching from Space-Track.org | β Active |
| Satellite-to-satellite close approach detection | β Active | |
| π‘ Visibility Passes | Ground station visibility predictions | β Active |
| πΊοΈ 2D Visualization | Interactive Folium maps with satellite tracks | β Active |
| π 3D Globe | Three.js + Plotly 3D Earth visualization | β Active |
| π CSV/HTML Export | Downloadable analysis reports | β Active |
| π¨ Theme System | Nadir.space, Dracula, Solarized & Custom Builder | β NEW |
| Feature | Improvement | Technology |
|---|---|---|
| πΎ Redis Caching | 450x faster (cache hit) | Redis + hiredis |
| β‘ Async Fetching | 5-10x speedup | aiohttp + asyncio |
| π¦ Rust Engine | 100x faster computations | PyO3 + Rayon |
| π Batch Processing | Handle 1000+ satellites | Multi-threaded |
Performance Metrics:
- 100 satellite analysis:
45s β 5s(9x faster) - Cached queries:
45s β 0.1s(450x faster) - 1000 satellite conjunction:
timeout β 30s(100x+ faster)
| Feature | Description | Technology |
|---|---|---|
| π FastAPI Backend | Modern REST API with auto-docs | FastAPI + Uvicorn |
| π‘ WebSocket Support | Real-time satellite updates | WebSockets |
| π CORS Middleware | Frontend integration ready | CORS headers |
| π Auto Documentation | Interactive API docs at /api/docs |
OpenAPI/Swagger |
API Endpoints:
GET /api/health- Service health checkPOST /api/tle/fetch- Fetch TLE dataPOST /api/analysis/conjunction- Conjunction analysisGET /api/satellites/search- Search satellitesWS /ws/updates- Real-time updates
| Feature | Description | Technology |
|---|---|---|
| π SQLite Database | 66k+ satellite catalog storage | SQLite3 |
| π Auto-Sync | Daily TLE updates (24h interval) | APScheduler |
| π Advanced Search | Search by name, NORAD ID, country | SQL indexing |
| π Statistics | Launch stats, country breakdowns | Aggregate queries |
Database Features:
- Automatic TLE updates every 24 hours
- Search and filtering (name, country, type)
- Update history tracking
- Performance indexing
- Python 3.8 or higher
- Redis (optional, for caching)
- Rust (optional, for Rust engine)
# 1. Clone the repository
git clone https://github.com/recepsuluker/OrbitGuardAI.git
cd OrbitGuardAI
# 2. Install Python dependencies
pip install -r requirements.txt
# 3. (Optional) Set up environment variables
cp .env.example .env
# Edit .env with your Space-Track credentials
# 4. Run the application
streamlit run app.pyFor maximum performance, enable Redis cache and Rust engine:
# Install Redis (Windows - Chocolatey)
choco install redis-64
redis-server
# OR use Redis Cloud (free tier)
# https://redis.com/try-free/
# Build Rust engine (optional)
cd rust_engine
pip install maturin
maturin develop --release
cd ..π Detailed setup guide: PERFORMANCE_OPTIMIZATION.md
-
Launch the app:
streamlit run app.py
-
Enter Space-Track credentials (free registration: https://www.space-track.org/auth/login)
-
Input NORAD IDs (e.g.,
25544,48274,52740,55012,56210) -
Set ground station location (latitude, longitude, elevation)
-
Run analysis and view results:
- π Conjunction warnings
- π‘ Visibility passes
- οΏ½οΈ 2D/3D visualizations
- πΎ Download CSV/HTML reports
25544 - ISS (ZARYA)
48274 - STARLINK-1007
52740 - STARLINK-2278
55012 - STARLINK-3038
56210 - STARLINK-3291
OrbitGuardAI/
β
βββ π― Core Application
β βββ app.py # Streamlit web interface
β βββ orbit_agent.py # TLE fetching & Space-Track API
β βββ orbit_engine.py # Orbital mechanics (Keplerian)
β βββ visualization.py # 2D/3D plotting
β βββ globe_3d.py # Three.js integration
β βββ themes.py # UI theme system (Step 8)
β βββ components.py # Reusable UI components
β
βββ β‘ Performance Optimization (Step 1)
β βββ cache_manager.py # Redis caching system
β βββ orbit_agent_async.py # Async TLE fetcher
β βββ benchmark.py # Performance testing
β βββ rust_engine/ # Rust orbital calculations
β
βββ π Web Backend (Step 2)
β βββ api_server.py # FastAPI REST API
β βββ (frontend/) # React frontend (future)
β
βββ ποΈ Database System (Step 3)
β βββ database_manager.py # SQLite manager
β βββ auto_catalog_sync.py # Auto-sync daemon
β βββ orbitguard.db # SQLite database
β
βββ π§ͺ Testing
β βββ tests/ # Pytest suite
β βββ pytest.ini
β βββ benchmark.py
β
βββ π Configuration
β βββ requirements.txt
β βββ .env.example
β βββ .gitignore
β
βββ π Documentation
βββ README.md # This file
βββ PERFORMANCE_OPTIMIZATION.md # Setup guide
| File | Description | Format |
|---|---|---|
conjunction-warning.csv |
Satellite close encounter report | CSV |
plan_s_satellite_passes.csv |
Ground station visibility passes | CSV |
satellite_track_2d.html |
Interactive 2D Folium map | HTML |
satellite_track_3d.html |
Interactive 3D Plotly globe | HTML |
# Run all tests
pytest tests/ -v
# Quick performance test
python benchmark.py --quick
# Full benchmark (10, 50, 100, 500 satellites)
python benchmark.pyExpected benchmark results:
Test Case Python (s) Rust (s) Speedup
βββββββββββββββββββββββββββββββββββββββββββββββββββ
10 Satellites 0.234 0.018 13.0x
50 Satellites 5.823 0.465 12.5x
100 Satellites 23.451 1.892 12.4x
500 Satellites 582.123 47.235 12.3x
Create a .env file from .env.example:
# Space-Track.org Credentials
SPACETRACK_USERNAME=your_username
SPACETRACK_PASSWORD=your_password
# Redis Cache (optional)
REDIS_URL=redis://localhost:6379/0
CACHE_TTL_HOURS=24
# Performance Settings
USE_CACHE=true
USE_ASYNC=true
USE_RUST=falseReduce API calls by 95% with automatic TLE caching:
from cache_manager import TLECacheManager
cache = TLECacheManager()
tle_data = cache.get_tle_data([25544, 48274])Fetch multiple satellites concurrently (5-10x faster):
from orbit_agent_async import run_sync
tle_data = run_sync([25544, 48274, 52740], username, password)Ultra-fast conjunction detection (100x+ improvement):
import orbit_core
conjunctions = orbit_core.find_conjunctions(satellites, threshold_km=10.0)Modern REST API with WebSocket support:
# Start API server
python api_server.py
# API available at: http://localhost:8000
# Docs at: http://localhost:8000/api/docsExample API Usage:
import requests
# Fetch TLE data
response = requests.post('http://localhost:8000/api/tle/fetch', json={
'norad_ids': [25544, 48274],
'use_cache': True
})
# Search satellites
response = requests.get('http://localhost:8000/api/satellites/search?query=ISS')Automatic satellite database with 66k+ satellites:
# Run manual sync
python auto_catalog_sync.py
# Or start daemon for automatic updates (24h interval)
# Edit auto_catalog_sync.py and uncomment sync_daemon.start()Database Usage:
from database_manager import DatabaseManager
db = DatabaseManager()
# Search satellites
results = db.search_satellites(query='STARLINK', country='USA', limit=100)
# Get statistics
stats = db.get_statistics()
print(f"Total satellites: {stats['total_satellites']}")Personalize your monitoring experience with multiple built-in themes or create your own:
- Nadir.space: Exact Gruvbox palette transition.
- Dracula: High-contrast cyberpunk aesthetic.
- Solarized: Scientifically balanced light/dark modes.
- Custom Builder: Full control over background, accent, and text colors.
Access these from the sidebar π¨ Theme Settings section.
π Full guide: PERFORMANCE_OPTIMIZATION.md
Real-time satellite proximity warnings with risk scoring
Pass predictions with azimuth/elevation charts
- FastAPI backend + React frontend
- PostgreSQL database for TLE history
- User authentication system
- REST API for external integrations
- Machine learning collision prediction
- WebSocket real-time updates
- Multi-station network support
- Mobile app (React Native)
- GPU-accelerated orbital propagation
- Distributed caching (Redis Cluster)
- Advanced analytics dashboard
- Commercial API offering
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Recep Suluker
- GitHub: @recepsuluker
- Project: Real-time LEO traffic analysis with Plan-S constellation
- Contact: Open an issue for questions/suggestions
This project is licensed under the MIT License - see the LICENSE file for details.
Free for commercial and personal use.
- Space-Track.org - TLE data provider
- Skyfield - Astronomical computations library
- Plotly & Folium - Visualization frameworks
- Streamlit - Web UI framework
- Rust & PyO3 - High-performance computing
Found a bug? Have a feature request?
- π Report a bug
- π‘ Request a feature
- π Read docs
β Star this repo if you find it useful!
Made with β€οΈ by Recep Suluker