pykep Sidecar Evaluation (#724)

Status: No-Go

Decision: Do not adopt pykep as a sidecar container.

Date: 2026-03-03

Context

Issue #724 proposed evaluating pykep (ESA Advanced Concepts Team) as a sidecar container for offline Sims-Flanagan low-thrust trajectory optimization. The goal was to produce more fuel-efficient interplanetary transfer plans than our Lambert-based grid search.

Evaluation Findings

1. Python Version Incompatibility

pykep v2.6 pip wheels only support Python 3.6–3.8. Galaxy runs Python 3.12 across all services. conda-forge has v2.6.4 but requires a conda-based Docker image, which conflicts with our slim image strategy.

2. Unacceptable Image Size

A conda-based image with pykep + pagmo2 adds 400–600 MB to image size. Current Galaxy service images are ~80–100 MB (slim). The Izzo Lambert solver was deliberately ported to pure Python to avoid exactly this kind of dependency bloat.

3. No Sidecar Precedent

All Galaxy pods are single-container deployments. Adding a sidecar introduces new operational complexity (health checks, resource limits, failure modes, restart ordering) with no existing patterns to follow.

4. Existing System Already Covers the Use Case

The current trajectory planning stack handles all in-game transfer scenarios:

Component Capability
trajectory_planner.py Lambert grid search (100 candidates) + multi-body forward integration
qlaw.py Izzo 2015 Lambert solver (pure Python, 0% failure rate, 30 µs median), Q-law continuous-thrust guidance
maneuver_transfer.py Full cross-SOI state machine (escape → interplanetary → capture → circularize)
ZEM/ZEV guidance Interplanetary cruise corrections

All running in-process with zero external dependencies.

5. Future Alternative If Needed

If fuel-optimal trajectory planning becomes a requirement, scipy.optimize.minimize with custom Sims-Flanagan constraints is a viable in-process alternative:

  • +35 MB (vs +400–600 MB for pykep/conda)
  • Python 3.12 compatible
  • No sidecar or conda needed
  • scipy is already a transitive dependency

Decision Rationale

The marginal Δv improvement from Sims-Flanagan optimization does not justify:

  1. A 5–7× increase in container image size
  2. A Python version downgrade or conda migration
  3. New sidecar operational complexity
  4. Divergence from the single-container deployment model

The existing Lambert + Q-law stack provides adequate transfer planning for all current game scenarios.


Back to top

Galaxy — Kubernetes-based multiplayer space game

This site uses Just the Docs, a documentation theme for Jekyll.