- Reliability 10/20
- The manifest and README agree on five MCP tools over stdio; the L0–L4 architecture, single-binary design, and SQLite store are internally consistent, and diagnostic entry points (witness doctor, distill status) exist. However, this is a static review: the supplied material shows no CI workflows or committed tests covering the handshake or error paths, and the ~448MB model download/embedder startup are dependency risks only partially mitigated by doctor. Score capped at/below 12 absent verifiable execution evidence.
- Security and permissions 14/20
- Strong local-first posture: data under ~/.local/share/witness at 0700/0600, pure-Go local embeddings, no cloud keys, SHA256 verification for custom model mirrors, and deletion limited to single observations — no red-line behaviors (no malware, credential theft, covert exfiltration, or irreversible destructive defaults), so security is scored well above the 0–4 red-line band. Deductions: distillation pipes session content through the user's Claude/OpenCode auth to an LLM provider, which sits in tension with the 'nothing leaves your machine' claim; auto_distill=true launches model work by default; and the lens system executes arbitrary user-supplied prompt directories with no third-party-content caution.
- Maintenance 10/20
- MIT license, version 0.8.0, documented npm Trusted Publishing workflow with idempotent releases, and an upgrade migration note (stale witness-distill sessions) indicate thoughtful maintenance. But with 8 stars, 5 open issues, and no evidence of commit cadence, release history, or a security-response channel, governance evidence is incomplete.
- Documentation 16/20
- Well-layered docs: architecture, a complete copy-paste lens example, full command reference, configuration table, platform matrix, backup/restore guidance including WAL corruption warnings, upgrade caveats, and honest limitation disclosures (unsupported platforms, partial unwire). Deductions: MCP tool parameters (e.g., record_observation fields) are not individually documented, and troubleshooting leans on doctor without worked examples; client config snippets are absent.
- Setup experience 12/20
- The npm path is simple (add plugin to opencode.; MCP auto-registers), and source installs have a one-command install.sh with an explicit platform table. Deductions: the Claude Code path requires building from source, a ~448MB first model download that must complete while the editor runs, wire/unwire being source-only commands, and npm excluding macOS Intel, Linux ARM, and Windows. Complexity and partial platform coverage keep this at/below 15.