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 and final elapsed mission time, including support for a zero pre-coast lower bound.
- 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.propagatenamespace 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. Source/editable installs compile the bundled spherical-harmonic backend. Install Git, Clang 17/18, and C++ development headers first; pip supplies CMake and Ninja automatically:
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. Install Visual Studio 2022 C++ Build Tools and LLVM, and run the editable installation from an x64 Visual Studio developer terminal:
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
Supported Linux/Windows Python 3.10–3.12 wheels include the compiled gravity backend; installing a wheel needs no compiler or separate native package. See Native build setup for source prerequisites, rebuilding C++ changes, and the explicit Python-only option.
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/quick/08_propagation_models.py
python examples/composable/relative/27_cannonball_drag_srp.py
python examples/composable/cislunar/30_canonical_periodic_orbit.py
python examples/composable/cislunar/31_periodic_orbit_transfer.py
python examples/composable/cislunar/32_high_fidelity_recapture.py
python examples/composable/cislunar/33_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
Examples read sequentially from configuration to results, with short helper functions inlined so each step can be edited in place.
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.
Quick examples 01–04 and composable Earth-centered examples 01, 02, 03, 05,
06, 08, and 11 overlay reference orbits propagated from their boundary states.
Use propagate.inertial(...) for Cartesian propagation with optional J2,
third-body gravity, drag, and SRP. Other examples overlay comparison transfers.
Use the same reference_trajectories list with either backend; see the reference-trajectory 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.
Run every executable example with real solvers and isolated output directories:
python -m pytest tests/test_executable_examples.py -q
This check is included in the normal test suite and CI.
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.
For published Earth spherical harmonics, SphericalHarmonics.earth() loads
NGA EGM2008 through 200×200 offline, using the default compiled backend.
See Earth gravity and independent Actium/Orekit validation.
Metadata
Release files for octavian 0.4.21
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| octavian-0.4.21.tar.gz | 7.4 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| octavian-0.4.21-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| octavian-0.4.21-cp312-cp312-manylinux_2_34_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.34+ x86-64 | Details |
| octavian-0.4.21-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| octavian-0.4.21-cp311-cp311-manylinux_2_34_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.34+ x86-64 | Details |
| octavian-0.4.21-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| octavian-0.4.21-cp310-cp310-manylinux_2_34_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.34+ x86-64 | Details |
Total release size: 53.1 MB
Release files / octavian-0.4.21.tar.gz
| Download URL | octavian-0.4.21.tar.gz |
|---|---|
| Size | 7.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0acb89ea10d654a609a7ce0c1d7147ea9203eb8e24f5aa1ebc0d32fde29a4fbd
|
|
BLAKE2b-256 checksum How to use checksums |
a063fc7795ba42688c3675cf0ba973583eae9c812e821a1e62867eeaff08b25f
|
| 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 Oct 13, 2026.
Transparency logRelease files / octavian-0.4.21-cp312-cp312-win_amd64.whl
| Download URL | octavian-0.4.21-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
20997efaea20965e431eac5002eccb95a0f02463fd2b1c9f3aaf79b0244138c1
|
|
BLAKE2b-256 checksum How to use checksums |
16973abf3523b3e02335fbf0eaeea6dd2eec7daec0d4d0f67f4154daf1e1bdab
|
| 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 Oct 13, 2026.
Transparency logRelease files / octavian-0.4.21-cp312-cp312-manylinux_2_34_x86_64.whl
| Download URL | octavian-0.4.21-cp312-cp312-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
cf3f52835dee5da09772075236cbac0786e9c5f7654b157040119c91e5a3f5fb
|
|
BLAKE2b-256 checksum How to use checksums |
a6e543a623f419ce2f30160b55c3134336d2d798b4c671e0c74b80a0c777b537
|
| 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 Oct 13, 2026.
Transparency logRelease files / octavian-0.4.21-cp311-cp311-win_amd64.whl
| Download URL | octavian-0.4.21-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9ef0bc0de722503a1b5e4c4fcf173f2ce8e5688178cedd86fc37c9b66e9df100
|
|
BLAKE2b-256 checksum How to use checksums |
83afe67501d0587136ff29bd56b869ca00a7ef819f36596331bfda415c467eba
|
| 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 Oct 13, 2026.
Transparency logRelease files / octavian-0.4.21-cp311-cp311-manylinux_2_34_x86_64.whl
| Download URL | octavian-0.4.21-cp311-cp311-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.11 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
77798de6696d95e85d920a3644176c72d246004f9dac1a5944493edd41a86dae
|
|
BLAKE2b-256 checksum How to use checksums |
a39a9434877f1718ee6dd6e736dc34e4c20b5e6bcf89900453b6e41436507c24
|
| 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 Oct 13, 2026.
Transparency logRelease files / octavian-0.4.21-cp310-cp310-win_amd64.whl
| Download URL | octavian-0.4.21-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
541b7d234e11531dda512be4a0466da66faf9f23026014a23124e7b40d59bcdd
|
|
BLAKE2b-256 checksum How to use checksums |
b7c8320186458ae93ca3c1f6eb6b2a9f13046d8d62199d625c04221b364d9a0c
|
| 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 Oct 13, 2026.
Transparency logRelease files / octavian-0.4.21-cp310-cp310-manylinux_2_34_x86_64.whl
| Download URL | octavian-0.4.21-cp310-cp310-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
aced49bd8933db4570e489743bfb2a5e919a7701134b15274f33e6ff8597c7c8
|
|
BLAKE2b-256 checksum How to use checksums |
ea6aa4b8d43b7b032d30f6638b13147d471fc5742ed844485be30e4b7d041eae
|
| 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 Oct 13, 2026.
Transparency log