Inspiration
- Thousands of satellites pass overhead every day. As orbit becomes more crowded, we wondered: when two satellites approach dangerously close, who decides which one should move?
- The challenge is growing. ESA's 2025 report describes increasing collision-avoidance activity as orbital traffic and debris grow.
- Coordination still involves directories, calls, and emails. Starlink's operator guide directs operators to a contact directory, a 24/7 phone, and urgent email. ESA also documented email-based coordination during the 2019 Aeolus–Starlink encounter.
- Avoiding one encounter can create another. ISRO's report for 2025 records 82 LEO maneuver plans revised to avoid post-maneuver close approaches.
- That inspired OrbitCall: a shared workspace to understand evidence, compare options, and coordinate across languages—with AI assistance and humans in control.
What it does
OrbitCall is designed around five steps:
- Detect risks: Visualize assigned satellites against the real public catalog and screen for potential close approaches.
- Compare options: AI explains incidents and evaluates maneuver proposals against each operator's private constraints.
- Coordinate across languages: Operators discuss options through text or voice, with AI translation and summaries.
- Approve and schedule: Humans approve the same proposal revision, then re-screen it before recording an authorized schedule.
- Verify outcomes: Compare the plan with later observations and preserve the evidence and decision record.
How we built it
- Cursor: We built OrbitCall in Cursor, using it to write, refactor, and debug code across the stack—from the Python orbital services to the Three.js globe and Convex backend.
- Grok Bot for team coordination: We used Grok Bot to plan the project, divide work among teammates, and keep independently built components on track for integration.
- Real space data: Every input is a public source, pinned to timestamped snapshots with source URLs and checksums for reproducibility:
- CelesTrak GP: Orbital elements for the full
activegroup plus the Cosmos 2251, Iridium 33, and Fengyun-1C debris clouds, propagated with SGP4. - CelesTrak SATCAT: Owner, launch, object type, and radar cross-section for each object.
- CelesTrak SOCRATES: A pinned conjunction list we use as an independent reference to validate our own screening.
- NASA ISS ephemeris (OEM): Real ISS trajectory data for our maneuver-verification replay.
- Earth context layers: NASA GIBS and Esri imagery, plus live space-weather and storm data from NOAA, GDACS, and EUMETSAT.
- CelesTrak GP: Orbital elements for the full
- Interface and orbital calculations: Next.js, React, and Three.js power the globe; Python, FastAPI, and SGP4 handle screening and maneuver calculations.
- Convex + Auth0: Convex manages shared state and backend jobs; Auth0 integration supports operator identity and access checks.
- Anthropic Claude: Supports incident explanations, private-policy evaluation, and translation with critical-value checks.
- Google Gemini: Provides coordination clarifications and summaries tied to shared evidence.
- LiveKit + xAI + Cartesia: Inside the product, our voice pipeline combines LiveKit rooms, Grok speech recognition, Claude translation, Cartesia English/Mandarin speech, and Grok Russian speech.
- Factory: Our scheduling design uses Droid to prepare file changes and record authorized artifacts after approval and re-screening.
- Backboard + Tiger Data: We built company-scoped memory components and a historical-observation adapter with source and simulation labels.
- DigitalOcean: Docker Compose and Caddy configurations support hosting orbital and voice services.
We are integrating these components into one shared operator workflow.
Challenges we ran into
- Numerical edge cases: Rounding near distance thresholds and incomplete orbital propagation could produce misleading screening results.
- Reliable AI output: Numbers, references, and evidence versions needed validation before accepting agent explanations.
- Privacy and authority: Agents needed useful context without exposing private policies or gaining approval authority.
- Service integration: API contracts, job states, deployment settings, and health checks had to match across independently developed components.
- Coordinating our own team: Like satellite operators, we built components in parallel. Grok Bot helped us plan the work and keep integration on track.
- Consistent history: Observation keys, timestamps, and retries needed careful handling to prevent duplicates and separate real from simulated data.
Accomplishments that we're proud of
- Making real orbital data explorable: Built an interactive globe with a pinned CelesTrak catalog of 19,468 space objects.
- Building calculation services: Implemented screening, maneuver candidates, re-screening, and verification, with successful service smoke tests.
- Checking ourselves against a reference: Built a validation endpoint that measures our screening against CelesTrak's SOCRATES conjunction list.
- Giving AI distinct roles: Built Claude analysis and private-policy evaluation, plus Gemini coordination and Grok checking demonstrated through live API calls.
- Protecting operator privacy: Added company-scoped policies, assignment checks, and safeguards against stale agent results.
- Strengthening reliability: Added automated tests and fixed numerical edge cases that could otherwise produce misleading screening results.
What we learned
- AI needs clear boundaries: Deterministic code handles orbital calculations; models explain evidence and support discussion.
- Details matter: Rounding, missing data, and stale results can change a screening verdict.
- Coordination requires privacy: Operators need shared evidence without exposing private operational constraints.
- Integration needs its own validation: Passing component tests does not prove the complete workflow works.
What's next for OrbitCall
We see OrbitCall growing into an international coordination network for satellite safety. Operators of a few spacecraft and teams managing large constellations should be able to work through a shared encounter without needing the same software, language, or internal policies.
- Build with satellite operators. Run pilots around real decision workflows and measure the time needed to reach agreement, the effort spent reviewing alerts, and operators' confidence in the evidence.
- Connect to operational data. Bring in operator-supplied trajectory predictions and Conjunction Data Messages, standardized reports describing close approaches and their uncertainty. Preserve source history so teams can see why their assessments differ.
- Coordinate across fleets. Evaluate linked encounters together, so an avoidance maneuver is considered alongside its consequences for neighboring spacecraft and other operators.
- Make cooperation easier across borders. Expand language support and help teams find the responsible operator, share their reasoning, and keep a record of the agreement. Company constraints stay private and approvals stay explicit.
The long-term goal is fewer avoidable maneuvers, less fuel spent resolving orbital conflicts, and a lower risk of creating more debris. That helps protect the communications, navigation, and Earth-observation services people rely on. Operators who have never worked together before should still be able to agree on a checked plan in time to act.
Built With
- anthropic
- auth0
- backboard
- cartesia
- claude
- convex
- digitalocean
- docker
- factory
- fastapi
- gemini
- grok
- livekit
- next.js
- postgresql
- python
- react
- satellite.js
- sgp4
- tailwind
- three.js
- tigerdata
- typescript
- vercel
- xai
Log in or sign up for Devpost to join the conversation.