Commit 52bbbca
committed
docs: reframe bento/vault around the AI broker
Supersedes the 2026-07-25 vault entry. Two files: a DECISIONS.md entry and
a rewrite of docs/vault-design.md.
The reframe came from subtraction. Of the five promises in the old entry,
four were met or taken while it sat unbuilt — mobile reach by tray plus any
existing File Provider, sharing by the collab relay, per-device version
history by autosave.ts, and plain file sync was never ours.
Search alone survived, and it is measured rather than assumed. Control test
in an indexed folder: a plain HTML file with a phrase in <body> is found by
Spotlight; the same phrase inside a <script> is not; a real deck is not
found, though grep finds it instantly. Bento libraries are invisible to OS
search. Before any indexer is built, the cheap avenue gets tested: text in
<noscript> IS indexed, and every save already writes a page-one render
there.
What makes vault necessary is the AI broker. A travelling document can never
carry a model credential, and under tray localStorage is per-DOCUMENT — the
origin is SHA256(path) truncated, verified at EditorViewController.swift:55-58.
The only place a credential can live once and serve a library is a server the
user runs.
Two claims that reached the draft were wrong and are corrected in the doc
rather than repeated. Ollama does not blanket-refuse file:// — its default
allow-list includes file://* (envconfig/config.go:100-106); the real issue is
that browsers send Origin: null and gin-contrib/cors matches by exact string
or regex (config.go:128-140), so null won't match file://*. That one is marked
reasoned, not measured. And LiteLLM's virtual keys, budgets and spend
attribution are stock behaviour, not an add-on.
Cut as deferred architecture: backup and version history (autosave.ts already
covers it, and the audience runs restic and git), SSO beyond key distribution
and forward revocation, and — with the org profile as destination rather than
first build — NAT traversal, hole-punching, the dead-drop and the portable
relay twin, all of which existed to serve a laptop asleep behind a home NAT.
New invariant: AI is additive, never load-bearing. Every app stays fully
functional with no vault and no model, or PLATFORM.md §1 is gone.1 parent b61580f commit 52bbbca
2 files changed
Lines changed: 222 additions & 217 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
17 | 80 | | |
18 | 81 | | |
19 | 82 | | |
| |||
0 commit comments