Highlights
Candidate Tree Visualization — GEPA now generates an interactive HTML lineage tree of all candidates explored during optimization. Nodes are color-coded by role (best, Pareto front, seed) with hover previews and click-to-pin tooltips for reading full prompt text. The tree is automatically logged to WandB and MLflow at each step — no configuration needed. (#256)
gskill: Automated Skill Learning for Coding Agents — A new gepa.gskill module that uses optimize_anything to automatically discover and learn repository-specific skills for coding agents, powered by SWE-smith and Docker. (#213)
Top-K Pareto Candidate Selector — New candidate_selection_strategy="top_k_pareto" limits parent selection to the top-K candidates by aggregate score (default K=5), focusing mutation effort on the most promising programs. (#246)
Improvements
- Parallel evaluation on by default —
EngineConfignow defaults toparallel=Truewithmax_workers=os.cpu_count(). No configuration changes needed. (#240) - Atomic state saves — Checkpoints now use temp-file +
os.replace(), preventing corruption on interrupted runs. (#242) - JSON run artifacts —
run_log.jsonandcandidates.jsonare now written to the run directory after each state save, enabling post-hoc analysis without extra code. (#245) - Cleaner experiment tracking — WandB/MLflow logging overhauled: engine config logged at start, best/seed prompts in summary, scalar metrics begin at step 0. (#243)
- Earlier callback firing —
on_optimization_startnow fires before seed valset evaluation, not after. (#244)
Bug Fixes
cloudpickleis now a proper dependency in thefullextras group —use_cloudpickle=Trueno longer raisesModuleNotFoundError. (#242)
Examples & Tutorials
- Four new
optimize_anythingexample suites: AIME math, ARC-AGI, circle packing, and blackbox optimization. (#234) - New tutorial on speeding up a Sudoku solver with GEPA. (#224)
- Pydantic AI tutorial added to showcase. (#211)
What's Changed
- Update blog post links with new URLs by @LakshyAAAgrawal in #220
- fix image social preview by @LakshyAAAgrawal in #221
- Update blog by @LakshyAAAgrawal in #223
- Add tutorial on speeding up Sudoku solver with GEPA by @vacmar01 in #224
- Add gskill: automated repository-specific skill learning for coding agents by @rohitsandadi in #213
- Add Sutro link to the documentation index by @LakshyAAAgrawal in #226
- docs: add Pydantic AI tutorial to showcase by @diego-lima in #211
- Add Google Scholar tags and Redirection for links by @LakshyAAAgrawal in #237
- add optimize-anything example suites by @lukeleeai in #234
- docs: add gskill guide by @rohitsandadi in #229
- Enable parallel evaluation by default in EngineConfig by @LakshyAAAgrawal in #240
- fix: add cloudpickle dep + atomic state saves by @LakshyAAAgrawal in #242
- docs: add BAML prompt optimization link and Bedrock FAQ by @LakshyAAAgrawal in #250
- feat: save run log and candidates as JSON to run_dir by @LakshyAAAgrawal in #245
- feat: add Top-K Pareto candidate selector by @LakshyAAAgrawal in #246
- fix: reduce WandB/MLFlow logging noise by @LakshyAAAgrawal in #243
- fix: fire on_optimization_start callback before seed valset eval by @LakshyAAAgrawal in #244
- docs: add community research papers citing GEPA by @LakshyAAAgrawal in #257
- feat: candidate tree visualization with interactive tooltips by @LakshyAAAgrawal in #256
New Contributors
- @rohitsandadi made their first contribution in #213
- @diego-lima made their first contribution in #211
- @lukeleeai made their first contribution in #234
Full Changelog: v0.1.0...v0.1.1