npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@3030-labs/wotw

v0.9.0

Published

Self-bootstrapping AI knowledge daemon that turns a folder of raw files into a persistent, compounding LLM wiki with provenance signing, MCP serving, and zero manual maintenance.

Downloads

291

Readme

watcher-on-the-wall

A local-first AI knowledge daemon. Drops files in, persistent wiki out. Every operation cryptographically signed. Served to any MCP-capable agent.

wotw is a small background process. You feed it raw notes, transcripts, and documents; it writes you an interlinked Obsidian-compatible wiki, refreshes it as your inputs change, and proves to you (and to auditors) exactly which model wrote which page from which source at what cost.

It runs entirely on your machine. Your data never leaves unless you wire it to a hosted LLM yourself (Anthropic, OpenAI, Gemini, or Ollama for fully offline). Reads happen over MCP, so any agent that speaks Model Context Protocol — Claude Code, Claude Desktop, Cursor — can query your wiki as a memory tier.

Install

npm install -g @3030-labs/wotw
wotw init        # interactive: pick a vault, configure runtime
wotw start       # daemon goes to the background

Requires Node.js ≥ 20. macOS arm64 / amd64, Linux amd64, Windows amd64.

Run from source (for contributors, or to run an unreleased change before it lands on npm):

git clone https://github.com/3030-Labs/watcher-on-the-wall.git
cd watcher-on-the-wall
npm install          # use npm, NOT pnpm — see note below
npm run build
npm install -g .     # global install from the local checkout

Use npm, not pnpm, for a from-source install. pnpm 10+ installs dependencies through a global content-addressable store and, with pnpm link --global, splits the dependency tree in a way that leaves native addons (better-sqlite3, the bundled claude binary) unreachable at runtime. npm install -g . avoids this entirely. (Tracked in PASS-023-DOGFOOD-FINDINGS.md.)

30-second quickstart

$ wotw init
┌  watcher-on-the-wall — setup wizard
│
◇  Where should your wiki live?
│  ~/Obsidian/research (detected)
│
◇  Which LLM runtime?
│  claude CLI (free with subscription)
│
│  Runtime ─ CLI mode (claude binary found at /usr/local/bin/claude)
│  Next steps ─
│    1. Drop files in ~/Obsidian/research/raw/
│    2. wotw start
│    3. wotw candidates  →  wotw approve  →  pages land in wiki/
│
└  Done! Your wiki is ready.

$ wotw start
daemon running (pid 18412). logs: ~/.wotw/daemon.log

$ cp ~/Downloads/meeting-transcript.md ~/Obsidian/research/raw/
# daemon ingests it + synthesizes related concept pages into candidates/

$ wotw candidates          # list pages awaiting review
$ wotw approve <page>      # promote a candidate into wiki/
# (set ingestion.staging: false in wotw.yaml to auto-approve instead)

Generated pages land in candidates/ first, not directly in wiki/. By default wotw stages every page for human review — run wotw candidates to list them and wotw approve <page> to promote one into wiki/. Approval appends a provenance record attributing the decision to you (model=user). Set ingestion.staging: false in wotw.yaml to skip review and write straight to wiki/.

Open the vault in Obsidian to see approved pages rendered as linked notes. The daemon batches subsequent file drops, refreshes stale pages, and signs every operation into a provenance chain you verify with wotw audit.

What you get

  • Compounding wiki. Drop a transcript, get categorized markdown with YAML frontmatter, internal links, and a generated index. Drop ten more on the same topic, get synthesis pages.
  • Provenance you can prove. Every write — content + model + cost + source — appended to a SHA-256 chain. wotw audit walks it and reports tampering. Cryptographic attestation under tenant-managed keys (G5).
  • MCP-served. Ten tools over streamable HTTP: search, query, define, relate, cite_sources, query_progressive, query_facts, read_page, get_page, list_pages. Bearer-token auth, per-IP rate limiting.
  • Local-first, BYOK. Pick your provider (Anthropic / OpenAI / Gemini / Ollama / claude CLI). Your Anthropic key never leaves your machine. The wiki and its provenance chain are yours.
  • Token-efficient retrieval. Context-efficiency Pass A + B ship 86-99% fewer tokens than naive query retrieval on benchmark fixtures. Pure BM25, no embeddings.
  • Audit-ready. Compliance Pack export (CT4.01) bundles your chain with encrypted DEKs for offline verification via the separately distributed wotw-verify Go binary. Single statically-linked customer-side verifier, no daemon needed.

Documentation

| | | |---|---| | Up and running | docs/init-walkthrough.md | | Configuration knobs | docs/configuration.md | | CLI commands | docs/cli-reference.md | | MCP tools | docs/mcp-tools.md | | Architecture | docs/architecture.md | | BYOK + LLM providers | docs/self-hosted-byok.md | | Fact extraction gating | docs/llm-provider-auto-resolution.md | | Provenance chain format | docs/provenance.md | | Compliance Pack wire format | docs/pack-format-daemon.md | | Knowledge health + auto-heal | docs/knowledge-health.md | | Obsidian integration | docs/obsidian-setup.md | | Multi-user + per-tenant tokens | docs/multi-user.md | | Retrieval design (BM25 rationale) | docs/retrieval-hardening.md | | Opt-in telemetry | docs/telemetry.md |

Project status

wotw is pre-1.0. The substrate (ingestion, provenance, MCP, Compliance Pack format) is stable and exercised by 900+ tests across 7 build gates; the npm package is @3030-labs/wotw. Breaking changes are possible at minor-version bumps until 1.0; see CHANGELOG.md.

License

AGPL-3.0-or-later — see LICENSE-NOTICES.md for the plain-English summary (what counts as a derivative work, how a service offering must comply, what competitors can fork).

Links