Second brain for Claude Code & OpenCode: distills how your patterns and knowledge evolve over time.
MCPpedia last refreshed this data
io.github.IngTian/witness is an MCP server that second brain for Claude Code & OpenCode: distills how your patterns and knowledge evolve over time. Its tool list has not been published yet over stdio and sse, requires no API key, and scores 87/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"io-github-ingtian-witness": {
"args": [
"-y",
"@witness-ai/opencode"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
witness is a local memory & self-improvement engine for Claude Code and OpenCode. It captures your coding sessions and distills how your patterns, habits, and knowledge evolve over time — a person-centric growth archive with provenance, served over an MCP server + plain files, as a single pure-Go binary. Think second brain / AI memory for how you think and grow, not project memory for what your code did. It also ingests your own records — feed it notes, articles, or any text stream with witness
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y '@witness-ai/opencode' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked @witness-ai/opencode against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in ai-ml
MCP client bridge: connects to MCP servers and registers their tools on ctx.tools
The official MCP server implementation for the Perplexity API Platform
Workspace template + MCP server for Claude Code, Codex CLI, Cursor & Windsurf. Multi-agent knowledge engine (ag-refresh / ag-ask) that turns any codebase into a queryable AI assistant.
Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration
MCP Security Weekly
Get CVE alerts and security updates for io.github.IngTian/witness and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
witness turns a stream of text into a dated record of how its subject changed. Feed it your AI coding sessions and it tracks how you think and work. Feed it market commentary, research notes, or any document stream and it tracks how that changed instead. One pure-Go binary, a local SQLite archive plus plain markdown, served to your agent over MCP.
The thing it is built around is change over time, with provenance. When an attribute's value changes, witness does not overwrite it — it closes the old value with a date and opens a new one, and records which source records drove the shift. So the archive answers "how did this get here", not just "what is true now".
"Aah, you were at my side, all along. My true mentor... My guiding moonlight..." — Ludwig, the Holy Blade
1. Watch your own growth as you work with AI. Install it into Claude Code or OpenCode and it captures your sessions in the background — no prompting, no ritual. It distills how your thinking, workstyle, habits, and blind spots shift over months, with evidence for every claim. This is the setup witness ships configured out of the box.
It is reflection-oriented, not clone-oriented: the point is to let your agent understand you, and to leave you a re-readable record of how you thought and grew. It is a pure tool, not a coach — it captures, structures, and serves. Building a coach on top ("you've done this three times…") is left to other projects that read its output.
2. Build a change-history over any text corpus. Write a lens — a prompt describing what to notice
and which dimensions to track — point witness ingest at NDJSON records, and the same four-stage
engine runs. Nothing about the machinery is person-specific: raw records → observations → dated
facets → narrative.
A worked example, run end to end while writing this section. A regime lens over market commentary,
in an archive with no person lens enabled at all: 7 news records became 22 observations and 13
facets. Then the regime flipped hawkish→dovish, and the archive recorded it as history rather than
replacing it:
inflation/core_trend
"Disinflation has broken rather than paused: core CPI reaccelerating…" valid_to 2026-06-…
"Core is disinflating persistently rather than reaccelerating…" (current)
Five facets closed and reopened that way in one review. The generated brief even flagged that its own earlier sequencing thesis had been falsified by the new data — which is the whole point of keeping the history instead of the latest snapshot.
Honest caveat: the engine is general, but everything witness ships is person-shaped — the
built-in default lens, the example lens, and the summary prompts all say "notice things about the
person". For a non-person corpus you write your own lens (three files) and, if you want, override the
summary prompt with one file. There is no market-lens or research-lens preset yet; the machinery is
domain-agnostic, the batteries included are not.
witness is the answer if you've ever wanted to: