2023–26IndependentANIMA, a live biomimicry agent and workbench
Biomimicry that cites its work
ANIMA takes an engineering problem, finds organisms that solve the same function, checks whether the strategy transfers to your scale and sizes it with real physics. An autonomous agent plans the research, runs tools in parallel, delegates to subagents and audits its own citations before it answers.

- Outcome
- A working agent on a curated knowledge graph: every number is computed or cited, and all 314 cited DOIs verify against Crossref
- Role
- Designer and sole engineer, from the knowledge graph and retrieval to the agent runtime and the interface
- Stack
- TypeScript · Node · React · GraphRAG · BM25 · BGE embeddings · Personalized PageRank · Liquid LFM3-Omni · Liquid d1 · llama.cpp · transformers.js · MCP · Docker · Crossref · Europe PMC · GBIF
- Links
- Open ANIMA ANIMA models
- curated biological strategies
- 239
- curated biological strategies
- cited DOIs, all verified against Crossref
- 314
- cited DOIs, all verified against Crossref
- physics calculators with cited assumptions
- 21
- physics calculators with cited assumptions
- subagents that can run in parallel
- 4
- subagents that can run in parallel
The problem
Biomimicry is full of good stories and bad numbers. Ask a general chatbot how a shark’s skin reduces drag and you get a confident paragraph, an invented percentage and a DOI that does not exist. My first version of ANIMA did the same, so I rebuilt it around one rule: if a number cannot be computed or traced to a checked source, it does not appear.
The agent
ANIMA works the way a coding agent works inside a repository, with the project workspace as its repo. It keeps a visible plan for multi-step work and runs independent tool calls at the same time. It can hand sub-questions to up to four subagents with their own context and restricted tools: a researcher, a critic that red-teams a concept, and an engineer that sizes it. It computes instead of estimating, in a sandboxed JavaScript runtime with no host access and a time limit. It writes durable work to the project: briefs, research logs, concept boards and printable parts, with a project memory file injected into every turn.
Before it answers, it audits its own draft: labels that do not exist, DOIs it never retrieved and quantitative sentences with no source. Then it revises automatically. Consequential actions such as deleting files go through an approval card. Everything streams as it happens, from text and tool calls to subagent activity and file diffs. Playbooks run whole methods with one command: a full design spiral, biological scouting, a TRIZ contradiction pass, a red team, a literature review or an Ashby material selection.

Retrieval that explains itself
The curated knowledge is a typed graph: 239 strategies, 98 mechanisms, 218 organisms, 40 materials and 20 environments, joined by 3,391 weighted edges across 19 relation types. Retrieval runs in three stages. BM25 and embedding seeds come first, weighted by node type. Personalized PageRank then spreads relevance along the links. Finally, every hit comes back with the path that explains it, such as boat hull drag → turbulent skin friction → shark riblets → riblet calculator. Live sources fill the gaps: Europe PMC, Crossref, arXiv, GBIF, iNaturalist, PubChem, UniProt and the Protein Data Bank. A field a source did not return is left blank, not guessed.
Small models, used carefully
The default model is Liquid’s LFM3-Omni-2B, which takes text, images and audio. It runs behind llama.cpp, Ollama or LM Studio, or in-process with no server at all. Small models get a deferred tool profile: ten core tools load first, and a search tool activates the rest on demand. Tool calls in the model’s own format are parsed and coerced against each schema. A second small model, Liquid’s d1, answers typed questions in one pass with calibrated probabilities. It judges whether each cited sentence is actually supported by its source, reranks graph hits and routes problems to functions. The whole workbench also runs with no language model at all, as a tools-only mode, and it ships as an MCP server and a Docker image.
From strategy to part
Every strategy can become a part. Eight geometry generators produce STL and OpenSCAD files sized by the calculators, ready for a 3D printer.
- Organism
- Fast-swimming sharks such as the shortfin mako
- Mechanism
- Fine ribs aligned with the flow hold turbulent eddies away from the surface and lower skin friction
- Evidence
- Thin blade riblets reduced drag by up to 9.9% in an oil channel with adjustable geometry
- Source
- Bechert et al., Journal of Fluid Mechanics, 1997 doi:10.1017/S0022112096004673
- Generated part
- Triangular riblet coupon, 1 mm spacing, 40 × 80 mm
- Organism
- Humpback whale, Megaptera novaeangliae
- Mechanism
- Bumps along the leading edge of the flipper keep flow attached at steep angles
- Evidence
- A scalloped flipper model delayed stall by about 40% compared with a smooth leading edge in wind-tunnel tests
- Source
- Miklosovic et al., Physics of Fluids, 2004 doi:10.1063/1.1688341
- Generated part
- Foil, 60 mm chord, 150 mm span, tubercle amplitude 5% of chord
- Organism
- Trabecular bone
- Mechanism
- Bone lays down material along load paths and removes it elsewhere, leaving a light, stiff lattice
- Evidence
- A strain-driven model of osteocyte signaling reproduced how trabecular architecture forms and adapts to load
- Source
- Huiskes et al., Nature, 2000 doi:10.1038/35015116
- Generated part
- Sheet gyroid, 2 × 2 × 2 cells of 10 mm, 25% relative density
Where it came from
ANIMA started in 2023 as an early biomimicry language model, a Mistral 7B fine-tune that has been downloaded 67k times. The workbench is what I learned from watching that model make things up.


