NAI OS
A local wiki isn't a web tool — so it slots straight past the no-web-tools
boundary that /nai-review and /nai-spec-drafter deliberately enforce.
Following on from context's Data layer: a personal knowledge
base — a local …/library-wiki/wiki/ folder (base path omitted here; it's
machine-specific and not part of this repo) — sits on the same machine as this repo,
read-only. Its entry point is index.md — a catalog of every page in the wiki
— and pages are found by matching a requested topic against each page's topics
frontmatter field. No agent may ever write there; it's the user's, curated by hand, outside this
repo entirely.
Six agents across three systems were given read access to it, each one already doing research or grounding a review/draft in evidence rather than memory:
| Agent | System | tools: change | Why |
|---|---|---|---|
tech-radar | /nai-chief-of-staff, /nai-newsletter | + Read, Glob | check the library before spending a web query on ground it already covers |
company-research | /nai-chief-of-staff | + Read, Glob | same, for a company or its market/segment |
option-verifier | /nai-option-study | + Glob (already had Read) | a library page can count toward a PASS the same as a cited web source |
ea-context-reviewer | /nai-option-study | none — already had Read, Glob | turns a memory-filled gap into a library-checked one |
review-scoper | /nai-review | none | same |
spec-context-scoper | /nai-spec-drafter | none | same |
/nai-review and /nai-spec-drafter have no
web tools anywhere in the system, by design: nothing they cite can come from a source that
could change or vanish out from under a finished review. A local, hand-curated wiki isn't that
— it's a filesystem read, not a network call, and it's exactly as inspectable and stable as
the dropped files those agents already ground themselves in. Granting Read/Glob
against it doesn't touch the boundary those systems were built to hold.
The three no-web-tools scopers already carried a line almost identical across all three: “a gap in the dropped material is stated as a gap, never filled from memory.” That line now reads “… uncovered by a library page, is stated as a gap, never filled from memory” — the library becomes a second thing to check before declaring absence, not a loosening of what counts as evidence.
A citable local source turns “no evidence found” into “checked the library too, still nothing” — without opening a network path a design deliberately closed. Read access to a stable, hand-curated store is not the same risk as a live web fetch, so extending it to the offline agents costs nothing they were protecting against.