wikimem
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 7 GitHub stars
Code Fail
- child_process — Shell command execution capability in .claude/hooks/auto-stage.js
- execSync — Synchronous shell command execution in .claude/hooks/auto-stage.js
- process.env — Environment variable access in .claude/hooks/auto-stage.js
- fs module — File system access in .claude/hooks/auto-stage.js
- rm -rf — Recursive force deletion command in .claude/hooks/block-dangerous-commands.cjs
- process.env — Environment variable access in .claude/hooks/block-dangerous-commands.cjs
- fs module — File system access in .claude/hooks/block-dangerous-commands.cjs
- rm -rf — Recursive force deletion command in .claude/hooks/block-dangerous-commands.js
- process.env — Environment variable access in .claude/hooks/block-dangerous-commands.js
- fs module — File system access in .claude/hooks/block-dangerous-commands.js
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Self-improving memory for agents: ingest anything, query everything.
WikiMem
Self-improving memory for agents: ingest anything, query everything.
Codex is an agent-native, recursively self-improving agent employee whose job is memory. Coding agents use it through its skills, its MCP server and its command line. It improves itself through its own evals and a scheduled improvement loop, and a person reviews every change.
AGENTS.md · llms.txt · Skills · Security · Contributing · All projects
WikiMem gives an agent a memory it can read, search and improve. Drop in files, links or a connected app, and it
compiles them into linked Markdown pages with citations, then answers questions from those pages. It is for anyone
who wants an agent, or a person, to build on what it learned last week instead of starting cold.
Use it from any coding agent
Claude Code: the plugin brings the skills, sub-agents, hooks and MCP server.
/plugin marketplace add naman10parikh/wikimem
/plugin install wikimem@wikimem
Its MCP server, in any MCP client:
claude mcp add --transport stdio wikimem -- npx -y -p github:naman10parikh/wikimem wikimem-mcp
codex mcp add wikimem -- npx -y -p github:naman10parikh/wikimem wikimem-mcp
Cursor (.cursor/mcp.json), Gemini CLI (.gemini/settings.json) and most other clients take the same command as JSON:
{
"mcpServers": {
"wikimem": {
"command": "npx",
"args": [
"-y",
"-p",
"github:naman10parikh/wikimem",
"wikimem-mcp"
]
}
}
}
Gemini CLI: the extension brings the context and the MCP server.
gemini extensions install https://github.com/naman10parikh/wikimem
One skill (3 in all, in skills/), in any agent that reads Agent Skills:
gemini skills install https://github.com/naman10parikh/wikimem --path skills/wikimem
git clone --depth 1 https://github.com/naman10parikh/wikimem /tmp/wikimem && cp -r /tmp/wikimem/skills/wikimem ~/.claude/skills/
The command line:
npx -y -p github:naman10parikh/wikimem wikimem --help
Codex, Cursor, OpenCode, GitHub Copilot and other agents read AGENTS.md; Claude Code reads CLAUDE.md and Gemini CLI reads GEMINI.md, which import it. llms.txt maps every surface for agents that read first.
Quick start
These commands were run for this README. They need Node.js 18 or later and no API key.
alias wikimem='npx -y -p github:naman10parikh/wikimem wikimem'
wikimem init my-wiki # create a vault: wiki/, raw/, AGENTS.md, config.yaml
cd my-wiki
wikimem status # pages, words, sources, links, orphans
wikimem lint # orphan pages, broken wikilinks, missing summaries
wikimem observe # score every page and list what to improve (free without --improve)
wikimem serve # the web app at http://localhost:3141, and the MCP endpoint /mcp
The first npx run downloads and builds WikiMem, which takes a minute; later runs start at once. npx wikimem@latest
installs the last npm release (0.8.6); the GitHub form above runs this repository's code (0.10.0).
To turn sources into pages and ask questions, give WikiMem an LLM: set ANTHROPIC_API_KEY or OPENAI_API_KEY, or run
Ollama locally. Then:
wikimem ingest paper.pdf
wikimem ingest https://en.wikipedia.org/wiki/Large_language_model
wikimem ask "What are the key themes across my sources?"
How it works
WikiMem takes Karpathy's LLM wiki idea and turns it into a full
tool. A vault has two layers. raw/ holds your original sources and is never edited. wiki/ holds the pages an LLM
writes from them, with cross-references and citations. Every change is a git commit, so you can browse history and
restore any snapshot.
raw/ wiki/
paper.pdf index.md ........... content catalog
podcast.mp3 ──LLM──> sources/paper.md ... summary + citations
screenshot.png entities/openai.md . people, orgs, tools
meeting.docx concepts/rag.md .... ideas + frameworks
blog-url syntheses/ ......... cross-cutting analysis
The vault's own AGENTS.md is the schema that tells the LLM how to structure pages, and it changes as the wiki grows.
Three automations keep the wiki growing and improving while you sleep:
| Automation | Trigger | What it does |
|---|---|---|
| Ingest | File watcher on raw/ |
New file detected, processed, turned into wiki pages, committed to git |
| Scrape | Cron schedule or manual | RSS feeds, GitHub trending and URLs are fetched into raw/, which triggers Ingest |
| Observe | Nightly or manual | Scores every page (coverage, consistency, cross-linking, freshness, organization), proposes improvements and applies them within a budget |
13 formats, one pipeline
WikiMem detects the file type, runs the right processor, and writes pages with cross-references and citations. The
web app shows each step: file detection, text extraction, LLM processing, page generation, cross-linking, indexing.
| Format | Extensions | Processor |
|---|---|---|
| Text | .md, .txt |
Direct read |
| Structured | .json, .csv, .yaml |
Schema-aware extraction |
.pdf |
Built-in text extraction | |
| Office | .docx, .pptx, .xlsx |
Document parsing |
| HTML | .html, .htm |
Tag stripping and content extraction |
| Image | .png, .jpg, .gif, .webp |
Claude Vision description |
| Audio | .mp3, .wav, .m4a, .ogg, .flac |
Whisper or Deepgram transcription |
| Video | .mp4, .mov, .avi, .mkv, .webm |
ffmpeg, then Whisper transcription |
| URL | https://... |
Firecrawl or fetch, then Markdown |
wikimem add-source <path> ingests only new or changed files (by modification time and SHA-256), so a folder that
changes daily stays in sync cheaply. wikimem sandbox-run fetches untrusted pages inside an isolated E2B sandbox
and keeps only the cleaned Markdown.
Search, ask and see the graph
- Search:
wikimem searchis BM25 keyword search across every page; embeddings can add semantic search. - Ask:
wikimem askanswers from your pages and cites them;wikimem query --filesaves the answer as a
synthesis page. - Knowledge graph: an interactive D3 force-directed graph. Click a node to highlight its neighbours,
double-click to open it. Community detection clusters related pages; hub nodes are sized by their links. - Time-lapse: watch the wiki grow commit by commit, as pages appear and links form.
The web app
wikimem serve opens a full editor at localhost:3141:
- File tree with collapsible folders, and a tabbed editor with WYSIWYG Markdown (
Cmd+Ssaves and commits) - Knowledge graph, pipeline view (drag and drop a file, watch each step) and time-lapse
- Search (
Cmd+K) and a command palette (Cmd+P) - Settings for API keys, models and automations, and Ask your knowledge from the browser
Connectors
Sync outside sources into the vault on a schedule.
| Connector | Status |
|---|---|
| Local folders, Git repos, GitHub, webhooks | ✅ Shipped |
| Slack, Gmail and Google Drive, Discord | ✅ Shipped |
| RSS feeds | ✅ Shipped |
| Notion, Linear, Jira | ✅ Shipped |
| Microsoft 365, LinkedIn | 🔜 Coming soon |
MCP server and Claude custom connector
Over stdio, wikimem-mcp --vault <path> (or wikimem mcp --vault <path>) serves a vault's 19 tools to Claude Code,
Cursor or any MCP client; with no --vault it serves the current folder. The tools are listed in
AGENTS.md.
Over HTTP, wikimem serve exposes the same tools at /mcp behind OAuth 2.1, in the dialect Claude's custom
connectors speak:
- Start WikiMem:
wikimem serve(defaulthttp://localhost:3141). - Expose it with HTTPS. Claude requires HTTPS except for
localhost. For example, runngrok http 3141, thenexport WIKIMEM_PUBLIC_URL=https://abc.ngrok.appand restartwikimem serveso the metadata advertises it. - Add it in Claude: Settings, then Connectors, then Add Custom
Connector, and pastehttps://abc.ngrok.app/mcp(orhttp://localhost:3141/mcpon the same machine). Claude
fetches/.well-known/oauth-protected-resourceand/.well-known/oauth-authorization-server, registers a client
at/oauth/register, opens/oauth/authorize(click Allow once), exchanges the code at/oauth/token, and
calls/mcpwith the token. All 19 tools appear, and Claude cites pages from your vault.
| Variable | Purpose |
|---|---|
WIKIMEM_PUBLIC_URL |
The public issuer and resource URL advertised in the metadata |
WIKIMEM_OAUTH_SECRET |
The HS256 signing key for access tokens. Created and saved to .wikimem/oauth-secret (mode 0600) if unset |
WIKIMEM_OAUTH_AUTO_APPROVE |
Set to 1 to skip the consent screen (tests and CI only) |
Tokens never leave your machine, and the signing secret stays inside your vault folder.
Commands
| Command | Description |
|---|---|
wikimem init [dir] |
Create a vault (--template personal|research|business|codebase, --from-folder, --from-repo) |
wikimem serve |
Start the web app on port 3141 |
wikimem ingest <source> |
Turn a file or URL into wiki pages |
wikimem add-source <path> |
Ingest only new or changed files |
wikimem search <term> |
BM25 full-text search across wiki pages |
wikimem ask <question> |
Ask a question, get an answer from your wiki |
wikimem query <question> |
Ask, and optionally save the answer as a synthesis page (--file) |
wikimem lint |
Health check: orphan pages, broken links, missing summaries (--fix) |
wikimem status |
Vault statistics: pages, words, sources, links, orphans (--json) |
wikimem watch |
Auto-ingest files dropped into raw/ |
wikimem scrape |
Fetch from configured RSS, GitHub and URL sources |
wikimem sandbox-run |
Fetch untrusted content inside an E2B sandbox (needs E2B_API_KEY) |
wikimem observe |
Score pages, find orphans and gaps (--improve, --budget 2.0, --json) |
wikimem improve |
Run a self-improvement cycle (--dry-run, --threshold 90) |
wikimem export |
Export the wiki as graph data (JSON, CSV or GraphML) |
wikimem publish |
Publish the wiki as a static site, RSS, JSON feed or digest (--format html,rss,json-feed,digest) |
wikimem open |
Open a page in the browser |
wikimem history |
Browse the change history and restore snapshots |
wikimem duplicates |
List sources rejected as near-duplicates |
wikimem mcp |
Start the MCP server over stdio |
Configuration
After wikimem init, the vault holds config.yaml:
provider: claude # claude | openai | ollama
model: claude-sonnet-4-20250514
sources:
- name: "HN Front Page"
type: rss
url: "https://hnrss.org/frontpage"
- name: "GitHub Trending TS"
type: github
query: "stars:>100 created:>7d language:typescript"
improvement:
threshold: 80
schedule: "0 3 * * *" # 3am nightly
| Variable | Purpose |
|---|---|
ANTHROPIC_API_KEY |
Claude API access (the default provider) |
OPENAI_API_KEY |
OpenAI API access |
OLLAMA_BASE_URL |
Ollama server URL (default http://localhost:11434) |
FIRECRAWL_API_KEY |
Better URL-to-Markdown (optional) |
DEEPGRAM_API_KEY |
Audio transcription (optional; falls back to Whisper) |
E2B_API_KEY |
The sandbox for wikimem sandbox-run (optional) |
| Provider | Flag | Default model |
|---|---|---|
| Claude | -p claude |
claude-sonnet-4-20250514 |
| OpenAI | -p openai |
gpt-4o |
| Ollama | -p ollama |
llama3.2 |
Ollama runs fully local: no API keys, no network, no data leaves your machine.
Obsidian and privacy
Every vault is an Obsidian vault. Open the folder in Obsidian with no plugins: [[wikilinks]] become backlinks,
YAML frontmatter becomes page metadata, and the graph and tag views work.
Everything runs locally; the wiki is a folder of Markdown files. Nothing leaves your machine except LLM calls, and
those are optional with Ollama. raw/ and config.yaml are excluded from git by default.
| Path | Safe to commit? | Why |
|---|---|---|
wiki/ |
✅ | LLM-written summaries, no raw personal data |
AGENTS.md |
✅ | The schema file, no personal data |
raw/ |
❌ | Your original source files |
config.yaml |
❌ | May contain API keys |
Credits
Inspired by Andrej Karpathy's LLM wiki pattern: LLMs should
compile knowledge into structured, linked wikis rather than only answer from raw chunks. Built with
Express, D3, simple-git, and the
Claude, OpenAI and Ollama APIs.
What it is made of
Every project in this fleet is graded on the same 11 harness components and on self-improvement. Each mark is backed by a file you can open.
| Component | Grade | Where |
|---|---|---|
| Identity | ✅ | identity/SOUL.md:1 |
| Memory | ✅ | src/search/bm25.ts:21 |
| Skills | ✅ | skills/wikimem/SKILL.md:1 |
| Tools/CLIs | ✅ | package.json:6 |
| Hooks | ✅ | .claude/settings.json:4 |
| Sub-agents | ✅ | .claude/agents/vault-curator.md:1 |
| MCPs | ✅ | src/mcp-server.ts:65 |
| Dispatch | ✅ | src/core/scheduler.ts:81 |
| Evals | ✅ | eval/run.mjs:1 |
| Observability | ✅ | src/core/audit-trail.ts:32 |
| Sandbox/Infra | ✅ | src/core/sandbox-scrape.ts:105 |
| RSI / open-endedness | ✅ | dsip.json:1 |
✅ real and tested · 🟡 partial, with the reason in the row · ❌ absent
How it improves itself
It carries its own evals and a self-improvement contract, dsip.json (level L2). A scheduled loop runs the evals, tries a change in a sandbox and opens it for review. A change that lowers a score is not merged, and a person merges every change. Lessons it learns are kept as rules in its memory files.
Part of a fleet
One of the agent-native, recursively self-improving open-source projects by Naman Parikh. Each one is an agent employee that owns one part of an agent's harness or of the product around it.
Siblings: agentdial (identity) · skillsmith (skills) · agent-booster (tools / CLIs) · armory (MCPs and the component registry) · agentgrid (dispatch) · agentswarm (dispatch) · agentbench (evals) · agentmoney (observability) · claude-harness (the whole harness, as a template).
Contributing and security
Read CONTRIBUTING.md; AI-assisted pull requests are welcome. Report a vulnerability privately, as SECURITY.md explains.
License
MIT, © 2026 Naman Parikh. See LICENSE.
Star history
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found