🍎

Food

The tree that knows what you eat.

Say what you ate. The AI parses it, tracks your macros, learns your patterns, and tells you what to eat next. One command. The tree does the rest.

Just tell it what you ate.

1

Log in natural language

~ > food "chicken breast and rice for lunch"

Logged: chicken breast (165 cal, 31g protein), rice (206 cal, 45g carbs)
Today: protein 49/150g (33%), carbs 65/200g (33%), fats 12/65g (18%)

One LLM call parses the food into macros. Cascade signals route protein, carbs, and fats to their tracking nodes. The daily picture updates instantly.

2

Ask what to eat next

~ > food "what should I eat for dinner?"

You need 52g protein and 800 calories to hit your targets.
You trained chest today so recovery matters. You've had chicken
five times this week. Try salmon and sweet potato.

The AI reads your remaining macros, your meal history for variety, and your fitness data through channels. Specific recommendations, not generic advice.

3

See your patterns over time

~ > food "how am I doing this week?"

This week: avg 1,850 cal/day against 2,000 goal.
Protein averaging 128g against 150g target. 15% under.
You skip breakfast 3 days out of 7. On days you eat
breakfast, your protein hits target. The pattern is clear.

Weekly averages, hit rates, and meal slot patterns. The AI finds what's working and what isn't. History node archives 90 days of daily summaries.

The tree IS the nutritionist.

No external database. No calorie counting app. The tree structure holds your macros, your meal patterns, your profile, and your history. The AI reads the structure to know everything.

Food
├── Log (where you talk)
├── Protein 128/150g (85%) weekly avg: 128g
├── Carbs 195/200g (98%)
├── Fats 52/65g (80%)
├── Daily (assembles the picture)
├── Meals
│ ├── Breakfast (eggs 4x, oatmeal 2x this week)
│ ├── Lunch (chicken 5x, salmon 1x)
│ ├── Dinner
│ └── Snacks
├── Profile (2000 cal, 150g protein, no restrictions)
└── History (daily summaries, 90 days rolling)

It talks to your workout.

A channel between Food and Fitness carries data both ways. Neither extension imports the other. The tree connected them through structure.

🍎
Food
1,850 cal today
<->
💪
Fitness
chest day, 48 min

The fitness AI sees your calories. The food AI sees your workout. Both give better advice.

and below both of them...
🕐
Scheduler
meal prep Sunday, weigh-in Friday
and below that...
Breath
daily reset at midnight
Evolution
pattern detection
Codebook
compression
Rings
growth cycles
Pulse
health monitoring
contradiction
long-memory
gap-detection
intent
reflect
scout
explore
embed
trace
inverse-tree
competence
boundary
prune
digest
delegate
changelog
peer-review
approve
persona
purpose
cascade
flow
propagation
perspective-filter
sealed-transport
canopy
mycelium
horizon
governance
teach
split
evolve
reroot
seed-export
remember
phase

It goes deeper than you think.

Under the hood.

Three AI modes

Log parses natural language food input into structured macros. One LLM call. Review analyzes patterns. Reads weekly averages, hit rates, meal slot history, and fitness data. Advises forward and backward. Coach sets up goals. Asks about calorie targets, macro splits, and restrictions.

Cascade routing

When you log food, channels carry the parsed macros to Protein, Carbs, and Fats nodes. Each node increments its daily total atomically. No read-modify-write. No race conditions. The Daily node reads all siblings through enrichContext. One structure, zero extra queries.

Daily reset with weekly averages

At midnight (synced to the breath extension or a fallback timer), the day's totals archive to History as a note. Weekly averages and hit rates update on each macro node. The AI sees "protein hit rate: 43% this week" without reading 90 history notes.

Type "be" to start

Navigate to your Food tree and type "be". The AI asks what you've eaten. You answer. It logs, routes, and tells you where you stand. No menus. No calorie lookups. Just a conversation with a tree that counts for you.

Your tree. Your metrics.

Nothing is hardcoded. The scaffold creates Protein, Carbs, and Fats as defaults. After that, the system treats them the same as any node you create yourself.

Structural nodes

Log, Daily, Meals, Profile, History. These define the shape. Only Log is required. Everything else is optional.

Metric nodes

Everything else. Protein, Carbs, Fats, or whatever you add. Sugar, Fiber, Sodium, Water. The tree tracks whatever exists.

// default scaffold
Food
├── Log
├── Protein 128/150g
├── Carbs 195/200g
├── Fats 52/65g
├── Daily
└── History
// after customization
Food
├── Log
├── Fiber 22/30g
├── Sodium 1,800/2,300mg
├── Water 6/8 glasses
├── Fats 52/65g
├── Daily
└── History

The whole pipeline adapts

The LLM parser prompt is built at runtime from the tree. If your tree tracks protein, carbs, fats, sugar, and fiber, the prompt says exactly that. Delete protein and add sodium, the prompt changes. The parser outputs the right fields. Cascade signals route to the right nodes. Daily reset archives the right totals. The dashboard renders a progress bar for every metric node. No config file. No code change. Just tree structure.

Node adoption

Create a plain node under your food tree called Sugar. Next time you log food, the AI notices it and asks: "Sugar isn't tracked yet. Want me to add it? What's your daily goal?" One conversation. The node gets its metadata, joins the pipeline, and starts tracking.

Delete protection

Structural nodes are protected across every extension. Any node with a role in any extension's metadata namespace is guarded from deletion. The system names the extension and role. --force bypasses it when you mean it.

What did you eat today?

Plant a land. Create a Food tree. Say what you ate. The tree takes it from there.