New Introducing the Operator Agent — the execution layer for orbital compute Learn more

The software layer for orbital compute

The Cloud Breaks in Space.
We're Fixing It.

Kubernetes doesn't understand orbital mechanics. PyTorch doesn't adapt to solar eclipses. TensorFlow doesn't expect bit flips. We're building the runtime that does.

rotastellar-cae
$ curl /v1/plan -d '{
    "satellite": "OC-LEO-7",
    "preset": "onboard-ml-inference"
  }'

# CAE returns a constraint-aware plan
{
  "satellite": "OC-LEO-7",
  "altitude_km": 550,
  "plan": {
    "steps": 4,
    "duration": "22 min",
    "power_required": "340W peak",
    "eclipse_in": "43 min",
    "orbital_window": "CLEAR"
  },
  "estimated_cost": "$0.84",
  "status": "ready"
}
14,000+
Active satellites tracked in real-time
Mission Control

Why Cloud Assumptions Break

Space compute isn't just "AWS in orbit." Every cloud assumption fails.

Always-on network
Intermittent: eclipses, orbital motion, ground station handovers
Stable power
Variable: solar flux cycles, eclipse periods, battery limits
Low, predictable latency
LEO: 5-40ms RTT; GEO: 240ms+; ISL hops add variability
Reliable hardware
Radiation causes bit flips; SEUs are normal, not exceptional
Manual intervention
Near-zero tolerance — you can't send a technician to LEO

Developer SDK

Build orbital compute into your applications.

py
rotastellar
Python SDK — satellite tracking, CAE planning, deployments. Unified client for the full API.
pip install rotastellar
rs
rotastellar-agent
Rust SDK for orbital compute providers. Implements the Operator Protocol for on-satellite execution.
cargo add rotastellar-agent
from rotastellar import RotaStellarClient

client = RotaStellarClient(api_key="...")

# Plan a workload with orbital constraints
plan = client.cae.plan(
    satellite="OC-LEO-7",
    preset="onboard-ml-inference",
    constraints={
        "energy_budget": 340,     # Watts
        "eclipse_policy": "pause",
        "radiation_tolerance": "moderate"
    }
)

# CAE returns constraint-aware scheduling
print(plan.orbital_windows)   # When to execute
print(plan.power_allocation)  # Per-step energy
print(plan.estimated_cost)    # $0.84

# Deploy — the agent handles the rest
deployment = client.deployments.create(
    plan_id=plan.id
)
for event in deployment.stream():
    print(event)
    # step.upload_model → completed
    # step.run_inference → running
    #   (247W, eclipse in 43min)
    # job.completed → 4 steps, 0 failures
use rotastellar_agent::{Agent, Config};

async fn main() -> Result<()> {
    // Register this satellite as a compute node
    let agent = Agent::builder()
        .satellite_id("OC-LEO-7")
        .capabilities(["inference", "training"])
        .power_monitor("/dev/pmu0")
        .build()?;

    // Connect to ground station relay
    agent.connect(Config::from_env())
        .await?;

    // Agent handles the Operator Protocol:
    //   → receives deployment plans
    //   → reports power, thermal, radiation
    //   → executes steps within constraints
    //   → pauses on eclipse, resumes on sun
    agent.run_forever().await
}

Get Started

Ready to build for space?

Get early access to the platform. Start with planning tools today, be ready for orbital runtime tomorrow.