click anywhere for another organism playground →

fluoddity

Emergent vector-trail organisms. Each one is a deterministic genome saved as an ATProto record on your own Bluesky account — fork it and it grows a new branch of the tree.

play
The game →
No sliders. Tap the one you like; it gets more interesting. Heat it until it boils, tame the boil, then breed an endless stream by your taste — every find saved to your own Bluesky as you go.
create
Playground →
Tune a living organism in real time — sensing, forces, trails. A liveness readout grades it as you go. Save it to your PDS to plant it in the garden.
say
Say →
Type a word and a swarm of vector-trail agents is pulled into its shape — an irresistible text attractor they still bop around. Tune the pull, the hold, and the bop.
read
Read →
RSVP through the swarm. Search Project Gutenberg and stream a whole book word by word — each one summoned out of the field of agents that race to spell it, then dissolve into the next.
clip
Clip →
Make a narrated video: an ElevenLabs voiceover over the swarm spelling a snippet word by word, recorded with audio and posted to Bluesky. Whitelisted.
browse
Gallery →
Every organism anyone has saved, discovered through Constellation. Hover to bring one to life; click for its lineage; open any author's collection.
map
Phase space →
Phylogenetic metrics and an interactive phenotype map — every organism as a point, lineage edges drawn through the space. Pan, zoom, and dive in.
survey
Parameter space →
The genome's 16 axes, scored by the hero's interestingness engine. A 2-D slice through any two knobs, a spectrum sweep along every axis at once, and the basin around one organism on the hypersphere — sampled live. Make any cell the base and dive in.
atlas
The forest →
Every published breeder run as a tree through phase space, colored by the scoring lens that drove it. The emergent atlas of where exploration goes and what people's criteria pull them toward.
judge
Hot or not →
Walk a queue of organisms, vote each HOT or NOT. From your judgments alone we fit a separating hyperplane — your own scoring rubric in descriptor space. Carry it to the breeder and evolve by your taste, not just by temperature.
select
Selection →
Guided breeding. A 4×4 of living variations — pick the one you like and its children fill the next grid. No sliders; you are the fitness function.
arena
Arena →
One shared field, 16 species with different rulesets intermingling — competing for territory in the same trail. Pick one and it seeds the next ecosystem.
view
On a torus →
The simulation already runs with toroidal boundary conditions — this just unfurls the wrap onto a 3D donut so you can watch trails cross the seam in real time. Drag to orbit.
breed
Breeder lab →
An automated interactive-evolution loop. Exploratory noise, behavioral diversity, and narrative momentum shape the search as a lineage grows generation by generation.

Fluoddity, briefly

a vector-trail generalization of slime-mold transport

Classic Physarum sims have agents drop a scalar pheromone, sniff a couple of points ahead, and turn toward the brighter side; the trail blurs and fades. Fluoddity — created by aphid91 — generalizes that on three axes:

① Vector trails. Each cell of the field stores a 2D flow vector, not just an intensity. Hue is flow direction; brightness is speed.
② An evolvable black box. There is no hard-coded "steer toward bright." Each agent feeds its left/right sensor readings into a small Fourier-feature function — the rule — that outputs a push and a sideways hop. Left/right symmetry is enforced so nothing spins by bias alone.
③ Cohorts & selection. The population is split into cohorts, each a mutation of the base rule, so you can hunt for shapes you like.

Under the hood

Each physics step is three GPU passes over a few hundred thousand agents and a trail field:

① Move. Every agent reads the field at two sensors, splayed by sensor angle at sensor distance ahead of its heading. The two readings are rotated into the agent's own frame and fed to its rule (a 10-term Fourier function, 4 inputs → 4 outputs), evaluated twice with left/right mirrored and averaged so handedness cancels. Out come a force (added to velocity, then drag bleeds it off) and a strafe (added straight to position). Then it moves and wraps at the edges.

② Deposit. Each agent stamps a small Gaussian of its velocity vector into a brush texture. The trail therefore records the direction and speed of flow at every point — the "vector trail" that sets Fluoddity apart from scalar pheromone.

③ Diffuse. The field is blurred (by diffusion) and blended with the fresh deposits as a mix: field = field·persistence + deposits·(1−persistence), which keeps equilibrium brightness independent of the persistence value.

The genome

A single rule seed deterministically generates those 10 Fourier centers; each cohort then applies a small mutation, so adjacent cohorts are smooth variations of one creature. "New organism" rerolls the seed; "mutate" nudges it. That space of rules is what you forage in. aphid91's temperature intuition is the compass: too hot and it's structureless brownian gas; too cold and it freezes or dies; the good stuff lives on the edge.

When you save an organism, its full parameter snapshot plus the seed is written as a com.minomobi.fluoddity.organism record on your own Bluesky PDS — you own it, and anyone can fork it. A constant backlink lets Constellation enumerate every organism across all authors, which is how the gallery, the phase-space map, and the lineage trees are built.

Family tree

Conway's Game of Life (1970) — the great-grandparent. Dead-simple local rules, unbounded emergent structure: the founding proof that complexity can be grown, not designed.

Physarum transport models — the direct parent. Jeff Jones (2010) formalized agent-based slime-mould networks; Sage Jenson (mxsage) made them famous as living-looking art. Fluoddity is this model generalized: scalar trail → vector flow field, hand-coded steering → an evolvable Fourier black box, one species → cohorts under artificial selection.

Cousins: reaction–diffusion / Turing patterns (Gray–Scott), Lenia and SmoothLife (Conway made continuous), and Boids (Reynolds, 1986). Fluoddity sits exactly where agent-based steering, a diffusing field, and evolutionary search overlap.

The hunt

the citizen-science instrument it became

Emergence isn't designed; it's found. The rule space is enormous and almost entirely dead — the interesting parts live in thin filaments threaded through a void of static, boil, and gas, and nobody has a map of where the filaments run. A reasonable fitness function is a temperature gauge in a system whose dimensions that matter are aesthetic, behavioral, situational. Two people watching the same field will pick different favorites, and their taste is data, not noise. The whole site is an instrument for that hunt.

The instruments

① Scopes. The landing hero, the torus, and the gallery sample the viable parameter box and reject-sample on fitness, so blank fields stay out of view. The torus renders the toroidal wrap the simulation has had all along — trails really do cross the seam. The gallery is everyone's saved menagerie, indexed across PDSes via Constellation backlinks.

② Pens. Selection is a deliberate 4×4 of side-by-side variations — pick the one you like, its mutations fill the next grid. The arena is sixteen independent rulesets sharing one field, competing for territory like an ecology; pick the species you like and its lineage seeds the next ecosystem. Either way, you're the selection pressure and the engine is doing the dance.

③ Workbench. The playground — sliders, mouse-draw, a live readout of how alive the field looks — is for tuning a specific creature by hand, or branching off something you found in the gallery. Saving an organism plants it under your own DID; anyone can fork it into a new branch of the tree.

④ Autopilot. The breeder runs an evolutionary loop with a default temperature fitness, or a scoring function you wrote. Each run becomes an expedition — a record of the trajectory through descriptor space and the scoring lens that drove it, publishable to your PDS in one click.

⑤ Taste, formalized. Hot or not turns a queue of organisms into a labeled set; we fit the separating hyperplane your votes imply, and you carry the result back into the breeder as a one-line rubric. If it converges, you have a portable lens — your aesthetic as a sentence of code. If it doesn't, that's information too: your taste lives somewhere we don't yet measure, and the next round of features needs another axis. (Image embeddings are the obvious next axis; the four descriptor scalars are the cheap start.)

⑥ Atlas. The forest accumulates every published expedition and every published rubric, grouped by scoring lens so you can see whose criteria pulled them to which corners of phase space, and which rubrics turn out to be generative across multiple authors. Watching the forest grow is watching the collective shape of "what minds-with-taste find interesting in this corner of rule space" become a real, drawable thing.

Why citizen science

No platform owns the menagerie. Your saved organisms, your trained rubrics, your published expeditions all live as ATProto records on your Bluesky account; Constellation makes them discoverable across the whole network without anyone running an index that everyone has to trust. Sign in once on the landing and the same session carries through every surface; sign out and it's gone — nothing here phones home, no profile is being built about you. The frame is field naturalism: open-ended phenomena, low cost per experiment, no specialized hardware, and a way for someone's careful judgment in their browser at midnight to compound into a public artifact the next person can pick up tomorrow morning.

We're not all the way there. The default fitness still has more authority than it deserves. The rubric feature space is still narrow — four scalars when a richer one is plainly needed for the harder aesthetics. The engine is still slightly split between the playground and everything else. But the remaining work is engineering, not vision. The system already supports the thing we wanted: a person, an organism that caught their eye, a way to teach a machine what caught it, and a way to hand that taste to the next person whose criterion was waiting on a name. The point of an instrument is to make a hunt that used to take a career take an evening — and the point of sharing an instrument is to make a hunt that used to take an evening compound, across people, into a map.

About this build. An independent, clean-room reimplementation of the published algorithm so you can play in the browser — not aphid91's code. The original is far richer: source · core engine + WebGL demo · @all-paperclips.bsky.social.