Skip to content
Draft
Show file tree
Hide file tree
Changes from 46 commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
25239bc
feat: write comprehensive agent-readable state to run_dir
gepa-bot Apr 13, 2026
c6f6855
feat: export evaluation cache, rejected proposals, and side_info
gepa-bot Apr 13, 2026
e38c1ec
refactor: split agent-readable state into directory tree, gated opt-in
Shangyint Apr 22, 2026
56cd6a6
feat: capture per-candidate valset outputs and trajectories for agent…
Shangyint Apr 22, 2026
45cbc9e
feat: tweak state tracking and reorganize state structure
Shangyint Apr 23, 2026
72acc6c
fix: tests
Shangyint Apr 23, 2026
324b994
feat: add gepa.omni — backend-pluggable optimize_anything
Shangyint Apr 29, 2026
b6212b2
refactor: collapse omni api kwargs into typed OmniConfig
Shangyint Apr 29, 2026
b727e91
fix(omni): satisfy pyright in GepaBackend.run
Shangyint Apr 29, 2026
daa5fee
refactor(omni): drop Example dataclass, treat dataset items as opaque
Shangyint Apr 29, 2026
afb6fe8
feat(omni): add ensemble helpers (sequential / parallel / best_of / v…
Shangyint Apr 30, 2026
66e2ca9
Merge branch 'feat/agent-readable-state' into feat/optimize-anything-…
Shangyint Apr 30, 2026
cfef49e
feat(omni): add ClaudeCodeAgentProposer for GepaBackend
Shangyint Apr 30, 2026
f45051c
feat(omni): port terrarium adapter updates to omni backends
Shangyint May 1, 2026
e59192c
feat(omni): add optimize_anything_with_server primitive
Shangyint May 1, 2026
f26713d
fix(omni): never use test_set as valset; port meta_harness updates
Shangyint May 1, 2026
c322262
feat(omni): merge train+val into a single agent-visible pool
Shangyint May 1, 2026
25a0947
feat(omni): per-example pareto frontier in meta_harness
Shangyint May 1, 2026
07e57fa
feat(omni): add _with_server variants of ensemble helpers
Shangyint May 2, 2026
7d7ed15
fix(omni): pin model defaults to versioned ``claude-sonnet-4-6``
Shangyint May 2, 2026
e902f6c
fix(omni/gepa): default ``cache_evaluation=True``
Shangyint May 2, 2026
bb56069
feat(omni/cc): Ralph loop — resume claude session until budget out
Shangyint May 2, 2026
144c3de
refactor(omni): fair-share budget across stages in sequential_with_se…
Shangyint May 2, 2026
21b0c85
fix(omni): auto-thread OmniConfig.effort into reflection_lm_kwargs
Shangyint May 2, 2026
8b1111c
refactor(omni): drop the effort vs max_thinking_tokens mutex
Shangyint May 2, 2026
930096b
fix(omni): copy cca session transcript using the cwd claude actually …
Shangyint May 3, 2026
faed559
refactor(state): make agent-state save incremental and drop trace.json
Shangyint May 3, 2026
b4943cb
misc: change cca
Shangyint May 3, 2026
6954076
fix(omni/mh): default max_iterations to None
Benzhang2004 May 4, 2026
7100b99
feat(omni): score MH seed in iter1 + rename stage_results to all_results
Shangyint May 4, 2026
1dd130e
fix(omni): cc/mh backends preserve work_dir under self.run_dir
Shangyint May 5, 2026
1469b9a
feat(omni): add best_of_n backend (stateless sample-and-keep-best)
Shangyint May 7, 2026
100239d
fix(best_of_n): count only LM cost against max_token_cost
Shangyint May 7, 2026
39e6a1b
feat(best_of_n): record per-sample cost in eval_log
Shangyint May 7, 2026
4befdcc
fix(best_of_n): guard against None LM response
Shangyint May 7, 2026
fbcef84
feat(best_of_n): persist per-sample cost log to bon_cost_log.jsonl
Shangyint May 7, 2026
4c31454
feat(omni/claude_code): merge upstream best_of_n work with local Ralp…
May 11, 2026
ce80126
fix(tests): patch subprocess.Popen in claude_code backend tests
Shangyint Jun 11, 2026
7f4f695
refactor: rename omni -> oa/engines, make engine API the default opti…
Jun 16, 2026
e4b4033
style: fix ruff import sorting in oa modules
Jun 16, 2026
7da4aa1
fix(oa/sandbox): emit a single --permission-mode for claude --print
Jun 17, 2026
d6e7811
refactor(oa): rename OptimizeAnythingConfig.config -> engine_config
Jun 17, 2026
c2ea0c8
Merge branch 'main' into feat/optimize-anything-omni
Shangyint Jun 17, 2026
2b48717
refactor(oa): make max_token_cost an engine-owned proposer cap, not a…
Jun 18, 2026
cca2e02
fix(oa): fall back to legacy optimize_anything instead of raising
Jun 18, 2026
631403e
fix(oa): cast ensemble optimize_anything result to Result for pyright
Jun 18, 2026
43d9f40
refactor(oa): UUID-anchored iterations/ tree + merged save method
Jun 20, 2026
a7751eb
fix: make things simpler
Jun 20, 2026
9bb69f2
refactor(oa): dissolve Task into optimize_anything args, drop legacy …
Shangyint Jun 23, 2026
0750158
docs(oa): drop confusing optimize_anything_with_server pointer from m…
Shangyint Jun 23, 2026
1179e5e
test(oa): update optimize_anything tests for dropped legacy route
Shangyint Jun 23, 2026
8ce195d
refactor(oa): remove Task.metadata, move handoffs to engine_config
Shangyint Jun 23, 2026
7e2b64d
refactor(oa): optional run name in config, rename initial_candidate -…
Shangyint Jun 24, 2026
983eec0
refactor(oa): align optimize_anything signature with legacy API; drop…
Shangyint Jun 24, 2026
e700b6e
refactor(oa): make optimize_anything substantive; warn instead of rai…
Shangyint Jun 24, 2026
50e5eab
chore: revert uv.lock to match main
Shangyint Jun 25, 2026
f108334
refactor(oa): rename legacy_optimize_anything module to gepa_launcher
Shangyint Jun 26, 2026
18045c9
docs(oa): clean up gepa_launcher module docstring header
Shangyint Jun 26, 2026
5bc3eae
refactor(oa): typed per-engine configs, GEPAConfig passthrough, drop …
Shangyint Jul 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -216,3 +216,4 @@ __marimo__/
runs/
outputs/
gepa_terminus/
archive/
17 changes: 15 additions & 2 deletions docs/docs/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,23 @@ Welcome to the GEPA API Reference. This documentation is auto-generated from the

## optimize_anything

The primary public API for GEPA. Optimize any text artifact with LLM-guided evolution — bring a seed candidate and an evaluator, and GEPA handles the rest.
The primary public API for GEPA. Define a task, provide an evaluator, and choose an optimization engine.

- [`optimize_anything`](optimize_anything/optimize_anything.md)
- [`Task`](optimize_anything/Task.md)
- [`OptimizeAnythingConfig`](optimize_anything/OptimizeAnythingConfig.md)
- [`Engine`](optimize_anything/Engine.md)
- [`Result`](optimize_anything/Result.md)
- [`EvalServer`](optimize_anything/EvalServer.md)
- [`BudgetTracker`](optimize_anything/BudgetTracker.md)
- [`optimize_anything_with_server`](optimize_anything/optimize_anything_with_server.md)
- [`list_engines`](optimize_anything/list_engines.md)
- [`register_engine`](optimize_anything/register_engine.md)

## GEPA Engine

Configuration for the built-in GEPA engine (`engine="gepa"`). These classes are passed via `OptimizeAnythingConfig(engine_config={...})` to control GEPA-specific behavior.

- [`GEPAConfig`](optimize_anything/GEPAConfig.md)
- [`EngineConfig`](optimize_anything/EngineConfig.md)
- [`ReflectionConfig`](optimize_anything/ReflectionConfig.md)
Expand Down Expand Up @@ -119,4 +133,3 @@ Strategies for various aspects of the optimization process.
- [`EvaluationPolicy`](strategies/EvaluationPolicy.md)
- [`FullEvaluationPolicy`](strategies/FullEvaluationPolicy.md)
- [`InstructionProposalSignature`](strategies/InstructionProposalSignature.md)

15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/BudgetTracker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# BudgetTracker

::: gepa.optimize_anything.BudgetTracker
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/Engine.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Engine

::: gepa.optimize_anything.Engine
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/EngineConfig.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# EngineConfig

::: gepa.optimize_anything.EngineConfig
::: gepa.legacy_optimize_anything.EngineConfig
handler: python
options:
show_source: true
Expand Down
15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/EvalServer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# EvalServer

::: gepa.optimize_anything.EvalServer
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/Evaluator.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Evaluator

::: gepa.optimize_anything.Evaluator
::: gepa.legacy_optimize_anything.Evaluator
handler: python
options:
show_source: true
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/GEPAConfig.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# GEPAConfig

::: gepa.optimize_anything.GEPAConfig
::: gepa.legacy_optimize_anything.GEPAConfig
handler: python
options:
show_source: true
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/LogContext.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# LogContext

::: gepa.optimize_anything.LogContext
::: gepa.legacy_optimize_anything.LogContext
handler: python
options:
show_source: true
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/MergeConfig.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MergeConfig

::: gepa.optimize_anything.MergeConfig
::: gepa.legacy_optimize_anything.MergeConfig
handler: python
options:
show_source: true
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/OptimizationState.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OptimizationState

::: gepa.optimize_anything.OptimizationState
::: gepa.legacy_optimize_anything.OptimizationState
handler: python
options:
show_source: true
Expand Down
15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/OptimizeAnythingConfig.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# OptimizeAnythingConfig

::: gepa.optimize_anything.OptimizeAnythingConfig
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/RefinerConfig.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# RefinerConfig

::: gepa.optimize_anything.RefinerConfig
::: gepa.legacy_optimize_anything.RefinerConfig
handler: python
options:
show_source: true
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/ReflectionConfig.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ReflectionConfig

::: gepa.optimize_anything.ReflectionConfig
::: gepa.legacy_optimize_anything.ReflectionConfig
handler: python
options:
show_source: true
Expand Down
15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/Result.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Result

::: gepa.optimize_anything.Result
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/Task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Task

::: gepa.optimize_anything.Task
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/TrackingConfig.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# TrackingConfig

::: gepa.optimize_anything.TrackingConfig
::: gepa.legacy_optimize_anything.TrackingConfig
handler: python
options:
show_source: true
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/get_log_context.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# get_log_context

::: gepa.optimize_anything.get_log_context
::: gepa.legacy_optimize_anything.get_log_context
handler: python
options:
show_source: true
Expand Down
15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/list_engines.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# list_engines

::: gepa.optimize_anything.list_engines
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/log.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# log

::: gepa.optimize_anything.log
::: gepa.legacy_optimize_anything.log
handler: python
options:
show_source: true
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/make_litellm_lm.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# make_litellm_lm

::: gepa.optimize_anything.make_litellm_lm
::: gepa.legacy_optimize_anything.make_litellm_lm
handler: python
options:
show_source: true
Expand Down
15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/optimize_anything_with_server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# optimize_anything_with_server

::: gepa.optimize_anything.optimize_anything_with_server
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
15 changes: 15 additions & 0 deletions docs/docs/api/optimize_anything/register_engine.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# register_engine

::: gepa.optimize_anything.register_engine
handler: python
options:
show_source: true
show_root_heading: true
heading_level: 2
docstring_style: google
show_root_full_path: true
show_object_full_path: false
separate_signature: false
inherited_members: true
members_order: source
show_signature_annotations: true
2 changes: 1 addition & 1 deletion docs/docs/api/optimize_anything/set_log_context.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# set_log_context

::: gepa.optimize_anything.set_log_context
::: gepa.legacy_optimize_anything.set_log_context
handler: python
options:
show_source: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ The seedless mode is particularly useful for tasks where the solution space is l

The key ideas: (1) **three unified modes** (single-task search, multi-task search, and generalization) under one declarative API; (2) **Actionable Side Information (ASI)** as a first-class API concept that turns blind mutation into targeted, diagnostic-driven engineering; (3) **Pareto-efficient search** across metrics and examples that outperforms naive all-at-once optimization.

By design, `optimize_anything` is a general frontend for text optimization. It is currently powered by GEPA as the optimization backend, but the API is backend-agnostic: as new optimization strategies emerge with increasingly powerful models, they can be plugged in without changing any user code. Our goal is for `optimize_anything` to always dispatch to the best available optimizer for your problem. We welcome community contributions of new optimization backends, evaluators, and case studies.
By design, `optimize_anything` is a general frontend for text optimization. It is currently powered by GEPA as the default optimization engine, but the API is engine-agnostic: as new optimization strategies emerge with increasingly powerful models, they can be plugged in without changing any user code. Our goal is for `optimize_anything` to always dispatch to the best available optimizer for your problem. We welcome community contributions of new optimization engines, evaluators, and case studies.

Get started:

Expand Down
10 changes: 10 additions & 0 deletions docs/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ nav:
- API Overview: api/index.md
- optimize_anything:
- optimize_anything: api/optimize_anything/optimize_anything.md
- Task: api/optimize_anything/Task.md
- OptimizeAnythingConfig: api/optimize_anything/OptimizeAnythingConfig.md
- Engine: api/optimize_anything/Engine.md
- Result: api/optimize_anything/Result.md
- EvalServer: api/optimize_anything/EvalServer.md
- BudgetTracker: api/optimize_anything/BudgetTracker.md
- optimize_anything_with_server: api/optimize_anything/optimize_anything_with_server.md
- list_engines: api/optimize_anything/list_engines.md
- register_engine: api/optimize_anything/register_engine.md
- GEPA Engine:
- GEPAConfig: api/optimize_anything/GEPAConfig.md
- EngineConfig: api/optimize_anything/EngineConfig.md
- ReflectionConfig: api/optimize_anything/ReflectionConfig.md
Expand Down
Loading
Loading