This guide covers all installation methods for Apogee.

Prerequisites

Required

  • Python ≥ 3.11
  • uv - Modern Python package manager

Optional (for frontend)

  • Node.js ≥ 20
  • npm or pnpm

Installing uv

If you don't have uv installed:

curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
pip install uv

Clone Repository

git clone https://github.com/daxrpm/apogee.git
cd apogee

Install Python Packages

Install all workspace packages:

uv sync

This installs:

Package Description
apogee-physics Core numerical engine (JAX, Diffrax, USSA1976)
apogee-launch Launch simulator and CLI
apogee-orbit Orbital mechanics and yaw steering
apogee-api FastAPI REST backend

Individual Package

To install only a specific package:

uv sync --package apogee-launch

Verify Installation

# Check CLI is available
uv run apogee-launch --help

# Run a test simulation
uv run apogee-launch --h-target-km 200 --payload-kg 5000 --no-trajectory

Expected output:

{
  "schema_version": 1,
  "inputs": {"h_target_km": 200.0, "payload_kg": 5000.0},
  "optimal_numerics": {...},
  "summary": {"ecc": 0.000234, "h_err_m": -123.4, ...}
}

Frontend Installation (Optional)

For the 3D visualization:

cd frontend
npm install
npm run dev

The frontend will be available at http://localhost:5173/.

Development Setup

For contributors:

# Install with development dependencies
uv sync --all-extras

# Run tests
uv run pytest

# Type checking
uv run mypy packages/

Troubleshooting

JAX Installation Issues

If you encounter JAX-related errors on Apple Silicon:

# Install JAX with Metal support
pip install jax-metal

First Run Slowness

The first simulation takes longer (~20s) due to JAX JIT compilation. Subsequent runs are much faster (~0.5s).

Next Steps