Skip to main content

Octavian logo

Octavian

Octavian is a Python-first astrodynamics / trajectory-optimization toolkit built on ASSET (asset_asrl).

This package includes:

  • Two-impulse rendezvous with bounded free final time.
  • Two-impulse rendezvous with bounded variable pre-coast.
  • Composable coast phases with continuous or impulsive links.
  • Terminal state, terminal delta-v, path, and orbital-element constraints.
  • Finite chemical-burn phases with mass depletion and three thrust-direction controls.
  • J2, Sun/Moon gravity, exponential cannonball drag, and cannonball SRP in inertial and exact relative dynamics.
  • Central-body selection, CWH relative motion, RIC transforms and plots, differential relative perturbations, and SPICE solar-phase geometry.
  • Finite-thrust and low-thrust phases with mass depletion and spiral seeding.
  • Finite-thrust directions expressed as free inertial/RIC vectors, prescribed inertial/RIC directions, or bounded 3-2-1 Euler kinematics.
  • Optional schema-versioned JSON and YAML mission configuration.
  • Lambert-Izzo seed sweeps across time of flight, longway, and multi-rev cases.
  • Frame-aware Plotly trajectory and time-series diagnostics with maneuver markers, RIC state/range/solar phase, and inertial state/elements.
  • STK .e, CCSDS OEM, SPICE BSP/SPK, and CSV trajectory exports with explicit epoch, frame, center, and object metadata.
  • A consolidated octavian.propagate namespace for two-body, CWH, exact RIC, coupled relative, relative-element, and CR3BP analysis histories.
  • Dimensional and canonical Earth–Moon/general CR3BP propagation, composable coast phases and impulsive links, direct periodic-state constraints, canonical/synodic conversions, Lagrange points, Jacobi diagnostics, and transfer/reference-orbit plotting.

octavian declares ASSET (asset_asrl) as a runtime dependency because the solver-backed workflows rely on it.

Install

For daily development on Linux x86_64 (glibc 2.31 or newer), use a repository-local virtual environment:

python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install --no-user -e ".[dev]"
python -m octavian.diagnostics

After activation, use normal commands such as python examples/quick/01_two_impulse_free_time.py and pytest.

For local development and ASSET-backed workflows on Windows, use the recommended Conda environment. It installs ASSET and its native runtime inside one isolated prefix:

conda env create --file environment.yml
conda run --name octavian-dev python -m pip install --no-user -e ".[dev]"
conda run --name octavian-dev python -m octavian.diagnostics

See the hosted Development Environment guide for the platform support boundary, daily commands, dependency tiers, and the recommended environment pattern for other projects. Windows also supports a repository-local pip + venv setup:

py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install --no-user -e ".[dev]"
python -m octavian.diagnostics

For a standard installed package with the Plotly and Matplotlib backends:

pip install "octavian[viz]"

For solver and astrodynamics code without visualization, pip install octavian is the smaller dependency set. Add YAML support only when needed:

pip install "octavian[yaml]"

Before running solver-backed examples, verify ASSET imports in the active environment:

python -c "import asset_asrl; print(asset_asrl.__file__)"

Examples

python examples/quick/01_two_impulse_free_time.py
python examples/quick/02_two_impulse_precoast_impulsive_link.py
python examples/composable/earth_centered/08_chemical_burn_j2.py
python examples/composable/earth_centered/12_thrust_frames_and_attitude.py
python examples/composable/earth_centered/13_cannonball_drag_srp.py
python examples/analysis/01_propagation_namespace.py
python examples/composable/relative/25_cannonball_drag_srp.py
python examples/composable/cislunar/28_canonical_periodic_orbit.py
python examples/composable/cislunar/29_periodic_orbit_transfer.py
python examples/composable/cislunar/30_high_fidelity_recapture.py
python examples/composable/cislunar/31_jacobi_targeted_periodic_orbit.py
python examples/outputs/01_ephemeris_files.py
python examples/outputs/02_matplotlib_plots.py
python -m octavian.config examples/config/01_two_impulse_transfer.json

The examples also save Matplotlib PNGs beside their interactive HTML plots. Import save_trajectory_image (or its relative/CR3BP counterpart) from octavian.viz.matplotlib and pass the trajectory, just like the HTML helpers. Equatorial transfers and planar Lyapunov orbits use equal-scale 2D XY views; inclined transfers and relative safety ellipses use 3D views. For examples, output filenames, and figure customization, see the static plotting guide. Install octavian[viz] first; set MPLBACKEND=Agg when running without a display.

JSON works without another dependency. Install octavian[yaml] to load YAML mission files. Both formats construct the same Python mission objects and use the same solvers as ordinary mission scripts.

See the hosted example capability index for a task-oriented map of every executable example and mission pattern.

Documentation

The docs are built with MkDocs and publish through GitHub Pages. Browse the public documentation at ghevia.github.io/octavian.

pip install -e ".[dev]"
python -m mkdocs serve
python -m mkdocs build

When GitHub Pages is enabled for the repository with Source: GitHub Actions, the docs workflow publishes the site from pushes to dev.

Development

conda run --name octavian-dev python -m pip install --no-user -e ".[dev]"
conda run --name octavian-dev pre-commit install
conda run --name octavian-dev python -m build
conda run --name octavian-dev python -m pytest

Studies

Use octavian.study.grid to run parameter sweeps and optionally save results to disk.

Releasing

Release versions are published from Git tags such as v0.1.5 by GitHub Actions. Maintainer steps are documented in RELEASING.md.

Release files for octavian 0.4.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for octavian 0.4.10
File Size Uploaded
octavian-0.4.10.tar.gz 6.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for octavian 0.4.10
File Interpreter ABI Platform
octavian-0.4.10-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 MB

Release files / octavian-0.4.10.tar.gz

Download URL octavian-0.4.10.tar.gz
Size 6.8 MB
Tags Source
SHA-256 checksum
How to use checksums
4832926d61c6f53fc1ca7c0cdc32787b2589513f8fe0ada7f117006d9c1cf46a
BLAKE2b-256 checksum
How to use checksums
d1bfead1c54ed2a96587f09dd8430af1db484290891e2df20e700585bd80a789
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release files / octavian-0.4.10-py3-none-any.whl

Download URL octavian-0.4.10-py3-none-any.whl
Size 6.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
c5cde9e94c6f4c8b01eb2d023f546b68ea4a22e87cbc1b3e90119e961a1131f6
BLAKE2b-256 checksum
How to use checksums
57226cedff383cd671b85c783c99021fd93639131722e3c91de82e49e06d3673
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.13

2 release files

0.4.12

2 release files

0.4.11

2 release files

This release

0.4.10 This release

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page