Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Great Filter title over a dark field of stars and expanding signal rings

The Great Filter

Build a galaxy. Seed the stars. See who survives long enough to be heard.

An interactive, scientifically honest Fermi paradox simulator running entire galactic histories across billions of modeled years.

React TypeScript Three.js License: MIT

Launch the simulation →

What happens when the galaxy gets ten billion years?

Choose how readily life, intelligence, technology, survival, communication, and expansion emerge. Then watch a deterministic event-driven simulation unfold: civilizations appear as points of light, most disappear, some transmit, and a rare few spread.

The application models possibilities. It does not claim to solve the Fermi paradox or predict humanity's future.

Three-step experience: configure the probabilities, simulate a galaxy, and interpret the Silence Report

Nine presets make the question tangible, from The Silent Galaxy and Rare Earth to Expansion Wins, Optimist's Milky Way, and a fifty-billion-year Deep Time scenario.

Six controls, one conditional chain

The sliders are not six percentages applied independently to every star. Each governs a stage in a conditional transition and hazard model. A world must reach one stage before it can attempt the next; survival operates continuously once technology appears.

Funnel from candidate systems through habitable worlds, life, intelligence, technology, detectability, and interstellar expansion

Civilizations can become quiet, go extinct, or transform after sustained interstellar settlement. The report identifies the most restrictive realized transition in that run without presenting it as a fact about the real universe.

Contact respects physics

Two civilizations existing at the same abstract time is not contact. A detectable signal must cross the distance at light speed and arrive while another civilization is still capable of recognizing it. Expansion-front overlap is tracked separately and never inflated into confirmed contact.

Signal traveling from a transmitter to a receiver, illustrating that contact requires causal overlap

Signals can arrive after their sender has vanished. Civilizations cannot cause one another's extinction: warfare is deliberately absent from the model.

Every shared link is a reproducible galaxy

The seeded random generator, scenario schema, and simulation model are versioned. Controls, advanced parameters, seed, and model version travel in the URL, so a shared link recreates the same event history, metrics, and outcome sentence.

Scenario state encoded into a share URL that reproduces the same run and Silence Report

There are no accounts, cookies, payments, or server-side scenario records. Preferences remain in local storage; the scenario itself stays in the URL.

The Silence Report

Every completed or stopped run produces a sentence-first outcome followed by fifteen transparent metrics in three groups:

  • Population funnel: candidate worlds through detectable civilizations and disappearances
  • Overlap and contact: simultaneous activity, signal overlap, travel overlap, and confirmed contact
  • Records: nearest misses, lifetimes, and the run's most restrictive transition

Replay the same history, create a new galaxy, or share the exact scenario.

Architecture

  • React 19 and strict TypeScript on Vite
  • Three.js galaxy renderer with non-WebGL and low-power fallbacks
  • Event-driven simulation isolated in a Web Worker
  • Versioned scenario serialization and deterministic seeded RNG
  • Fixed-point simulated time across horizons up to fifty billion years
  • Accessible keyboard operation, reduced-motion behavior, and nonvisual status updates
  • Static Cloudflare Pages deployment; no application backend

The complete model is documented in docs/simulation_model.md, with assumptions categorized in docs/scientific_assumptions.md and architecture in docs/ARCHITECTURE.md.

Run locally

Requires Node.js 26 or newer.

git clone https://github.com/nixfred/filter.git
cd filter
npm ci
npm run dev

Quality gates

npm run check:all

The full gate runs formatting, linting, type checking, simulation tests, coverage, production build, bundle budgets, end-to-end tests, and accessibility checks. Individual commands are available through package.json.

Project documentation

Document Purpose
Product requirements Stable requirement IDs and acceptance criteria
Simulation model State machine, hazards, time, contact, and expansion
Scientific assumptions Established science vs. explicit modeling choices
Architecture Runtime boundaries and determinism strategy
Accessibility Keyboard, motion, contrast, and nonvisual requirements
Gate matrix Requirement-to-evidence traceability

License

MIT. Built by Fred Nix with Larry.

About

The Great Filter: build a galaxy, seed it with civilizations, and watch almost all of them disappear. An interactive Fermi paradox simulator for filter.nixfred.com

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages