The Problem
"Agent" has become a word that means everything and nothing. Most people either over-build (a giant framework for a tiny job) or never start because the jargon makes it sound harder than it is.
I wanted the opposite: a small, sharp agent that does one real job, that a non-technical person in my family would actually text every day — not a demo that gets opened once.
The test isn't "does it work in a notebook." It's "is my husband still using it three weeks later."
The Solution
I built three nutrition agents — one for me, one for my dad, one for my husband — off a single template, then open-sourced it so anyone can build their own.
An agent is three things:
- A persona — what it's for and how it talks
- A set of tools — log a meal, check the pantry, look up calories
- A loop — read what you said, decide if a tool is needed, call it, answer
It ships in three levels you can stop at:
- Level 1 — terminal CLI. Log meals, ask questions, local SQLite. Runnable in five minutes with one API key.
- Level 2 — cloud. Claude + Railway + Telegram + USDA nutrition lookups. Text it from your phone, it's always on.
- Level 3 — fully local. Hermes + local models, no cloud, fully private.
core/ is identical across all three. Only how it connects changes — swap the transport, keep the brain.
Technical Stack
Deliberately boring tech so it stays hackable:
- Python — the agent loop, tools, and DB layer (
core/, shared across all levels) - Claude (cloud) or Hermes + local models (private) — swappable reasoning layer
- SQLite — meals, pantry, recipes; a file at Level 1, always-on by Level 2
- USDA FoodData Central — real nutrition numbers
- Telegram — so you talk to it like texting a person
- Railway — one-click-ish cloud host for the always-on version
None of these are load-bearing for understanding the agent. The agent is persona + tools + loop. Everything else is just how it remembers things and where it shows up.
Impact
Three family members, three different needs, one template:
- Mine keeps me from staring into the fridge in despair every night
- My dad's holds his stricter diet and pulls in health data from his devices — runs in the cloud because he doesn't care about privacy
- My husband's is a blend of the two — runs locally for privacy
THE RECEIPTS
Stop wherever it's useful
| level | what you get | needs |
|---|---|---|
| 1 — Terminal | log meals, ask questions, local SQLite | one API key |
| 2 — Cloud | Claude + Railway + Telegram + USDA lookups | a Railway account |
| 3 — Local | Hermes + local models, fully private | local hardware |
core/ is the same in all three. You're not rebuilding the agent at each step — you're changing how you reach it.