OrbitalForge / how-to

How to use OrbitalForge

Everything you need to design an AI-payload satellite and understand the physics behind the score. Each section below stands on its own — jump in wherever you want.

What is OrbitalForge?

OrbitalForge is the fastest way to design an AI-payload satellite that can actually close. Pick an orbit, size a solar array, hang a compute payload off it, and a NASA GMAT R2026a script-mode pipeline propagates the full production force model — drag, gravity field, solar-radiation pressure, third-body gravitation, eclipses — and gives you a defensible score you can show an engineer.

Every constant in the codebase cites a primary source (NASA SBSP 2024, IERS, IAU 2015, SpaceX FCC SAT-LOA-20260108-00016). Every successful run becomes a public read-only page with an Open Graph card so you can paste one URL into X and have it unfurl. It's aimed at the next generation of orbital-infrastructure builders — orbital data centers, solar-power constellations, edge inference fleets, building blocks of programs like TERAFAB.

The designer

Open the designer at /design. Sliders are grouped into Orbit, Solar Array, Compute Payload, and Thermal & comms. Each group has a card; the right-hand column shows the live preview that updates instantly while you drag.

Altitude (km, 200–2000): sets eclipse geometry and atmospheric drag. Lower means more drag and shorter orbital life; higher means more radiation and slower phasing. FCC envelope info

Inclination (°, 0–180): the angle between the orbit plane and Earth's equator. ~97.4° at 500 km gives a sun-synchronous orbit (fixed local solar time on every pass — predictable lighting and eclipse). 51.6° matches the ISS.

Presets snap altitude + inclination to common operating points (low LEO, ISS-like, sun-sync 500/800 km, polar 1200 km).

Running simulations

There are two execution paths. The live preview runs locally and is approximate. The scored run goes through NASA GMAT R2026a end to end.

Live previewapproximate

Runs in your browser. Closed-form Kepler period + Vallado worst-case eclipse + the same scoring formula. Sub-50 ms feedback as you drag.

Full GMAT simulationauthoritative

Generates a .script file, runs GmatConsole headless inside the worker container with NRL-MSISE-00 drag, EGM96 70×70 gravity, spherical SRP, Sun + Moon as third bodies, and EclipseLocator umbral/penumbral events. ~2 s wall clock for a 1-day prop.

Hit Run full GMAT simulation and we poll the run status for up to 30 s. When it completes, the GMAT result card shows engine, score, eclipse fraction, avg power, orbital period, final SMA, and the station-keeping Δv budget. A Share row appears at the same time so you can paste a public URL.

Scoring explained

The total score is the product of six dimensionless factors. Each factor anchors to a cited constant — moving any slider has a predictable effect on the total.

power_mass_ratiospecific_power / 100 W/kgLinear lift from baseline flight-proven array density (~100 W/kg). Push specific power higher → more reward.
realism_factor≤ 1, soft-cap at 300 W/kgNASA OTPS Space-Based Solar Power 2024. Beyond the SBSP advanced-array target the factor decays so wishful designs don't dominate the leaderboard.
envelope_factor1.0 inside 500–2000 km, linear falloff outsideSpaceX FCC SAT-LOA-20260108-00016. Inside the AI-constellation operating shell you keep full credit; outside you lose it gradually with distance from the band.
power_kw_factordesign_power_kw / 100 kWFCC filing references ~100 kW per AI satellite. Designs at exactly the reference get 1.0; bigger designs win more, smaller designs win less.
eclipse_penalty1 − eclipse_fractionGMAT EclipseLocator umbral fraction. Penumbra is tracked separately; the penalty applies only to full umbra because power drops to zero only there.
mission_bonus1.0 + 0.1 × mission_difficultyDifficulty 1–5 from the seeded missions. Hello LEO is 1; Frontier is 5. Reward multiplier from objective_json applies only when every target passes.

Missions & leaderboards

Missions are physics-anchored challenges. Each mission has a list of target metrics (altitude, inclination, avg power, specific power…) you have to satisfy. Hit every target and the reward multiplier scales your score.

  • Pick a mission from the dropdown on the designer, or open /missions and click Take this mission to deep-link.
  • Submitting a run with a mission selected fills mission_completed + mission_evaluation on the run, with the actual value of every target so the result page can render pass/fail badges.
  • Each mission has its own leaderboard sorted by completed runs first, then score. Open a mission card and click Leaderboard.
  • The cross-mission top 10 lives at /community — last 30 days of public submissions, ranked by score.
  • The global leaderboard ranks users instead of single runs: total score = sum of best run per mission. Tabs for all-time / month / week.

Understanding the orbit viewer

The 3D viewer is a quick at-a-glance sanity check. Earth sits at the origin; the sun is fixed along +X (the small amber sphere).

  • Amber arc is the sunlit half of the orbit; slate arc is in Earth's umbra. Arc length = umbral fraction × 2π.
  • Before a GMAT run, the umbra arc uses the Vallado worst-case β=0 cylindrical-shadow estimate. After a successful run, it uses the actual umbral fraction GMAT computed.
  • Drag to rotate; the public result page auto-rotates if you keep your hands off.
  • The faint blue disc is the orbit plane, tilted by inclination — useful for reading polar vs equatorial orientations at a glance.

Sharing & community

Every successful run gets a public read-only page. No sign-in needed to view.

  • URL pattern: /result/<run_id>. Hit Share on the GMAT result card or any /my-designs row to copy the link or open the page directly.
  • The page renders score, design headline, mission outcome, auto-rotating orbit viewer, eight cited metric cards, and a Made with OrbitalForge footer.
  • Open Graph + Twitter card meta tags are baked in so X / LinkedIn / Slack unfurl a 1200×630 image with score and design summary.
  • /community shows the top-10 highest-scoring public runs from the last 30 days; the homepage's Featured Design pulls the current #1.

Physics & realism

The non-negotiables of the project — read once, then trust the score.

  • Engine: NASA GMAT R2026a, script-mode (.script → headless GmatConsole). The Python API is reserved for lightweight queries; every propagation goes through the script path.
  • Force model: NRL-MSISE-00 drag, EGM96 70×70 gravity, spherical SRP with Cr=1.3, Sun + Moon as third bodies. Every run commits the exact config into DesignRun.gmat_config_json for reproducibility.
  • Station-keeping: a 0.005 m/s prograde ImpulsiveBurn fires once per orbit inside the propagation loop. Without it the canonical 100 kW / 300 m² reference design crashed perigee in <24 h under SRP eccentricity-pumping. Δv budget reported in the result. Station-keeping info
  • Cited constants: every value in backend/src/physics/constants.py carries a primary-source citation. Tests enumerate the module and fail the build if anything goes uncited.
  • Honest caveats: no approximations is aspirational, not literal — GMAT itself is configurable, and choices like drag model or gravity order change the trajectory. The goal is no uncited approximations, not no approximations.