Skip to content
Dan Riddell edited this page Aug 6, 2026 · 4 revisions

galapagos

galapagos — evolution, observed.

A pluggable Go framework for visualizing learning algorithms in real time. The flagship demo evolves a population of cars that learn to drive a procedurally generated race track.

Environments, agents and the renderer are decoupled behind small interfaces, so any agent can run in any environment. Runs are deterministic from their seed: a seed is chosen at random when none is given and logged, and passing --seed N (or a config seed) reproduces a run exactly.

galapagos racing demo

Environments and agents

Environment ga neat qlearning efficientcube evochess
race ✅ ✅ — — —
cartpole ✅ ✅ ✅ — —
maze ✅ ✅ ✅ — —
cube — — — ✅ —
flappy ✅ ✅ — — —
chess ✅ ✅ — — ✅

Documentation

Page Description
Environments Every environment command and its agents
Windowed demo The live window and its controls
Browser demo The WebAssembly build and serve
Architecture How environments, agents and the renderer connect
Demos An animated GIF of each tool in action

Install

On macOS, the Homebrew cask installs the full binary — the native window plus every CLI command and the browser demo:

brew install --cask danielriddell21/tap/galapagos

On Linux (or macOS without the native window), the Homebrew formula installs the cross-platform CLI; the browser demo rides along via galapagos serve:

brew install danielriddell21/tap/galapagos

The native window is macOS-only — it uses Metal, which needs no extra libraries. On any platform, galapagos serve opens the WebAssembly demo in your browser.

Linux: OpenGL/X11 libraries

Building the native window from source on Linux (go build -tags ebiten ./cmd/galapagos) needs OpenGL/X11. On Debian/Ubuntu:

sudo apt install libgl1-mesa-dev libxrandr-dev libxcursor-dev libxinerama-dev libxi-dev

Links

Clone this wiki locally