OpenEvolve + World Knowledge
OpenEvolve with an open-world retrieval layer: a gate decides when to search the web, and the search query is itself evolved.
Every LLM-driven evolutionary search framework in the leaderboard — OpenEvolve, AdaEvolve, EvoX, GEPA — is **closed-world**. Each prompt is assembled from the run's own trajectory, so the loop can only ever recombine what it has already thought of. When the population plateaus, it has no mechanism for acquiring anything new, and it keeps re-deriving the same idea in slightly different words. A human researcher stuck on a problem does something else: they read a paper, check what is already known, and come back with an idea that was not in their own history.
This scaffold gives the loop that option. It is OpenEvolve — the same island MAP-Elites population, the same three-tier selection, the same SEARCH/REPLACE diff proposer, inherited rather than re-implemented — plus a **World Knowledge Layer** that turns the search into a bi-level optimization. The outer loop evolves *solutions* against the task's verifiable evaluator. A gate decides whether this iteration should seek external knowledge; retrieval can use Tavily (the default) or a restricted Claude Code WebSearch subprocess, rerank the result set listwise with a long-context LLM, or refine the query over several self-reflection rounds before the documents enter the mutation prompt.
The two loops are joined by a single number. When a candidate is written with retrieved documents in its prompt and then evaluated, the improvement it realized — `Δ_t = E(x_t) − E(x_{t−1})` — is written back onto the query that produced those documents. Since the LLM is frozen and never trained, those recorded `Δ`s are the *entire* supervision the query operator receives: the good ones and, just as importantly, the bad ones. The store shows the operator both extremes, because a list of only what worked cannot teach it what to stop searching for.
**None of the six component slots differ from `openevolve`.** That is the point. The components describe the *method* — a scaffold that listed a different PromptBuilder or a different Memory would be a different method, and the comparison would stop being about retrieval. The layer is orthogonal to all six: it is one object held by the scaffold and three call sites, so with it disabled — or on any iteration where the gate declines — the rendered prompt is byte-identical to OpenEvolve's and a difference between the two rows of a results table is a difference in *evidence*, not in wording.
The six components this scaffold snaps together. Each block names its concrete implementation.
The set of candidate solutions in play — the gene pool the search evolves over.
Decides which genomes survive and reproduce — tournament, elitism, novelty, or your own policy.
Assembles the context handed to the model — parents, feedback, instructions, examples.
The LLM-driven variation operator — proposes new candidates by mutation and crossover.
Scores each candidate against the task — the fitness signal that drives selection.
Open Scientific Discovery — World Knowledge Layer over OpenEvolve (open AlphaEvolve)
galapagos run --scaffold openevolve_world_knowledge --task circle_packing \
--proposer.model_name openai/gpt-4o-mini \
--proposer.api_base openrouter