EcoSym

Fish

Fish in EcoSym are modelled as a boundary condition on the ecosystem rather than a closed-mass-balance member — their biomass is a user-set stocking level held fixed (no growth or reproduction in V1; only death removes it), and the model instead reports their effect on the tank (bioload — an oxygen sink and an ammonia/CO₂/phosphate source) and their health (a continuous 0–1 gauge). See the conceptual page Fish & Feeding for the why, and the Parameter Reference → Fish for every numeric value with its rationale.

Each species page below explains the fish's biology, its tolerances, and why it is a good or bad fish-in-cycling candidate — the headline use case ("will my tank cope, and how are my fish doing?").

V1 roster

The roster was chosen to span the axes that matter for the cycling use case — tolerance (fragile ↔ hardy), behaviour, and bioload:

How the fish differ in the model

All five share the same FishSpecies engine machinery (fixed biomass, the health ODE, ammonotelic excretion). What makes a neon die where a danio shrugs is per-species tolerance thresholds — the unionized-ammonia, nitrite, oxygen, temperature, and pH bands each fish reads the same water against. Those thresholds feed both the direct toxicity kernels and the health stress blend, so the fragile ↔ hardy spread emerges from one set of calibrated numbers. Two species also carry a distinguishing trait: the betta's aerial_O2_access (it breathes air, so low dissolved oxygen barely dents its health) and the corydoras' benthic in-tank grazing (it eats settled detritus and periphyton on top of the prepared feed).

Last updated: 6/7/2026