Zettelkasten Second Memory
FreeNot checkedAn OpenClaw (2026.4/2026.6+) and Hermes Agent plugin that turns AI conversations into a permanent Zettelkasten knowledge base — atomic notes, bi-directional lin
About
An OpenClaw (2026.4/2026.6+) and Hermes Agent plugin that turns AI conversations into a permanent Zettelkasten knowledge base — atomic notes, bi-directional links, knowledge distillation, and MCP tool exposure.
README
🧠 Zettelkasten Second Memory
An OpenClaw (2026.4/2026.6+) and Hermes Agent plugin that turns AI conversations into a permanent Zettelkasten knowledge base — atomic notes, bi-directional links, knowledge distillation, and intelligent retrieval via MCP tools.
Version OpenClaw Hermes MCP Server License: MIT Node.js Version
📌 Current Version
| Component | Version | Status |
|---|---|---|
| Plugin | v1.0.0-beta.8 |
Active development |
| Skill | v1.0.0-beta.8 |
Active development |
| OpenClaw | 2026.4.24/2026.6.x |
Developed & tested; compatible with >= 2026.4.23 |
| Hermes Agent | v0.17.0 |
Experimental support via MCP HTTP bridge |
| Node.js | >= 22.14.0 |
Required (for node:sqlite) |
Latest Release: v1.0.0-beta.8 — Compatibility adaptation for OpenClaw 2026.6.x and Hermes MCP bridge
✨ Core Features
| Feature | Description |
|---|---|
| 📝 Atomic Notes | Each note is an independent knowledge unit, supporting atomic / structure / source types |
| 🔗 Bi-directional Links | 11 semantic link types (supports, refines, extends, contradicts, example-of...) to build a true knowledge graph |
| 🔍 Full-text Search | SQLite FTS5 + LIKE dual engine, supporting Chinese tokenization and fuzzy matching |
| 🤖 AI Integration | Deep MCP integration with OpenClaw and Hermes Agent, enabling AI agents to automatically capture conversation knowledge |
| 🔄 Knowledge Distillation | CEQRC pipeline automatically refines fragmented notes into permanent knowledge |
| 🏷️ Tag System | Flexible tag classification and statistics, supporting tag-cloud analysis |
| 📦 Markdown Native | All notes stored as Markdown, your data belongs entirely to you |
| 🧟 Zombie Detection | Auto-detect stale notes (180+ days, zero backlinks) with zk_find_zombies |
| ✨ Glow Ranking | Knowledge importance scoring via PageRank + citation + recency decay |
| 📦 Archive System | Move cold notes to archive folder; auto-archive nightly at 2:00 AM |
| 📜 Audit Log | Full archive/unarchive history with zk_get_archive_log |
| 🔎 Path Discovery | Weighted shortest path between any two notes with Chinese explanations |
| 🌉 Hermes Bridge | Optional Streamable HTTP MCP bridge exposes all tools to Hermes Agent (v0.17.0+) |
⚡ Performance Benchmark
Tested on: Node.js v22.22.2, SQLite :memory:
Scale: 1,000 notes creation and search | All tests passed ✅
Current suite: 1,724 unit / integration tests with Vitest
🇨🇳 Looking for Chinese documentation? 点击这里查看简体中文介绍
📐 System Architecture
graph TD
OG[OpenClaw Gateway<br/>MCP Protocol Layer]
HG[Hermes Agent<br/>optional via Streamable HTTP MCP]
subgraph ZK[Zettelkasten Plugin]
MT[MCP Tools]
CLI[CLI Commands]
S[Service Layer]
R[Repository Layer]
ST[Storage Layer]
C[Core Types]
end
DB[(SQLite + Markdown)]
OG --> MT
HG --> MT
MT --> S
CLI --> S
S --> R
R --> ST
ST --> DB
C --> S
C --> R
C --> ST
🇨🇳 Looking for Chinese documentation? 点击这里查看简体中文介绍
🚀 Quick Start
Requirements
- Node.js >= 22.14.0 (requires built-in
node:sqlite) - OpenClaw
2026.4.24/2026.6.x(compatible with >= 2026.4.23) - Hermes Agent
v0.17.0+(optional, for Hermes integration)
Installation
# Clone the repository
git clone https://github.com/cx2002302-lang/zettelkasten-second-memory.git
cd zettelkasten-second-memory
# Install dependencies
npm install
# Run tests
npm test
Use as an OpenClaw Plugin
# 1. Deploy the plugin
bash scripts/deploy.sh
# 2. Configure OpenClaw (edit ~/.openclaw/openclaw.json)
# Ensure plugins.load.paths includes the plugin path
# 3. Restart the Gateway
openclaw gateway restart
# 4. Initialize the database
openclaw zk init
# 5. Health check
openclaw zk doctor
Use with Hermes Agent (Optional)
# 1. Build the MCP bridge
npm run build:bridge
# 2. Start the bridge (adjust DB/notes paths to your OpenClaw setup)
ZETTELKASTEN_DB_PATH=~/.openclaw/zettelkasten/zettelkasten.db \
ZETTELKASTEN_NOTES_DIR=~/.openclaw/zettelkasten/notes \
ZETTELKASTEN_MCP_PORT=9090 \
node dist/mcp/http-bridge.js
# 3. In your Hermes config, add the MCP server:
# mcp_servers:
# zettelkasten:
# type: http
# url: "http://<openclaw-host>:9090/mcp"
# enabled: true
# 4. Verify connectivity
hermes mcp test zettelkasten
See docs/COMPATIBILITY.md for version-specific notes.
🛠️ CLI Commands
| Command | Description |
|---|---|
openclaw zk init |
Initialize database and directory structure |
openclaw zk doctor |
Run health checks |
openclaw zk status |
Show system status |
openclaw zk new |
Create a new note |
openclaw zk list |
List notes |
openclaw zk search <query> |
Search notes |
openclaw zk show <id> |
View note details |
openclaw zk link <from> <to> |
Create a note link |
openclaw zk review-stats |
View review statistics |
openclaw zk review-pending |
List pending reviews |
openclaw zk feedback-stats |
View feedback statistics |
openclaw zk prompt-stats |
View prompt evolution statistics |
openclaw zk curation-stats |
View sample curation statistics |
🧩 MCP Tools (for AI Agents)
| Tool | Permission | Description |
|---|---|---|
zk_search_notes |
Read | Full-text search for notes |
zk_get_note |
Read | Get a single note |
zk_get_backlinks |
Read | Get reverse links |
zk_find_path |
Read | Find paths between notes |
zk_create_note |
Write | Create a new note |
zk_update_note |
Write | Update a note |
zk_create_link |
Write | Create a note link |
zk_run_ceqrc |
Write | Run the cognitive pipeline |
zk_distill_memory |
Write | Distill session memories |
zk_review_note |
Write | Review a note |
zk_get_review_panel |
Read | Get pending review panel |
zk_submit_review |
Write | Submit a review |
zk_get_review_stats |
Read | Get review statistics |
zk_submit_feedback |
Write | Submit user feedback |
zk_get_feedback_stats |
Read | Get feedback statistics |
zk_analyze_feedback_trends |
Read | Analyze feedback trends |
zk_get_active_prompt |
Read | Get active prompt version |
zk_get_prompt_stats |
Read | Get prompt evolution stats |
zk_get_curation_stats |
Read | Get curation statistics |
zk_export_samples |
Write | Export curated samples |
📁 Project Structure
zettelkasten-second-memory/
├── src/ # Plugin source code
│ ├── core/ # Type definitions, constants, utilities
│ ├── storage/ # Database schema, FTS5, template manager
│ ├── repository/ # Data access layer (notes, links, tags, reviews...)
│ ├── service/ # Business logic (CEQRC, distillation, deduplication...)
│ ├── integration/ # OpenClaw integration (agent config, scheduler, hooks)
│ ├── mcp/ # MCP tool definitions and server
│ ├── plugin/ # OpenClaw plugin entry and manifest
│ ├── examples/ # Usage examples
│ └── index.ts # Library entry point
├── skills/brain/ # AI Skill (prompts, rules, workflows)
├── scripts/ # Deployment scripts
├── docs/ # Documentation
├── package.json
├── LICENSE
└── README.md
🧠 Second Memory Skill (AI Integration)
This project includes a Brain Skill that enables AI agents to automatically save conversation knowledge into Zettelkasten:
# Install the Skill
cp -r skills/brain ~/.openclaw/skills/zettelkasten-brain
# Activate the Skill
openclaw config set agents.defaults.skills '["zettelkasten-brain"]'
# Restart the Gateway
openclaw gateway restart
Once activated, the AI will automatically:
- 🔍 Search the knowledge base before answering
- 📝 Recognize and save important information
- 🔗 Intelligently establish note associations
- 📦 Archive discussions when sessions end
📊 Database Schema
The system uses SQLite. Core tables include:
| Table | Description |
|---|---|
zettel_notes |
Main notes table (title, content, status, confidence...) |
zettel_links |
Bi-directional links table (11 semantic link types) |
zettel_tags |
Tags table |
zettel_note_tags |
Note-tag association table |
zettel_reviews |
Review records table |
zettel_feedback |
Feedback data table |
zettel_prompt_versions |
Prompt version table |
zettel_meta |
Metadata table |
FTS5 virtual tables provide full-text search capabilities.
🧪 Testing
# Run all tests
npm test
Current test coverage:
- Repository layer (CRUD, search, links, tags)
- Service layer (CEQRC, distillation, deduplication, parsing)
- Integration layer (configuration, scheduling)
- MCP Server (tool registration and invocation)
📜 License
MIT © Zettelkasten Contributors
🙏 Acknowledgements
- Inspired by Niklas Luhmann's Zettelkasten method
- Built on the OpenClaw plugin architecture
- Uses SQLite FTS5 for full-text search
Installing Zettelkasten Second Memory
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/cx2002302-lang/zettelkasten-second-memoryFAQ
Is Zettelkasten Second Memory MCP free?
Yes, Zettelkasten Second Memory MCP is free — one-click install via Unyly at no cost.
Does Zettelkasten Second Memory need an API key?
No, Zettelkasten Second Memory runs without API keys or environment variables.
Is Zettelkasten Second Memory hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Zettelkasten Second Memory in Claude Desktop, Claude Code or Cursor?
Open Zettelkasten Second Memory on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgres
Query your database in natural language
by AnthropicPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolCompare Zettelkasten Second Memory with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
