design sketch · not a build build 0x165

Willow// a tui, and its mirror

reading trunk…done
trunk verdictdegraded
canopy5 agents
sap flowstalled · 0 workers
rings confirmed2 / 4 tables
stomataclosed · consent.internet off
trunk verdict — degraded / broken
sap flowing — active, granted, confirmed
rooted — healthy, isolated, settled
dormant — unmapped, idle, unconfirmed
357 tasks never made it past this knot.
no worker has listened since May 19.

The gate in this codebase is already named sap. So the whole surface got read as a tree: the trunk is overall health, sap is the task queue in motion (or not), roots are the persistent store, rings are confirmed schema mappings, canopy is the agent fleet, and leaves are knowledge atoms — falling into litter, the receipt log, once they're acted on.

A seventh part joined once egress got its own gate: stomata, the pores that decide whether an app may exchange anything with the world outside the tree at all. consent.internet is the operator's standing switch, task_net is the capability to ever ask, and an egress lease is the time-boxed grant that actually opens one — all three, or the pore stays shut. Unlike sap, roots, and the rest, stomata aren't a mockup: willow-mcp gates renders this same three-key state today, on/off, egress-lease shaped.

The terminal

A k9s-shaped session: nav down the left names the tree's parts, not the tables behind them. The status line reads the trunk's actual verdict from this afternoon's audit.

willow ssh://fleet · app: willow-mcp
trunk: degraded 369 tasks total 357 failed worker heartbeat: none 13:52:11
sap flow — task queue
pending 2
stalled — no worker drinking from this line
idsubmitted bystatusnote
2W1CHRFQwillow-mcppendingecho smoke test — queued 19:52
8ED0A500sap_startuppendingembed backfill — queued since May 19
e03bb741…willowfailedno executable commands found
6271F39Csap_startupfailedno executable commands found
:submit new task :cancel — not implemented / filter ? help q quit

The mirror

Same tree, browser tab. Nothing here that the terminal couldn't show — just room to let the canopy, the rings, and the leaf litter breathe as their own shapes.

Trunk

overall verdict, read the moment you open the tab
degradedverdict
357tasks failed
2tasks pending
5agents in canopy
2 / 4tables ringed today

Canopy

fleet_status — five agents, ranked by trust
skirnirENGINEER
AutoOPERATOR
ganas1WORKER · nest intake
ganas2WORKER · qwen2.5:3b
ganas3WORKER · imagen 4

Rings

schema_confirm_mapping — growth rings, one per table
tasks — confirmed
knowledge — confirmed
agents, routing — unconfirmed

Roots

SOIL store — collections, unfenced
mcp_smoke_testput → get → deleted
ctx__willow-mcpcontext, app-scoped
(all others)visible to any full_access app

Leaves

knowledge base — most recent atoms
509084FA · mcp_smoke_test
ingested this session · domain confirmed
grove_msg_111 · github channel
source: grove_message
L8A5A · migrated from willow-1.7
source: file_location

Stomata

consent · task_net · egress lease — three keys, app by app
fleet consent.internetclosed
skirnirlease active · 8m12s
ganas1task_net not granted
closed fleet-wide — skirnir's lease is still counting down, but a per-app lease alone never opens a pore. an operator has to flip consent.internet first.

Litter

receipts_tail — what actually happened, in order
19:51store_putok
19:51store_getok
19:51store_deleteok
19:52schema_confirm_mapping×2 confirmed
19:52task_submitqueued, unread