STARBROKEN WIKI
Game site ↗
Home/Reference/The Nitrogen Cycle

The Nitrogen Cycle

Aquaponics is one chemistry loop: fish make waste, bacteria turn that waste into plant food, plants drink the plant food, and the water comes back clean for the fish. Every console meter reads off this loop.

This page covers the loop, the water chemistry behind it, and the two failure modes that confuse people most: the lethal over-stock spiral and the harmless over-plant slowdown.

The loop

   FISH  ──ammonia (NH3)──►  BIOFILTER  ──nitrate (NO3)──►  CROPS
    ▲          (waste)        (bacteria)     (plant food)      │
    │                                                          │
    └──────────────  clean water returns  ◄─────────────────── ┘
  1. Fish live in the reservoir water and produce ammonia as waste. Ammonia is toxic; too much stresses and eventually kills fish.
  2. The Biofilter Media hosts nitrifying bacteria that eat ammonia and excrete nitrate. More bacteria → faster ammonia clearance.
  3. Crops in the grow beds drink that nitrate as fertilizer, drawing it down and producing produce in return.
  4. The water, stripped of toxin and surplus nutrient, circulates back to the fish, and the loop runs again.

Every actor nudges four chemistry meters: ammonia (NH₃), nitrate (NO₃), pH, and oxygen (O₂). The console shows all four live, plus the bacteria cycle %.

Water volume is the shock absorber

Every change to every meter is divided by your water volume. A pulse of ammonia in a tiny pond is a crisis; the same pulse in a big reservoir barely moves the needle. Water volume is the count of connected reservoir blocks. Adding water makes every problem on this page smaller and slower. See Building a System for how reservoir blocks and the network scan set your volume.

Bacteria maturity: the "cycle %"

A new tank can't clean itself yet. The bacteria colony that eats ammonia has to establish first. That progress is the cycle % on the console.

Stock light at first (a few cod; see Fish for safe starters), let the cycle % climb, and add fish as the colony matures. When nitrate is the bottleneck the console's "limiting factor" readout reads "a new tank needs time to cycle."

How fish gate crops: the smooth equilibrium

Crops grow only as fast as nitrate is available, and nitrate comes only from fish waste processed by the biofilter. Plant throughput is set by your fish, not your beds: more fish, or bigger fish → more ammonia → more nitrate → faster crops. A fish loads the water roughly three times harder at full maturity than as a fresh juvenile, so nitrate supply roughly triples as fish grow out. (See Fish for the maturity-scaled biomass ratio.)

Plants draw nitrate in proportion to how fed they already are. A starving bed pulls hard; a well-fed bed sips. Nitrate settles at a steady level where production (from fish) matches consumption (by crops), and each bed grows at the rate that level supports.

Over-planting just lowers the rate; it never starves

Because uptake scales with how fed the crops already are, planting more beds than your fish can feed doesn't crash nitrate to zero. The equilibrium nitrate level settles lower, so every bed draws proportionally less and grows proportionally slower. Twice the beds on the same fish means each bed grows at roughly half speed: a smooth slowdown, never a collapse.

The console reports nitrate-limited growth as a non-urgent advisory ("crop growth limited by nitrate; add more fish or grow the biofilter"), not an alarm.

Ammonia: the asymmetry that matters

This is the asymmetry the whole system hinges on. Over-planting is graceful. Over-stocking fish is a death spiral. Same loop, opposite outcomes, and why they differ is the core of running a healthy farm.

Why over-stocking is lethal (positive feedback)

Ammonia is toxic to fish. Cram in more fish biomass than your biofilter can clean and ammonia climbs past the safe line. The trap feeds back on itself:

  1. Too much fish biomass pushes ammonia above the safe threshold.
  2. Stressed fish drain health; once a cohort hits the floor it begins dying.
  3. Dead biomass pulses ammonia back into the water (see Fish for mortality and death-pulse numbers).
  4. That pulse pushes survivors further past the safe line → more stress → more death → more ammonia.

That's a positive feedback loop: the problem accelerates itself. Unchecked, an over-stocked tank can wipe its entire fish population. The levers that save it: more biofilter media (more cleanup), more water (more dilution), or removing fish (less load).

Pushing past the cap: Activated Zeolite

Those levers respect the biofilter's limit. Activated Zeolite runs past it: a craftable treatment you dose at the Console. It's a framework aluminosilicate (clinoptilolite) that adsorbs ammonia out of the water, filling a scrubber pool the system draws down each tick. The pool soaks up exactly the ammonia your biofilter couldn't clear, so it drains faster the further past capacity you push.

This turns the hard over-stock death-cap into a soft, pay-to-exceed one. The feedstock, Aluminosilicate, is an asteroid-mining by-product, fabricated with cryo-salt into the finished treatment. Dose it like supplements: hold it and right-click the Console.

Why over-planting is safe (negative feedback)

When you over-plant, demand goes up, nitrate goes down, and that lower nitrate makes each plant draw less, pulling the system back toward balance. The response counteracts the disturbance: a negative feedback loop, self-correcting and self-stabilizing.

Over-PLANT (crops)Over-STOCK (fish)
ResourceNitrate (food)Ammonia (toxin)
FeedbackNegative (self-correcting)Positive (self-amplifying)
ResultLower equilibrium → everything grows slowerSpiral → fish die → ammonia spikes → more die
Worst caseCrops crawlTotal fish wipe
FixAdd/grow fish (optional; slow is fine)More biofilter/water, dose Activated Zeolite, or pull fish (urgent)

Running out of food is graceful; being poisoned is not. A nutrient-starved plant waits and grows slowly. A poisoned fish dies, and a dead fish makes the poison worse.

"I pulled my fish but ammonia is still high"

The biofilter is the only sink for ammonia; there is no instant flush. Removing fish stops new ammonia, but existing ammonia is still processed by the bacteria over time, gated by cycle % and pH. More filter media or more water (to dilute) speeds it; otherwise it takes time.

Oxygen and the Aerator

Oxygen (O₂) is the fourth meter. Below the safe line, fish suffocate, drain health, and die, exactly like the ammonia spiral.

Oxygen eases toward a target level set by a tug-of-war:

Low-oxygen alert: "fish suffocating; add Aerators now." Add an Aerator.

pH: the master dial that heals itself

pH scales two things: how well the biofilter clears ammonia, and how well plants take up nitrate. It also gates whether the bacteria colony can mature. A healthy pH sits in a band (roughly 6.6–7.2), where its "factor" is a full 1.0.

Nitrification is acidic. Converting ammonia to nitrate drifts pH down over time, proportional to how hard the filter is working: a heavily loaded tank acidifies faster than a lightly loaded one.

What stops a busy tank from acidifying into a permanent dead zone: pH self-heals, drifting gently back toward neutral (7.0) on its own.

The console warns ("pH crashed; bacteria + plants failing") before it's fatal. The structural fix is more water and more filter media.

Reading the console: meters, levels, and the honest alarm

Right-click the console on a commissioned system: four live meters (NH₃ / NO₃ / pH / O₂), the cycle %, fish and crop counts, the current limiting factor for crop growth, and a status level with a recommendation.

The status level

The overall light is GREEN / AMBER / RED, driven by the danger meters (ammonia, oxygen, and pH), most severe condition winning:

MeterAMBER (warning)RED (critical)
Ammonia≥ 1.5≥ 3.0
Oxygen≤ 5.0≤ 3.0
pH factorfactor < 0.5factor at 0 (crashed)

Every alert ends with a concrete action: "add Biofilter Media," "add Aerators now," "dose pH Buffer." If everything is green but a crop is slow, the console adds a non-urgent advisory naming the limiter and its fix.

The "limiting factor" for crops

Crop growth follows the law of the minimum: a crop grows only as fast as its single most-limiting input allows. The console computes that across every input and reports the most-limiting one: more fish, more lamps, more water, pH correction, or supplement dosing. See Crops for the full set of limiters and the growth model.

The alarm is honest: "DYING" means actually dying

The "fish DYING" alarm is tied to actual fish health, not just a meter crossing a line. Fish carry a health buffer that drains under stress and refills when conditions are safe; they only start dying once it's fully drained. At critical ammonia the console reports three states:

When the console says DYING, fish are at the floor and you have minutes, not hours. When it says stressed, you have a buffer.

Your tank only runs while someone's home

The system ticks forward only while the owning faction has a member online. After a gap it resumes at most about 5 minutes of progress: the tank freezes when nobody's home and picks up where it left off, like a refinery or fabricator. Nothing happens while you're away.

The numbers, in full

Every rate on this page is read live from game.yml (aquaponics:); your server can retune any of them, and this table is generated from the same config the simulation runs on, so it never drifts. The inline figures above are these values rounded for prose; here they are exactly.

Nitrogen cycle: aquaponics.chemistry

Knob (game.yml)ValueMeaning
bacteriaMaturityHoursToFull1.0online hours for a fresh tank to fully cycle
ammoniaPerBiomassPerMin0.05ammonia each unit of fish biomass excretes / min
filterThroughputPerUnitPerMin0.5ammonia one filter-media unit clears / min
nitrateConversionFactor0.8fraction of cleared ammonia that becomes nitrate
nitrateUptakePerCropPerMin0.05nitrate one growing crop drinks / min
nitrateForFullGrowth0.3nitrate concentration for unthrottled growth
adultBiomassMultiple3.0an adult fish loads the water ×this vs a juvenile

The over-stock spiral: aquaponics.mortality

Knob (game.yml)ValueMeaning
ammoniaSafe2.0ammonia at/below this is harmless to fish
oxygenSafe4.0dissolved O₂ at/above this is harmless to fish
deathFloor0.10health at/below which fish start dying
deathFractionPerMin0.5fraction of a dying cohort lost / min
deadBiomassAmmoniaPulse0.5ammonia released per unit of biomass that dies
healthDecayPerMin0.05cohort health lost / min while stressed
healthRecoveryPerMin0.02cohort health regained / min in safe water

Oxygen: aquaponics.chemistry

Knob (game.yml)ValueMeaning
baseOxygen8.0dissolved O₂ a still, empty tank holds
maxOxygen12.0dissolved-O₂ ceiling
o2PerBubbleColumn1.0O₂ added per Aerator bubble-column block
o2PerPumpUnit0.10O₂ added per powered Circulation Relay unit
crowdingPerBiomass0.05O₂ each unit of fish biomass consumes (crowding)

pH: aquaponics.chemistry

Knob (game.yml)ValueMeaning
phTargetLow6.6ideal pH band low edge (factor = 1.0 inside)
phTargetHigh7.2ideal pH band high edge
phFalloff1.5how sharply growth drops as pH leaves the band
acidPerActivityPerMin0.02pH acidified per unit of filter activity / min
phRecoveryPerMin0.1passive pH drift back to neutral / min (anti-soft-lock)
bufferPerDose0.30pH one pH-Buffer dose corrects

Supplement doses: aquaponics.nutrients

Knob (game.yml)ValueMeaning
unitsPerDose30.0P/K/Fe pool units one supplement item adds
ammoniaReducerUnitsPerDose10.0ammonia one Activated Zeolite dose scrubs
feedHealthPerDose0.25cohort health one Fish Feed dose restores

See also