Explore cellular-automata “worlds” as points in rule space — simulate them, search diverse high-quality niches with MAP-Elites, optionally guide generation with an LLM + surrogate, and inspect archives in a Streamlit UI.
Core loop: WorldSpec (rules + parameters) → run_world → behavioral metrics → archive or metrics JSONL.
Requires Python ≥ 3.11 and uv.
make install # creates .venv and syncs dependencies
source .venv/bin/activate # optional; or prefix commands with uv runDashboard extras are included in make install. To sync only the dashboard group later: make install-dashboard.
Primary path — illuminate a behavior archive from a scheduler YAML:
uv run python -m worldspace --illuminator mapelites \
--scheduler worldspace/specs/map_elites_scheduler_mini.yaml \
--output-dir artifacts/map_elites_smoke \
--seed 42 --steps 200 --grid 8Writes artifacts/map_elites_smoke/map_elites_archive.jsonl. Same smoke as CI:
make smoke-map-elitesstreamlit run dashboard/Home.pyDefault scan picks up the smoke archive above. Paths and discovery: dashboard/config/config.yaml — see docs/DASHBOARD.md.
Generate and simulate a fixed set of worlds (PCA / k-means layout, not the MAP-Elites archive):
uv run python -m worldspace \
--generator random \
--worlds 30 \
--steps 200 \
--grid 40 \
--metrics-trace results/metrics.jsonl| Start here | |
|---|---|
| Architecture | Package map, two CLI paths |
| MAP-Elites | Illuminator, archives, schedulers |
| WorldSpace | Simulator, WorldSpec, generators |
| Surrogate | Hints, buffer, acquisition (shadow / filter) |
| Dashboard | Streamlit setup and pages |
| Also | |
|---|---|
| Domains | Maze / dungeon / sphere runners (not main CLI) |
| Formulas | Metrics and fitness definitions |
| Protocol freeze timeline | Lock / extension / reporting ledger (not in the journal PDF) |
MIT — © 2026 Artem Starovoitov