v1.0.0: pip install agronaut
Agronaut computes aquaponics system designs from a deterministic, source-cited engineering
core, and talks to you on Telegram or WhatsApp from a bot you run yourself.
pip install agronaut
agronaut size --fish tilapia --crop lettuce --area 12 --temp 27 --water 3000No API key, no account, no network. That prints a sized system with a bill of materials, a
source for every number, and an explicit list of what it does not model.
To add the conversation:
agronaut setupIt asks which model and which channel you want, validates each key against the live service
as you paste it, reads your Telegram id off a message you send your own bot, and writes the
config file itself.
What's in it
A deterministic core. Sizing, mass balance, nitrogen cycling, fish growth, crop growth
and costing, every coefficient carrying its source. aqua_model imports no LLM and no
network, and CI enforces that.
A production twin. Simulate a season at a real site through NASA POWER climate, log your
test-kit readings into a persistent twin, and forecast the week ahead. The growth
coefficient is fitted per pond against a public Nigerian catfish dataset (10 usable ponds
of 11), not taken from a textbook.
An advisory layer that proposes rather than acts. /advise turns the twin's state into
numbered recommendations, each with its reasoning, its source, what to measure to check it,
and a confidence derived from the class of evidence behind it, capped by what the twin's
own held-out validation earned. Nothing is actuated: you approve or reject by number.
Six model providers. Claude, Ollama (local, no key), NVIDIA, Hugging Face, a local
transformers pipeline, and any OpenAI-compatible endpoint. One environment variable
switches between them.
Two channels, one command layer. Telegram and WhatsApp share a single dispatcher, so
/log, /forecast, /advise and /approve behave identically on both. None of them put
a model in the path, so they keep working when the LLM does not.
A 3D view. Any design renders as an offline HTML page: graded pipe runs, a real
hydraulic grade line, and pump head derived from the drawing rather than a constant.
Honesty
The twin's absolute numbers are literature-seeded projections. Scored against held-out
nitrate it tracks the direction of change on 5 of 7 QC-passing ponds and does not beat a
linear-trend null on level, because the available pond sensors are uncalibrated. That
verdict is computed, not asserted (data/twin_validation.json), and the advisory layer caps
its own confidence to match. Dissolved oxygen and pH are not modelled at all, and every
output says so.
1,240 tests green in CI. A 43-case advice-safety golden set, 384 individual checks, gates CI.
MIT. The sizing method is a granted Taiwan utility model patent (TW M661364).