GroundCore is the open-source alternative to proprietary satellite uplink and orchestration platforms. It is Apache 2.0, self-hosted, and the only open-source system that orchestrates both RF and laser optical communications in a single unified Rust binary.
Ground Core is organized into two complementary communication layers:
- RF processing with no memory allocations for microseconds-level latency
- Doppler correction using predictive NCO programming with phase-continuous updates
- Shadow-tracking SDRs for lossless failover (<100ms switchover)
- Demodulator state snapshotting for recovery across failures
- PAT (Pointing, Acquisition, Tracking) with precision clock synchronization
- Geometry computations for pointing vectors, visibility windows, Doppler shift, and atmospheric attenuation
- Link state machine managing link phases, quality, degradation, recovery, and failure
- Terminal abstraction via traits for vendor interoperability (Mynaric, Tesat)
- Cryptographic attestation for link and PAT events with bi-temporal timestamps
- Spatiotemporal routing over time-varying topology graphs
- Mission planning with declarative intents compiled into imperative tasking plans
- Satellite tracking with SGP4 propagation and UKF refinement
- Hardware management with pass-isolated shards for failure containment
- Scheduler with Dominant Resource Fairness (DRF) and reputation-weighted fairness
- Regulatory compliance enforced at compile-time via type system
- Federation layer with cryptographic attestation for cross-station coordination
- Resource allocation with multi-tenant isolation and preemption support
- Divergence detection using CUSUM change-point detection for regime shift identification
- Interval-based anomaly detection using set-membership testing (provable, not probabilistic)
- Bi-temporal logging with event time and reception time for forensic replay
- Snapshot management for counterfactual queries and incident investigation
- Runtime channels for observed metrics, anomaly signals, and forecasts
- Integration with Bevy ECS for simulation and state management
- Embedded Claude Code agent for anomaly detection and decision explanation
- REST/gRPC API for external integration
- Web UI (Leptos) for operator interaction
Solution: Shadow-tracking SDRs with pointer swap on failure. Demodulator state snapshots enable instant recovery without sample loss.
Solution: Predictive NCO programming using SGP4 propagation and UKF refinement. Phase-continuous frequency updates prevent retuning artifacts.
Solution: Dominant Resource Fairness (DRF) over dominant resources, not a single shared resource. Reputation weighting prioritizes tenants who use what they're allocated.
Solution: Periodic challenge passes with cryptographic attestation. Trust scores computed from cross-verification history. Bi-temporal logging provides provable verification.
Solution: Regulatory rules compiled to Rust types. Transmit functions require a license typed to the specific band. Violations caught at compile time, not runtime.
Solution: Pass-isolated process supervision. Each pass runs in its own subprocess. Deployment swaps the parent; passes continue under old code until completion.
Solution: Precision clock synchronization with GPS-disciplined oscillators (~50ns accuracy). Bi-temporal logging proves timestamps were agreed correctly. Clock confidence tracking prevents acquisition when clocks are degraded.
Solution: Time-indexed graph forecasting with configurable resolution. Modified Dijkstra algorithm for routing through both space and time. Route caching with 5-minute time buckets for performance.
Solution: Trait-based abstraction over SDA OCT Standard. Mynaric CONDOR Mk3 and Tesat SCOT80 implementations share the same OpticalTerminal trait while handling vendor-specific control protocols.
-
Per-pass shards: Each pass gets isolated memory region using
bumpalofor no-heap allocations -
Emergency shards: Pre-allocated memory regions for failover
-
Tenant shards: Cryptographic isolation of tenant data with protected memory regions
-
Multi-tenant isolation is enforced at kernel level, not soft access control
-
Zero-downtime deployment is trivial: new code starts new shards, old shards finish under old code
-
Failover is contained: one pass's failure can't cascade due to no shared mutable state
- Orbital propagation: Interpolate between cached positions (sub-meter accuracy without re-running SGP4)
- TLE refresh: Atomic batch refresh for consistent constellation state
- Schedule fragments: Incremental re-optimization in <500ms instead of full annealing
- TLE refresh: Atomic constellation state updates
- Demodulator output: Batch symbols for efficient Float Protocols delivery
- Log entries: Batch for efficient storage
- Schedule snapshots: For incremental re-optimization
- Demodulator state: For failover recovery
- Federation exchange: For cross-station verification
ground-station-core/
├── Cargo.toml # Workspace configuration
├── core/ # Central types and error handling
├── optical/ # Optical communications layer
│ ├── pat/ # Pointing, Acquisition, Tracking
│ ├── geometry/ # Geometry computations
│ ├── link/ # Link lifecycle management
│ ├── terminal/ # Terminal abstraction
│ ├── attestation/ # Cryptographic attestation
│ └── routing/ # Optical routing
├── oisl/ # Optical Inter-Satellite Link control plane
│ ├── mission/ # Mission planning and compilation
│ ├── topology/ # Spatiotemporal topology forecasting
│ ├── resource/ # Distributed resource management
│ ├── physical/ # Vendor abstraction (SDA OCT)
│ ├── pat/ # Synchronized PAT coordination
│ └── federation/ # Cross-operator OISL coordination
├── rf-layer/ # Real-time RF processing
├── tracking/ # Satellite tracking (SGP4 + UKF)
├── hardware/ # Hardware management with sharding
├── scheduler/ # DRF scheduler with reputation weighting
├── bitemporal/ # Bi-temporal logging with provenance
├── digital-twin/ # Digital twin simulation and divergence detection
├── sdr-sim/ # Simulated SDR for testing
├── policy-compiler/ # Spectrum policy → Rust types
├── regulatory/ # Compile-time regulatory enforcement
├── federation/ # Cryptographic attestation for federation
├── agent/ # Embedded Claude Code agent
├── deployment/ # Zero-downtime process supervision
├── caching/ # Caching infrastructure
├── batching/ # Batching infrastructure
└── snapshotting/ # Snapshotting infrastructure
cargo build --releasecargo testRun tests with simulated SDR backend:
cargo test --features sdr-simcargo run --bin ground-coreKey dependencies:
tokio- Async runtimeserde/serde_json- Serializationchrono- Time handling with bi-temporal supportthiserror- Error handlingtracing- Structured loggingsgp4- Orbital propagationnalgebra- Linear algebra for geometry computationsrustfft- FFT for signal processingbumpalo- No-heap allocationsed25519-dalek- Cryptographic signaturessha2- Hashinguuid- UUID generation for identifiersasync-trait- Async trait supportfutures- Async stream utilitiestokio-stream- Tokio stream adaptersreqwest- HTTP client for vendor APIsbitemporal- Bi-temporal data structures
Apache 2.0