Skip to main content

Orbit Scheduler

Coming Q2 2026 — This is a design preview. Request early access to be notified when available.

Overview

The Orbit Scheduler orchestrates workloads across heterogeneous compute nodes spanning Earth datacenters and orbital infrastructure. It understands orbital mechanics, energy availability, and network topology to make optimal placement decisions.

Key Capabilities

  • Orbit-aware scheduling — Accounts for orbital position, eclipse periods, ground contacts
  • Energy optimization — Routes work based on power availability
  • Latency-aware routing — Minimizes round-trip time based on geometry
  • Fault tolerance — Automatic failover between nodes
  • Workload splitting — Distribute work across Earth + orbit

Architecture

                    ┌─────────────────────┐
                    │   Orbit Scheduler   │
                    │                     │
                    │  ┌───────────────┐  │
                    │  │ Placement     │  │
                    │  │ Engine        │  │
                    │  └───────────────┘  │
                    │  ┌───────────────┐  │
                    │  │ Orbit Model   │  │
                    │  └───────────────┘  │
                    │  ┌───────────────┐  │
                    │  │ Energy Model  │  │
                    │  └───────────────┘  │
                    └─────────┬───────────┘

        ┌─────────────────────┼─────────────────────┐
        ▼                     ▼                     ▼
  ┌──────────┐         ┌──────────┐         ┌──────────┐
  │ Earth DC │         │ LEO-1    │         │ LEO-2    │
  │ us-west  │         │ 550km    │         │ 550km    │
  └──────────┘         └──────────┘         └──────────┘

API Preview

Submit Job with Placement Hints

from rotastellar import RotaStellar

client = RotaStellar(api_key="rs_...")

job = client.runtime.submit(
    model="llama-70b",
    prompt="...",
    placement={
        "prefer": "orbital",           # Prefer orbital nodes
        "fallback": "earth",           # Fall back to Earth if needed
        "region_affinity": "europe",   # Prefer nodes with Europe visibility
        "max_hops": 2                  # Max ISL hops
    },
    constraints={
        "latency_sla_ms": 100,
        "energy_budget_wh": 0.5
    }
)

print(f"Placed on: {job.node}")
print(f"Reason: {job.placement_reason}")

Query Node Status

# Get current node availability
nodes = client.runtime.nodes()

for node in nodes:
    print(f"{node.id}: {node.type}")
    print(f"  Location: {node.location}")
    print(f"  Status: {node.status}")
    print(f"  Available power: {node.available_power_w}W")
    print(f"  Queue depth: {node.queue_depth}")

    if node.type == "orbital":
        print(f"  In eclipse: {node.in_eclipse}")
        print(f"  Ground contact: {node.has_ground_contact}")

Schedule Future Work

Schedule jobs to run at optimal times:
# Schedule for optimal conditions
scheduled_job = client.runtime.schedule(
    model="llama-70b",
    prompt="...",
    schedule={
        "window_start": "2026-01-22T00:00:00Z",
        "window_end": "2026-01-22T12:00:00Z",
        "optimize_for": "energy"  # or "latency", "cost"
    }
)

print(f"Scheduled for: {scheduled_job.scheduled_time}")
print(f"Expected node: {scheduled_job.expected_node}")
print(f"Energy savings: {scheduled_job.energy_savings_percent}%")

Placement Strategies

Orbital-First

Prefer orbital nodes, fall back to Earth:
job = client.runtime.submit(
    model="...",
    prompt="...",
    placement={"prefer": "orbital", "fallback": "earth"}
)

Earth-First

Prefer Earth, use orbital for overflow:
job = client.runtime.submit(
    model="...",
    prompt="...",
    placement={"prefer": "earth", "fallback": "orbital"}
)

Latency-Optimized

Route to minimize latency to specific region:
job = client.runtime.submit(
    model="...",
    prompt="...",
    placement={
        "optimize_for": "latency",
        "user_location": {"lat": 51.5, "lon": -0.1}  # London
    }
)

Energy-Optimized

Route to nodes with best energy availability:
job = client.runtime.submit(
    model="...",
    prompt="...",
    placement={"optimize_for": "energy"}
)

Scheduling Factors

The scheduler considers:
FactorWeightDescription
Energy availabilityHighCurrent and predicted power
LatencyHighNetwork path to user
Queue depthMediumCurrent load on node
Thermal headroomMediumTemperature margin
Eclipse statusMediumUpcoming power constraints
Ground contactLowCommunication availability

Node Types

TypeLocationCharacteristics
earthTerrestrial DCUnlimited power, stable network
leoLow Earth OrbitVariable power, intermittent ground contact
meoMedium Earth OrbitStable power, higher latency
geoGeostationaryContinuous visibility, 240ms+ latency

Next Steps