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:
- A 5–7× increase in container image size
- A Python version downgrade or conda migration
- New sidecar operational complexity
- Divergence from the single-container deployment model
The existing Lambert + Q-law stack provides adequate transfer planning for all current game scenarios.