The model
Two trees, one computed lane
vibe holds a hard line between what you write and what it materialises. Your specifications live in vibevm/vibespecs; installed packages are copied byte-exact into vibevm/vibedeps — committed, so a fresh clone reads without a network, without a tool, without knowing vibe exists. Installing a package never edits your text. Removing one never leaves a trace in it.
yoursvibevm/vibespecsyour specs, rules, WAL — installs never edit them
materialisedvibevm/vibedepspackages copied byte-exact, committed — never edited by hand
computedthe boot lane1STATIC.md — the priority lane, read first and in full2INDEX.md — a manifest of entries, order derived from the graph
any agentClaude Code · Codex · OpenCode · Cursor — pure file reading, no tool in the loop
The reading order is derived, not declared: foundation, then the project, then dependencies in topological order, then your overrides. Nobody numbers a snippet, and no package can fight another for position.