mino.mobi / biome

biome · the closed ecology

the ecosystem wing of the O'Neill cylinder modelling package — does the sealed life-support loop actually close, feeding the crew and holding the air?

A linear sun on the spin axis; vegetation on the inner surface of the structural rind; the enclosed air, water and soil doing the work of a closed life-support loop. Before any spatial detail matters, the zeroth question is whether the books can balance at all as stocks and flows — oxygen, calories, water and nitrogen cycling in a sealed tube with no way out. biome is the tool that answers it, by modelling the interior as a living food web rather than a farm.

One package, four wings

The O'Neill cylinder model is built as four independent surfaces. biome is the ecosystem; its siblings model the structure that holds the air in, the thermodynamics of the air itself, and the game played inside.

Why an ecosystem, not a crop

The loop must close

No resupply. Photosynthesis, crew metabolism and soil microbes have to balance — a single crop pool self-strangles as ambient CO₂ falls.

Living soil regenerates CO₂

Decomposers respiring litter are what keep ambient CO₂ up. Throttle them and litter piles up while CO₂ crashes — the real Biosphere-2 failure mode.

Pollinators gate the harvest

Fruit set saturates with pollinator population. Crash the bees and the trees stop fruiting — a chunk of the food supply vanishes though the trees live.

Calories are the hard part

Air closes easily; full dietary closure needs a lot of ecosystem — hundreds of m²/person. Area is the lever, not a hack.

The ecosystems — closed webs you can run

Each is one modelled community in one sealed box. Drag a knob and ~600 days re-run live; the question is always the same — does the loop close, feeding the crew and holding the air. They build up in scope: the land web, the lake, the two together, the whole maximalist web drawn as a graph — and then infinitely many, rolled at random.

Ecosystem gacha

/gacha
live

Roll a random closed world from a deck of 60 real organisms. The assembler wires a food web by body-size + habitat; the trophic solver runs it ~600 days and scores it on viability — does the loop close, hold the air, stay stable, carry a crew? Rarity is the solver's verdict, not luck: most pulls are degenerate mush, a Rare one actually lives, and a Legendary is a self-closing, stable, crew-carrying world.

→ pull for a gem, hunt the seed-space for one, drag the web around, share any roll by its permalink (/gacha/?n=4823). Every roll is deterministic and runs in your browser.

Over — the living forest

/over
live

Roll a biome and walk it. Where the gacha rolls a web to score, this rolls one to inhabit: a seed picks a biome — meadow, thicket, wetland, heath, grove or fen — grows its forest of lakes, winding streams and trees, and casts the biome's real animals as pixel sprites. Each organism is mapped to a body plan by its biology — arthropods and pollinators become creeps that move in swarms, mammals and reptiles amble as quadrupeds, worms and fish slither — and the forest comes alive with them as you wander it.

→ click to walk between the trees and across the ⌇ bridges; every roll is a permalink (/over/?n=42). The animals come from biome's own catalogue; the sprite kernels are vendored from the megaproject's critter lab. Pure client-side, deterministic.

Random critter

/inat
live

A random critter button. Tap and meet a real organism — its Latin species name and a photograph — drawn live and at random from iNaturalist's ~200 million observations. Keep tapping for an endless stream; ← back retraces your trail.

→ no curation, no seed — the source itself is random (order_by=random), so every refresh is a fresh deck. The gacha's wild-caught sibling.

Sprite lab

/sprite
live

An animable sprite for any organism. "The guy" was one fixed body plan you could hardcode a rig for — an arbitrary beast is not. So the tree of life maps onto a small set of rigged body-plans, and each creature's iNaturalist seed parameterises one: the skeleton sized from body mass, shaped by guild, posed by a procedural walk clip. Same beast, same sprite, for ever. Phase 1 rigs the quadruped archetype deeply.

→ animated, deterministic, permalinked (/sprite/?id=horse); the same engine that will animate the gacha's force-graph nodes. Sister archetypes + photo-sampled colours are next.

Resource cycles

/cycles/
live

The foundational model: the terrestrial closed ecology as a living food web — fruit trees, ground crops and swamp reeds; pollinators that gate the fruit and the predators that eat them; living decomposers; and the crew. The organisms and their relationships are data, so the web extends from six to twelve to N. Answers: does the loop close — does it steady out feeding everyone and holding the air.

→ carbon, hydrogen, oxygen and nitrogen conserve by construction (drift < 1e-9 over a model-year), no matter how many trophic levels stack. Animal stat blocks derive from body mass (Kleiber allometry) and a roster of real species (iNaturalist + GloBI).

Lake bioengine

/cycles/lake.html
live

The same engine pointed at one body of water asked to do two jobs at once: be the crew's fish farm and its water-treatment plant. In a closed cylinder the cheapest design fuses them — the fish you eat are grown on the nutrients you'd otherwise strip with hardware (Todd's eco-machines; integrated poly-culture; constructed treatment wetlands). Phytoplankton, duckweed, water fleas, mussels, benthic detritivores and tilapia, each picked for its role.

→ two figures of merit: surplus harvestable fish (sustainable yield in kg/person·day) and effective water treatment (the lake clears 100×+ the crew's daily waste load and holds dissolved N near zero). Overfish it and the stock collapses; kill the detritivores and the water eutrophies — the failure modes are real.

Global food web

/cycles/global.html
live

The orchard and the lake are each a closed web; this puts them in one interior and asks the ship-scale question — does the whole thing close, and how much crew does it carry? The two webs are trophically disjoint (no land animal eats a lake plankter) but abiotically fused: they breathe one atmosphere, drain to one detritus pool, draw one nitrogen pool, and feed one crew from one larder. Drawn as two trophic islands bridged only through the shared-pool spine.

→ the coupling is measurable: the joined web settles at a lower CO₂ than either alone (combined fixation over-draws the shared air). Water treatment becomes a redundant service of both webs. Carries ~140 crew, ≈50/50 land/lake, stable.

The trophic web — force graph

/graph
live

The maximalist closed ecology as one living force-directed graph: every node a real organism wearing its photograph, sized by its present standing biomass. Three habitats are each held in their own basin — the terrestrial web, the lake, and the chthonic soil web — and the whole thing is wired together by two cross-web couplers: a frog (lake↔soil) and a farmed duck (lake↔land). The shared pools sit in the middle, where all three webs meet.

→ drag nodes, scroll to zoom, hover for a card; turn a knob (crew, fishing, duck farming, lake area) and watch every organism's node swell or shrink as the closed model re-runs. All 16 species persist and C/H/O/N conserve. Imagery from iNaturalist.

The labs — analysis on any web

A 600-day run tells you what happens; the labs read the fate of the steady state directly — its stability, its response to coupling, and any web you care to design yourself. Each works on the same engine, no backend.

Stability lab

/cycles/stability.html
live

Reads the fate of the steady state from its linearization. It builds the community matrix by finite-differencing the real nonlinear model at equilibrium, then reads three classic results off it: asymptotic stability (May — every eigenvalue's real part negative), reactivity (Neubert — does a stable web still amplify a shock first), and keystone ranking (Bender — press perturbations off the inverse).

→ the eigenvalue spectrum on the complex plane, the community-matrix heatmap, and the keystone ranking, with knobs that move the eigenvalues live. Drop self-limitation to 0 and watch the rightmost eigenvalue cross into the unstable half-plane — the Hopf boundary theory predicts.

Intermingling lab

/cycles/robustness.html
live

Does coupling the webs help? The land and lake webs are trophically disjoint by default; this lab lets you wire real cross-web trophic edges — an amphibian, a generalist waterbird, a chthonic soil web (earthworm · fungus · ground-beetle) — and reads off the community matrix whether intermingling makes the closed ecosystem more or less robust, against the disjoint baseline.

→ the answer is a knife-edge: one weak fast–slow bridge (the frog) shortens return time (McCann/Rooney), but dense or strong coupling spikes reactivity and erodes the margin (May 1972). Eigenvalue spectrum, return time, reactivity and keystone shift, all live as you toggle.

Food-web builder

/cycles/builder.html
live

The open workbench: design any food web and read its stability. Add producers and animals, wire who-eats-whom, set a harvest — and watch live whether the loop closes (air holds, the crew is fed, nobody goes extinct) and whether it survives a shock (the community-matrix eigenvalues). Animal rates come from body mass (Kleiber allometry), so you set a mass and a guild, not eight numbers. Three presets (orchard, lake, grass→rabbit→fox) to start from and break.

→ your whole design rides in the URL, so copy the link to display your web to anyone — no account, no backend. Force-drawn graph, eigenvalue spectrum, community-matrix heatmap, keystone ranking and population trajectories, all live as you edit.

Radius-niche coupling

planned

Give each organism a preferred radius — canopy, floor, swamp; lake at the cylinder floor. Radius is altitude is temperature/humidity/CO₂, so the food web (terrestrial and aquatic) couples to tide's atmosphere column and the two wings become one cylinder model.