OrbitalGym — JAX-native decision-making for orbital scenarios
OrbitalGym is a JAX-native framework for two-side decision-making in orbital scenarios. The goal is to provide a high-performance research and education framework for orbital decision-making. It is built on top of JAX and astrojax for differentiable dynamics, and is intended as a starting point for further development and research.
OrbitalGym models any two-side decision making problem where two sides compete to complete an objective. Five scenarios ship in the box: Lady-Bandit-Guard, Pursuit-Evasion, Get-Off-My-Lawn, Sun-Blocking, and Observation-Blocking.
The same core drives single-agent (Gymnasium-shaped), multi-agent (PettingZoo-shaped), and POMDP-shaped views of the same underlying game to enable integration with the rich ecosystem of tools built around those interfaces. The core is also designed to be easily extended with new scenarios, new dynamics, and new interfaces.
Install
pip install orbitalgym
# or
uv add orbitalgym
If you want JAX accelerated on GPU or Apple Silicon, install the matching extra:
# NVIDIA CUDA 12
pip install orbitalgym[cuda12]
# NVIDIA CUDA 13
pip install orbitalgym[cuda13]
# Apple Silicon Metal (via jax-mps)
pip install orbitalgym[mps]
Quickstart
This project uses just as a command runner and uv for Python package management.
# Install just (macOS)
brew install just
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install everything (dev deps + adapter extras)
just install
See the Getting started guide to walk from a fresh checkout to a rendered trajectory plot.
Papers
papers/2027_ieee_aeroconf holds the experiments, figures, and quoted statistics of "Where Planning Changes the Outcome of Orbital Games" (IEEE Aerospace Conference, 2027), one runnable script per experiment.
Development
Every recipe has an equivalent raw command you can run directly.
| Task | just recipe |
Raw command |
|---|---|---|
| Install dev deps | just install |
uv sync --dev |
| Run tests | just test |
uv run pytest tests/ -v |
| Test with coverage | just test-cov |
uv run pytest --cov=orbitalgym --cov-report=term-missing |
| Format code | just fmt |
uv run ruff format |
| Lint (auto-fix) | just lint |
uv run ruff check --fix |
| Type check | just typecheck |
uv run pyrefly check |
| All quality checks | just check |
Runs fmt + lint + typecheck |
| Build docs | just docs-build |
uv run zensical build --clean |
| Serve docs | just docs-serve |
uv run zensical serve --clean |
License
The code in this repository is licensed under the MIT License. See LICENSE.md for details.
Metadata
Release files for orbitalgym 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| orbitalgym-0.1.0.tar.gz | 213.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| orbitalgym-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 495.3 kB
Release files / orbitalgym-0.1.0.tar.gz
| Download URL | orbitalgym-0.1.0.tar.gz |
|---|---|
| Size | 213.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0fb07180e91c1e2cface4048ccafe4648b54477ebfad09269bbe2784834721c1
|
|
BLAKE2b-256 checksum How to use checksums |
73a73050434372bee9ebc56a477f3957f061cabd4a3d3a3e0a45e5f1846c3063
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / orbitalgym-0.1.0-py3-none-any.whl
| Download URL | orbitalgym-0.1.0-py3-none-any.whl |
|---|---|
| Size | 281.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cc506e1ccfecf2b5b7526340e98b9d395603906c2d5cbabc6c0179a6a350dde7
|
|
BLAKE2b-256 checksum How to use checksums |
46666fe5bb1af7e4b16c2cd0e734a11c983d424a362e8d251966b17204445ce6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|