One daemon.
A wiki that proves itself.
Watcher runs one local process. It watches a folder, breaks what it finds into atomic claims, and compiles a wiki where every paragraph cites the source chunk it was built from. This page is the deep dive on what that process actually does, end to end.
npm i -g @3030-labs/wotwNode 20+AGPL-3.0
It watches, it chunks, it writes.
Point the daemon at a directory and it stays resident. New and changed files get polled, split into chunks, and turned into a wiki on disk. It records every operation as it goes, so the state on the right is not a status guess. It is what the process has actually done.
- Watches a folder you choose, nothing else.
- Chunks each source into addressable pieces.
- Writes markdown pages, citing every line.
- Seals each operation into an append-only chain.
wotw status
- daemon
- running pid 4821 · v0.8.4
- watching
- ~/work/research 312 files · 4 queued
- provenance head
- sha256:9f3a…c41b
- facts.db
- 8,204 facts · 1,930 pages compiled
- model
- anthropic/claude · key injected at spawn
- spend
- $0.31 today · $4.07 this month
- last seal
- rate-limiting.md · 18s ago
The wiki is for you. The facts are for the agent.
Underneath the readable wiki is a store of atomic claims. Agents query the claim they need over 17 MCP tools, which is 82 to 96% fewer tokens than reading whole pages, and every claim comes back with a hash they can check.
facts.db
One atomic claim per row, each with its own fact hash and a pointer back to the exact source chunk it came from. The store is plain on disk. You can grep it, diff it, and back it up like any file.
query_facts
An agent asks for the claim it needs instead of pulling a whole document into context. The answer returns with its hash, so the agent can prove what it read before it reasons over it.
17 MCP tools
The fact layer is exposed over the Model Context Protocol, so any MCP-aware client speaks to it directly. Search, read, cite, and trace, all grounded in the same chain the wiki was compiled from.
Your key, your model, your machine.
Watcher is model-agnostic. Pick a provider, and your key is injected into the worker at spawn-time and never written to disk. The daemon is AGPL-3.0, runs local-first, and nothing leaves the machine unless you point it somewhere on purpose.
- Spawn-time injection. The key lives in the worker process, not in config.
- Never persisted. No key on disk, no key in the chain.
- Local-first. Your wiki and your facts stay on your filesystem.