What is biota

biota searches the parameter space of Flow-Lenia - a continuous cellular automaton where matter is conserved by construction. Rather than finding a single best creature, it fills a behavioral grid where each cell holds the most compact creature with a particular phenotypic fingerprint. The result is a structured catalog of qualitatively distinct life-forms.

Each creature is a soliton: a stable, self-maintaining pattern that persists indefinitely given the right parameters. Mass conservation is what makes them viable across a wide parameter range - without it, most settings produce explosion or collapse within a few steps.

The search algorithm

MAP-Elites runs a loop: sample parameters, simulate a creature, measure its behavior, insert it into the matching archive cell if it beats whatever is already there. After thousands of rollouts the archive fills with creatures covering the behavioral space as broadly as possible - not optimizing toward one solution, but toward diversity.

Simulations run in parallel across a 3-node GPU cluster. One batch task evaluates B creatures as a single vectorized forward pass on one RTX 5060 Ti. The driver owns the archive and orchestrates the search; workers are stateless.

archive capacity
16,384 cells
grid shape
32 × 32 × 16
cluster throughput
97 s / 500 rollouts

Behavioral descriptors

Three scalars measured from each rollout index the archive's three axes. All are empirically calibrated against real cluster runs, not derived from parameter values.

velocity
Mean center-of-mass displacement per step over the trailing 50 steps. Separates drifters from stationary creatures.
gyradius
Mass-weighted RMS distance from the center of mass. Separates compact dots from spread-out rings and lattices.
spectral entropy
Shannon entropy of the radially-averaged FFT spectrum. Separates smooth blobs from sharp-edged structured creatures.

Further reading

11 runs
preview
showcase-3-pretty
170 cells · 1.0% fill · 51.2% insertion
500 rollouts
preview
showcase-2-dense
484 cells · 3.0% fill · 50.5% insertion
1500 rollouts
preview
showcase-1-baseline
469 cells · 2.9% fill · 49.5% insertion
1500 rollouts
preview
20260412-224109-jade-zephyr
163 cells · 1.0% fill · 53.0% insertion
500 rollouts
preview
20260412-222852-tawny-orchid
164 cells · 1.0% fill · 51.8% insertion
500 rollouts
preview
20260412-222248-noble-beacon
547 cells · 3.3% fill · 44.5% insertion
2000 rollouts
preview
20260412-221641-dusky-anchor
496 cells · 3.0% fill · 41.8% insertion
2000 rollouts
preview
20260412-152800-dusky-junco
164 cells · 1.0% fill · 51.8% insertion
500 rollouts
preview
20260412-152312-lithe-willow
423 cells · 2.6% fill · 46.0% insertion
1500 rollouts
preview
20260412-151625-glossy-quartz
229 cells · 1.4% fill · 61.2% insertion
500 rollouts
preview
20260409-220045-vivid-boulder
228 cells · 1.4% fill · 60.8% insertion
500 rollouts

Run your own atlas

biota is a self-contained CLI tool. You can run it on a laptop for quick iteration or across a Ray cluster for full-scale searches. The only hard dependencies are Python 3.12, PyTorch, and Ray.

Install

# Clone and install
git clone https://github.com/rkv0id/biota
cd biota
uv sync

Quick start

1
Run a search
The dev preset (64×64 grid, 200 steps) is fast enough for a laptop. No Ray needed.
uv run biota search --preset dev --budget 200
2
Build the viewer
Generates a self-contained HTML file for each run, plus an index.
python scripts/build_index.py
open runs/index.html

GPU and cluster

On Apple Silicon pass --device mps --batch-size 32 for a meaningful speedup. On a CUDA cluster, use --batch-size 64 --workers N where N is the number of nodes. The standard preset (192×192, 300 steps) at B=64 on an RTX 5060 Ti cluster runs 500 rollouts in about 97 seconds.

# Single GPU, no Ray
uv run biota search --preset standard --budget 500 \
    --device cuda --batch-size 64

# Multi-node Ray cluster
uv run biota search --ray-address head:6379 \
    --preset standard --budget 2000 \
    --device cuda --batch-size 64 --workers 3

More detail

Rami Kader
Machine learning engineer. Interested in cellular automata, artificial life, evolutionary computing, and distributed systems.