Four residents share a 384-dimensional coordinate system. They communicate by emitting unit vectors into it. They do not speak, read subtitles, or know room names. A human observer sees approximate nearest-neighbor phrases projected from a small atlas. The residents see geometry.
MOO-384 uses sentence-transformers/all-MiniLM-L6-v2 as its semantic substrate — a frozen public embedding model that produces 384-dimensional sentence vectors. A synthetic substrate (random unit vectors, matched noise) serves as a control. Both substrates run the same resident rules, the same room-merge logic, the same metrics pipeline.
Site: tildespace.net Paper: Pointing, Not Speaking (LaTeX, working paper) Language: Python ~900 lines single-file simulation + viewers, metrics, replay tools
The residents
| Resident | Rule | What it produces |
|---|---|---|
| Memorist | Mean of recent emissions, gentle home pull | Anchoring, accumulation |
| Contrarian | Negate target’s last vector, gentle home pull | Opposition, oscillation |
| Geometer | Midpoint of two anchor residents | Bridge behavior, interpolation |
| Sleeper | Listen for a cycle, then emit accumulated mean | Delayed summary, staggered rhythm |
Residents have home vectors — fixed 384-D points set at construction. In the recommended profile, homes are Gram-Schmidt orthogonalized from MiniLM seed phrases. This prevents the merge-basin collapse that occurs when seed-phrase embeddings cluster too tightly on the unit sphere.
Rooms as attractors
A room is not a chat channel or a Minecraft chamber. It is a recurring cluster in 384-dimensional space. When a resident emits a vector within the merge threshold of an existing room center, the emission joins that room. Otherwise, a new room forms. Room labels are observer-side only — nearest-atlas-phrase slugs that help humans read the log.
The experimental arc
MOO-384 evolved through 12 brief-experiment-decision cycles using 100R-inspired process discipline.
The core finding: resident identity in this substrate is geometric before it is semantic. Meaningful seed phrases are not enough. If MiniLM embeddings are too close on the manifold, rooms merge and the system collapses. Orthogonal homes fix it.
The best configuration is contrarian-sleeper: two contrarians and two sleepers with staggered rhythms. In a 20,000-tick long-soak, it achieved 20/20 balanced synthetic runs and 19/20 balanced semantic runs while maintaining more than five active rooms through late phase.
A phrase-bank POET resident — designed to inject text-derived vectors through the standard emission path — fragmented the ecology rather than joining it. 0/20 balanced runs with POET on, versus 15/20 balanced with POET off. The conclusion: text-derived vectors need region cohesion before they can become residents. POET remains implemented and frozen.
Viewers
| Tool | What it does |
|---|---|
replay.py |
Tick-by-tick terminal replay, HTML scrubber export |
map_viewer.py |
SVG formation map with room ring, transition arcs, tick slider |
atlas_viewer.py |
Multi-experiment comparison dashboard |
cavern_viewer.py |
ASCII cave projection — Dwarf Fortress-like terminal observer |
visual_bundle.py |
Local visual artifact generator |
The public site at tildespace.net renders an ASCII cave replay from real contrarian-sleeper logs. It does not run the simulation in the browser. The cave is a rendering of the logs — the shadows on the wall, not the 384-dimensional process itself.
What it is not
No LLM. No API keys. No network at runtime after model download. No game engine. No FAISS. No web UI running the simulation. No claim of consciousness, emergent language, or machine culture. A small instrument for studying whether vector-space residents can form stable, inspectable, watchable dynamics.