Kioku
Memory for Claude Code โ auto-accumulate sessions into an Obsidian Wiki
Ask AI about Kioku
Powered by Claude ยท Grounded in docs
I know everything about Kioku. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
This manual is available in multiple languages
[!NOTE] ๐ Available in: ๐ฌ๐ง English ยท ๐ฏ๐ต ๆฅๆฌ่ช ยท ๐น๐ผ ็น้ซไธญๆ ยท ๐จ๐ณ ็ฎไฝไธญๆ ยท ๐ฎ๐ณ เคนเคฟเคจเฅเคฆเฅ ยท ๐ช๐ธ Espaรฑol ยท ๐ง๐ท Portuguรชs ยท ๐ฐ๐ท ํ๊ตญ์ด ยท ๐ซ๐ท Franรงais ยท ๐ท๐บ ะ ัััะบะธะน
KIOKU
Memory for Claude Code
KIOKU means "memory" in Japanese
Claude Code forgets knowledge from past sessions as they go. KIOKU automatically accumulates your conversations into a Wiki and recalls them in the next session.
No more repeating the same explanations over and over. A "second brain" that grows with every use โ for your Claude.
What It Does
Automatically record Claude Code sessions and build a structured knowledge base on an Obsidian Vault.
Combines Andrej Karpathy's LLM Wiki pattern with auto-logging and Git sync across multiple machines.
๐ฃ๏ธ You chat with Claude Code as usual
โ (everything is recorded automatically โ you don't do anything)
๐ Session logs saved locally
โ (a scheduled job asks AI to read the logs and extract knowledge)
๐ Wiki grows with each session โ concepts, decisions, patterns
โ (synced via Git)
โ๏ธ GitHub keeps your Wiki backed up and shared across machines
- Auto-capture (L0): Captures Claude Code hook events (
UserPromptSubmit/Stop/PostToolUse/SessionEnd) and writes Markdown tosession-logs/ - Structuring (L1): Scheduled execution (macOS LaunchAgent / Linux cron) has the LLM read unprocessed logs and build concept pages, project pages, and design decisions in
wiki/. Session insights are also saved towiki/analyses/ - Integrity check (L2): Monthly wiki health check generates
wiki/lint-report.md. Automatic secret leak detection included - Sync (L3): The Vault itself is a Git repo.
SessionStartrunsgit pull,SessionEndrunsgit commit && git push, syncing across machines via a GitHub Private repository - Wiki context injection: At
SessionStart,wiki/index.mdis injected into the system prompt so Claude can leverage past knowledge - qmd full-text search: Search wiki via MCP with BM25 + semantic search
- Wiki Ingest skills:
/wiki-ingest-alland/wiki-ingestslash commands import existing project knowledge into the Wiki - Secret isolation:
session-logs/stays local per machine (.gitignore). Onlywiki//raw-sources//templates//CLAUDE.mdare Git-managed
Important Notes
[!CAUTION] KIOKU currently requires Claude Code (Max plan). The Hook system (L0) and Wiki context injection are Claude Code-specific features. The Ingest/Lint pipeline (L1/L2) can work with other LLM APIs by swapping the
claude -pcall โ this is planned as a future enhancement.
[!IMPORTANT] This software is provided "as is", without warranty of any kind. The authors assume no responsibility for any data loss, security incidents, or damages arising from the use of this tool. Use at your own risk. See LICENSE for full terms.
Prerequisites
| Version / Requirement | |
|---|---|
| macOS | 13+ recommended |
| Node.js | 18+ (hook scripts are .mjs ES Modules, zero external dependencies) |
| Bash | 3.2+ (macOS default) |
| Git | 2.x+. Must support git pull --rebase / git push |
| GitHub CLI | Optional (gh simplifies private repo creation) |
| Claude Code | Max plan required (uses claude CLI and Hook system in ~/.claude/settings.json) |
| Obsidian | One Vault created in any folder (iCloud Drive not required) |
| jq | 1.6+ (used by install-hooks.sh --apply) |
| poppler | Optional but recommended. Enables PDF ingestion via pdftotext / pdfinfo. Install with brew install poppler (macOS) or apt install poppler-utils (Debian/Ubuntu). Without poppler, PDFs in raw-sources/ are silently skipped. |
| Env var | OBSIDIAN_VAULT pointing to the Vault root |
Quick Start
[!WARNING] Understand before you install: KIOKU hooks into all Claude Code session I/O. This means:
- Session logs may contain API keys, tokens, or personal information from your prompts and tool output. Masking covers major patterns but is not exhaustive โ review SECURITY.md
- If
.gitignoreis misconfigured, session logs could be accidentally pushed to GitHub- The auto-ingest pipeline sends session log content to Claude via
claude -pfor Wiki extractionWe recommend starting with
KIOKU_DRY_RUN=1to verify the pipeline before enabling full operation.
๐ Interactive Setup (Recommended)
[!NOTE] Enter the following in Claude Code to start an interactive, guided setup. It explains each step's purpose and adapts to your environment.
Please read skills/setup-guide/SKILL.md and guide me through the KIOKU installation.
๐ ๏ธ Manual Setup
[!NOTE] For those who want to understand each step. Run the scripts directly.
1. Create a Vault and connect it to a Git repository (manual)
- Create a new Vault in Obsidian (e.g.,
~/kioku-vault/main) - Create a Private repository on GitHub (e.g.,
kioku-vault) - In the Vault directory:
git init && git remote add origin ...(orgh repo create --private --source=. --push)
This step is not automated by KIOKU scripts. GitHub authentication (gh CLI / SSH keys) depends on your environment.
2. Set the environment variable
# Add to ~/.zshrc or ~/.bashrc
export OBSIDIAN_VAULT="$HOME/kioku-vault/main"
3. Initialize the Vault
# Creates raw-sources/, session-logs/, wiki/, templates/ under the Vault,
# places CLAUDE.md / .gitignore / initial templates (never overwrites existing files)
bash scripts/setup-vault.sh
4. Install Hooks
# Option A: Auto-merge (recommended, requires jq)
bash scripts/install-hooks.sh --apply
# Creates backup โ shows diff โ confirmation prompt โ adds hook entries preserving existing config
# Option B: Manual merge
bash scripts/install-hooks.sh
# Outputs JSON snippet to stdout for manual merge into ~/.claude/settings.json
5. Verify
Restart Claude Code, then have one conversation.
$OBSIDIAN_VAULT/session-logs/YYYYMMDD-HHMMSS-<id>-<prompt>.md should appear.
Steps 1โ5 are required. The following are optional but recommended for full functionality.
6. Set up scheduled execution (recommended)
Configure automatic Ingest (daily) and Lint (monthly).
# Auto-detects OS: macOS โ LaunchAgent, Linux โ cron
bash scripts/install-schedule.sh
# Test with DRY RUN first
KIOKU_DRY_RUN=1 bash scripts/auto-ingest.sh
KIOKU_DRY_RUN=1 bash scripts/auto-lint.sh
macOS note: Placing the repo under
~/Documents/or~/Desktop/may cause TCC (Transparency, Consent, Control) to block background access with EPERM. Use a path outside protected directories (e.g.,~/_PROJECT/).
7. Set up qmd search engine (optional)
Enable MCP-powered full-text and semantic search for the Wiki.
bash scripts/setup-qmd.sh
bash scripts/install-qmd-daemon.sh
8. Install Wiki Ingest skills (optional)
bash scripts/install-skills.sh
9. Deploy to additional machines
git clone git@github.com:<USERNAME>/kioku-vault.git ~/kioku-vault/main
# Open ~/kioku-vault/main/ as a Vault in Obsidian
# Repeat steps 2โ6
10. MCP server for Claude Desktop / Code (optional)
Claude Desktop has no Hook system, so it cannot record sessions automatically.
The kioku-wiki MCP server lets both Claude Desktop and Claude Code search, read, and write the Wiki manually.
# 1. Install dependency (only inside mcp/, parent repo stays package.json-free)
bash scripts/setup-mcp.sh
# 2. Smoke test with the official Inspector
npx @modelcontextprotocol/inspector node mcp/server.mjs
# 3. Preview client-config changes
bash scripts/install-mcp-client.sh --dry-run
# 4. Apply (merges into ~/Library/Application Support/Claude/claude_desktop_config.json)
bash scripts/install-mcp-client.sh --apply
# 5. Register with Claude Code (CLI / VSCode) via the printed stdio command
claude mcp add --scope user --transport stdio kioku \
"$(command -v node)" "$(pwd)/mcp/server.mjs"
Nine tools provided:
| Tool | Purpose |
|---|---|
kioku_search | Wiki search (delegates to qmd CLI; falls back to a simple Node grep when qmd is unavailable) |
kioku_read | Return the contents of wiki/<path>.md |
kioku_list | Walk the wiki/ directory tree |
kioku_write_note (recommended) | Append a memo to session-logs/; the next auto-ingest cycle structures it into wiki/ |
kioku_write_wiki (advanced) | Write directly into wiki/ with template + frontmatter auto-injection |
kioku_delete | Move a page to wiki/.archive/ (recoverable; wiki/index.md cannot be deleted) |
kioku_ingest_document (feature 2.4) | Unified ingest router for local documents under raw-sources/. Dispatches by extension: .pdf / .md โ PDF handler, .epub โ EPUB handler (yauzl + 8-layer defense + readability โ chapter Markdown chunks), .docx โ DOCX handler (mammoth + yauzl + XXE pre-scan โ single Markdown chunk). Image / OLE embedded content is skipped for safety (MVP) |
kioku_ingest_pdf (feature 2.1, deprecated alias) | Deprecated alias for kioku_ingest_document restricted to .pdf / .md. Retained through the v0.5 โ v0.7 window, removal planned for v0.8. Prefer kioku_ingest_document for new integrations |
kioku_ingest_url (feature 2.2) | Fetch an HTTP/HTTPS URL, extract the article body with Mozilla Readability, save Markdown + images under raw-sources/<subdir>/fetched/, and queue a wiki summary. PDF URLs auto-dispatch to kioku_ingest_document |
Notes:
- Fully local (stdio transport, no network exposure, single dep
@modelcontextprotocol/sdk) - For "save this to my wiki" prompts in Desktop, prefer
kioku_write_noteโ it preserves wiki coherence - Use
kioku_write_wikionly when the user explicitly wants the page to appear immediately - Coexists with the existing qmd MCP (HTTP :8181). Prefer the qmd MCP
searchtool when available;kioku_searchis the fallback.
Persistence & when to re-run
Once installed, you do not need to restart or re-run anything on reboot. The MCP server is spawned on-demand by Claude Desktop / Claude Code when a new conversation opens, and terminates when the conversation ends โ there's no daemon to manage. OS reboots, Desktop relaunches, and Claude Code restarts all "just work".
Re-run the steps only in these specific cases:
| Trigger | Re-run |
|---|---|
| Moved the repo to a different directory | Steps 3 & 5 (they record absolute paths to mcp/server.mjs) |
| Switched Node version (mise / nvm / Volta) | Step 3 (the script hardcodes command -v node) |
Changed the OBSIDIAN_VAULT env var | Step 3 (the value is baked into the config at apply time) |
@modelcontextprotocol/sdk major version bump | Step 1 (setup-mcp.sh to refresh node_modules) |
Uninstall:
bash scripts/install-mcp-client.sh --uninstall
rm -rf mcp/node_modules
11. MCPB bundle for Claude Desktop (one-file install)
If you only use Claude Desktop and want the shortest install path, install the MCPB bundle with a single drag & drop. The bundle includes mcp/server.mjs and all production dependencies; Claude Desktop launches it with its built-in Node runtime, so end users do not need to install Node themselves.
Option A โ Install a pre-built release (recommended for end users)
- Download the latest
kioku-wiki-<version>.mcpbfrom github.com/megaphone-tokyo/kioku/releases - Open Claude Desktop
- Either:
- Double-click the
.mcpbfile in Finder (macOS associates.mcpbwith Claude Desktop), or - Open Settings โ Extensions / Connectors and drag the
.mcpbonto that screen - (Don't drop it on the chat window โ it'll be treated as a file attachment)
- Double-click the
- In the install dialog, pick your Vault directory (the folder containing
wiki/,session-logs/,raw-sources/) โ Install - Open Settings โ Connectors and confirm
KIOKU Wikiis enabled - Start a new chat and try:
kioku_read ใง wiki/index.md ใ่ชญใใง(existing chats won't see the new tools)
Note: Claude Desktop will warn that the extension has not been verified by Anthropic. This is expected โ
mcpb signfor code signing is a planned future enhancement.
Option B โ Build from source (developers / contributors)
# 1. Build the .mcpb bundle (writes mcp/dist/kioku-wiki-<version>.mcpb, ~3.2 MB)
bash scripts/build-mcpb.sh
# 2. (Optional) validate manifest + inspect contents
bash scripts/build-mcpb.sh --validate
npx --yes @anthropic-ai/mcpb info mcp/dist/kioku-wiki-0.1.0.mcpb
# 3. Clean build artifacts
bash scripts/build-mcpb.sh --clean
The bundle is gitignored (mcp/build/, mcp/dist/). To publish a new release: run build-mcpb.sh, then attach the resulting .mcpb to a new GitHub Release of the megaphone-tokyo/kioku repo. End users will then download it via Option A.
The traditional install paths in step 10 still work โ MCPB is purely an additional delivery channel for Desktop-first users.
Persistence & when to re-install
Once installed, the .mcpb persists through reboots and Desktop restarts. Claude Desktop auto-spawns the server when a new conversation opens โ you don't need to relaunch anything manually.
Re-install only in these cases:
| Trigger | Action |
|---|---|
| Moved your Obsidian Vault directory | Re-run the install (the dialog will re-ask for Vault directory) OR edit ~/Library/Application Support/Claude/claude_desktop_config.json manually |
New .mcpb version released | Download the new .mcpb and drag-install; Desktop replaces the existing extension in place |
| Uninstalled via Settings โ Connectors by accident | Drag the same .mcpb back in |
Unlike ยง 10, MCPB is self-contained โ moving this source repo, switching Node versions, or updating @modelcontextprotocol/sdk do NOT affect an already-installed .mcpb (the bundle ships its own dependencies and launches via Desktop's built-in Node runtime).
โ ๏ธ After installing or updating a
.mcpb, fully quit Claude Desktop (โQ, not just close the window) and relaunch. Otherwise the previously-spawned MCP server process keeps serving cached code in memory โ your new tool definitions will appear, but behavioral changes inside the server (bug fixes, validation updates, etc.) won't take effect until the process is recreated.
Tips โ using kioku on Claude Desktop
Unlike Claude Code (which auto-logs every session via the session-logger.mjs hook), Claude Desktop has no hook system โ your conversations are NOT automatically captured into the Vault. You must explicitly ask Claude to save each thing you want to remember.
Phrases that trigger saves (Claude picks the right tool from the tool descriptions):
| You say | Tool invoked | Destination |
|---|---|---|
| "save this to my wiki" / "remember this" / "ใกใขใใฆ" | kioku_write_note | session-logs/ โ structured into wiki/ by the next auto-ingest cycle |
| "create this wiki page now" / "immediately reflect this" / "ใใ Wiki ใซไฝใฃใฆ" | kioku_write_wiki | wiki/ directly (immediate, template applied, best-effort wikilink integrity) |
Practical habit: at the end of a meaningful conversation segment, ask Claude something like "ไปใฎ่ฉฑใใพใจใใฆใกใขใใฆใใใฆ" or "ใใฎ่จญ่จๅคๆญใ่จ้ฒใใฆ". Without this nudge, your Desktop conversation stays only in Claude's chat history โ not in your Obsidian Vault.
If you also use Claude Code, its conversations are captured automatically without any manual request (via the hook system in step 4 above). The two clients write to the same Vault โ your "second brain" accumulates knowledge from both.
Directory Structure
kioku/
โโโ README.md โ This file
โโโ context/ โ Current implementation (INDEX + per-feature docs)
โโโ handoff/ โ Handoff notes for next session
โโโ plan/
โ โโโ user/ โ User's design instructions
โ โโโ claude/ โ Claude's implementation specs
โโโ hooks/
โ โโโ session-logger.mjs โ Hook entry point (UserPromptSubmit/Stop/PostToolUse/SessionEnd)
โ โโโ wiki-context-injector.mjs โ SessionStart: inject wiki/index.md into system prompt
โโโ skills/
โ โโโ wiki-ingest-all/SKILL.md โ Bulk project-to-Wiki import slash command
โ โโโ wiki-ingest/SKILL.md โ Targeted scan slash command
โโโ templates/
โ โโโ vault/ โ Vault root files (CLAUDE.md, .gitignore)
โ โโโ notes/ โ Note templates (concept, project, decision, source-summary)
โ โโโ wiki/ โ Initial wiki files (index.md, log.md)
โ โโโ launchd/*.plist.template โ macOS LaunchAgent templates
โโโ scripts/
โ โโโ setup-vault.sh โ Vault initialization (idempotent)
โ โโโ install-hooks.sh โ Hook config snippet output / --apply for auto-merge
โ โโโ auto-ingest.sh โ Scheduled: ingest unprocessed logs into wiki
โ โโโ auto-lint.sh โ Scheduled: wiki health report + secret scanning
โ โโโ install-cron.sh โ Output cron entries to stdout
โ โโโ install-schedule.sh โ OS-aware dispatcher (macOS โ LaunchAgent / Linux โ cron)
โ โโโ install-launchagents.sh โ macOS LaunchAgent installer
โ โโโ setup-qmd.sh โ qmd collection registration + initial indexing
โ โโโ install-qmd-daemon.sh โ qmd MCP HTTP server as launchd daemon
โ โโโ install-skills.sh โ Symlink wiki-ingest skills to ~/.claude/skills/
โ โโโ scan-secrets.sh โ Secret leak detection in session-logs/
โโโ tests/ โ node --test and bash smoke tests
Environment Variables
| Variable | Default | Purpose |
|---|---|---|
OBSIDIAN_VAULT | none (required) | Vault root. auto-ingest/lint fall back to ${HOME}/kioku-vault/main |
KIOKU_DRY_RUN | 0 | 1 to skip claude -p calls (path verification only) |
KIOKU_NO_LOG | unset | 1 to suppress session-logger.mjs (prevents recursive logging from cron subprocesses) |
KIOKU_DEBUG | unset | 1 to emit debug info to stderr and session-logs/.claude-brain/errors.log |
KIOKU_INGEST_LOG | $HOME/kioku-ingest.log | Ingest log output path (referenced by auto-lint self-diagnostics) |
Node Version Manager PATH Setup
Scheduled scripts (auto-ingest.sh, auto-lint.sh) run from cron / LaunchAgent and don't inherit your interactive shell's PATH. They add Volta (~/.volta/bin) and mise (~/.local/share/mise/shims) to PATH. If you use nvm / fnm / asdf or another version manager, edit the export PATH=... line at the top of each script:
# nvm example
export PATH="${HOME}/.nvm/versions/node/v22.0.0/bin:${PATH}"
# fnm example
export PATH="${HOME}/.local/share/fnm/aliases/default/bin:${PATH}"
Design Notes
- Session logs contain secrets: Prompts and tool output may include API keys, tokens, or PII.
session-logger.mjsapplies regex masking before writing - Write boundary: Hooks only write to
$OBSIDIAN_VAULT/session-logs/. They never touchraw-sources/,wiki/, ortemplates/ - session-logs never reach Git: Excluded by
.gitignore, minimizing the risk of accidental pushes to GitHub - No network access: Hook scripts (
session-logger.mjs) do not importhttp/https/net/dgram. Git sync is handled by shell one-liners in the Hook config - Idempotent:
setup-vault.sh/install-hooks.shcan be run multiple times without destroying existing files - No git init:
setup-vault.shdoes not initialize a Git repo or add remotes. GitHub authentication is the user's responsibility
Multi-Machine Setup
KIOKU is designed to share a single Wiki across multiple machines via Git sync. The author runs a two-Mac setup: a MacBook (primary dev machine) and a Mac mini (for Claude Code bypass permission mode).
Key points for multi-machine operation:
session-logs/stays local per machine (excluded by.gitignore). Each machine's session logs are independent and never pushed to Gitwiki/is Git-synced. Ingest results from any machine accumulate in the same Wiki- Stagger Ingest/Lint execution times across machines to avoid git push conflicts
- SessionEnd Hook auto commit/push is enabled on all machines, but normal coding sessions only write to
session-logs/โ git operations only trigger whenwiki/is directly modified
Reference: author's two-Mac configuration
| MacBook (primary) | Mac mini (bypass) | |
|---|---|---|
| Secrets | Yes | No |
session-logs/ | Local only | Local only |
wiki/ | Git-synced | Git-synced |
| Ingest schedule | 7:00 / 13:00 / 19:00 | 7:30 / 13:30 / 19:30 |
| Lint schedule | 1st of month 8:00 | 2nd of month 8:00 |
| Scheduler | LaunchAgent | LaunchAgent |
If you're running on a single machine, you can ignore this section entirely. The Quick Start steps are all you need.
Security
KIOKU is a Hook system that accesses all Claude Code session I/O. See SECURITY.md for the full security design.
Defense Layers
| Layer | Description |
|---|---|
| Input validation | OBSIDIAN_VAULT path checked for shell metacharacters and JSON/XML control characters |
| Masking | API keys (Anthropic / OpenAI / GitHub / AWS / Slack / Vercel / npm / Stripe / Supabase / Firebase / Azure), Bearer/Basic auth, URL credentials, PEM private keys replaced with *** |
| Permissions | session-logs/ created with 0o700, log files with 0o600. Hook scripts set to chmod 755 |
| .gitignore guard | Verifies .gitignore contains session-logs/ before every git commit |
| Recursion prevention | KIOKU_NO_LOG=1 + cwd-in-vault check (double guard) prevents recursive logging from subprocesses |
| LLM permission restriction | auto-ingest / auto-lint run claude -p with --allowedTools Write,Read,Edit (no Bash) |
| Periodic scanning | scan-secrets.sh scans session-logs/ monthly for known token patterns to detect masking failures |
Adding Token Patterns
When you start using a new cloud service, add its token pattern to both hooks/session-logger.mjs (MASK_RULES) and scripts/scan-secrets.sh (PATTERNS).
Reporting Vulnerabilities
If you find a security issue, please report it via SECURITY.md โ not through public Issues.
Roadmap
Near-term
- Ingest quality tuning โ Review and adjust selection criteria in Vault CLAUDE.md after 2 weeks of real-world Ingest runs
- qmd multilingual search โ Verify semantic search accuracy for non-English content; swap embedding model if needed (e.g.,
multilingual-e5-small) - Safe auto-fix skill (
/wiki-fix-safe) โ Auto-fix trivial Lint issues (add missing cross-links, fill frontmatter gaps) with human approval - Git sync error visibility โ Log
git pushfailures tosession-logs/.claude-brain/git-sync.logand surface warnings in auto-ingest
Mid-term
- Multi-LLM support โ Replace
claude -pin auto-ingest/lint with a pluggable LLM backend (OpenAI API, local models via Ollama, etc.) - CI/CD โ GitHub Actions for automated testing on push
- Lint diff notifications โ Show only newly detected issues by diffing against the previous lint report
- Optimistic locking for index.json โ Prevent lost updates when multiple Claude Code sessions run in parallel
Long-term
- Morning Briefing โ Auto-generate a daily summary (yesterday's sessions, open decisions, new insights) as
wiki/daily/YYYY-MM-DD.md - Project-aware context injection โ Filter
wiki/index.mdby the current project (based oncwd) to stay within the 10,000-char limit - Stack recommendation skill (
/wiki-suggest-stack) โ Suggest tech stacks for new projects based on accumulated Wiki knowledge - Team Wiki โ Multi-person Wiki sharing (each member's session-logs stay local; only wiki/ is shared via Git)
Note: KIOKU currently requires Claude Code (Max plan). The Hook system (L0) and Wiki context injection are Claude Code-specific. The Ingest/Lint pipeline (L1/L2) can work with other LLM APIs by swapping the
claude -pcall โ this is planned as a future enhancement.
Changelog
2026-05-08 โ v0.7.5: Sprint 2 ๅฎ่ตฐ โ kioku_health 11 metrics (stretch 5 ่ฟฝๅ ) + auto-lint refactor
v0.7.5 marks Sprint 2 (่จๆถๅ่ณช dashboard) completion โ same-day micro cascade after v0.7.4 morning release. Where v0.7.4 shipped the core 6 metrics (orphan / stale / duplicate title / hot.md age / last ingest / unprocessed session-logs), v0.7.5 adds the stretch 5 metrics identified in the codex roadmap ยงใๆๆจๆกใ and refactors auto-lint to no longer overlap with kioku_health's machine-checkable surface.
kioku_health6 โ 11 metrics โ the 5 added metrics:broken_wikilinkโ[[link]]references that don't resolve to any page in wiki/ (= orphan link)source_sha256_duplicateโ pages sharing the samesource_sha256:frontmatter (= idempotent ingest broken or manual dup)pages_warm_zoneโ pages withupdated:between 7-30 days (= warm zone, between fresh and stale-30d)page_count_by_typeโ breakdown by page type (concept / project / decision / source-summary / log / index / meta / ใใฎไป)summaries_growth_rateโwiki/sources/*-summary.mdadditions in last 7d / 30d, expressed as count/day
auto-lintLINT_PROMPT 6 โ 4 ่ฆณ็น refactor โscripts/auto-lint.shnow explicitly excludes the 11kioku_healthmachine-checkable metrics from its observation list, leaving only LLM judgment-required semantic patterns:- ๆฆๅฟตใฎ็็พ (contradicting facts across pages, old claims overwritten by newer sources)
- ๆฆๅฟตใฎ splinter (same concept split across multiple pages, merge candidates)
- ๅฐ็จใใผใธใๅฟ
่ฆใช็นฐใ่ฟใ่จๅๆฆๅฟต (mentioned repeatedly in sources/summaries but no dedicated
wiki/concepts/page) - ๆๅณ็ใช็ธไบใชใณใฏๆฌ ่ฝ (semantic gap โ pages thematically related but not wikilinked; broken wikilink syntax handled by
kioku_health)
- Real-world dogfood (PM Vault, 155 pages) โ first run on 2026-05-08 surfaced
broken=21 / sha256_dup=2 / warm zone=99 / growth 30d=33, immediately actionable vianext_actionstext - Tests: 33 BLUE-HEALTH-* + MCP-HEALTH-* (incl. STRETCH-1..7) + 9 BLUE-DRIFT-* + 53 BLUE-LINT-PROMPT-* + 475+ existing Node + 22 Bash all green;
npm auditclean - Release v0.7.5 โ
kioku-wiki-0.7.5.mcpbattached
2026-05-08 โ v0.7.4: Sprint 2 ็ๆ โ kioku_health MCP tool + 6 memory health metrics
v0.7.4 launches Sprint 2 (่จๆถๅ่ณช dashboard) of the post-v0.7.1 reliability roadmap. Where Sprint 1 (v0.7.2 / v0.7.3) gave KIOKU diagnostic / drift / onboarding tools, Sprint 2 makes KIOKU's memory itself self-aware โ does the Wiki contain orphan pages? stale notes? duplicate titles? kioku_health answers all of these in 5 seconds.
kioku_health(11th MCP tool) โ Claude Desktop / Claude Code can now ask "is my KIOKU memory healthy?". Returns 6 core metrics as JSON:orphan/stale (>30d)/duplicate title/hot.md age/last ingest/unprocessed session-logs. Each metric pairs with a concretenext_actionssuggestion (e.g., "1 orphan pages โ Add wikilinks or move to wiki/.archive/"). Read-only โ never modifies wiki/.scripts/generate-health.mjsstandalone Node script โbash scripts/generate-health.mjswriteswiki/meta/health.md(markdown body + JSON appendix) so the same metrics surface in the Obsidian dashboard view (templates/wiki/meta/dashboard.basegains a "Wiki Health" view alongside the existing 9). Use it as a CI gate, a monthly cron, or just--dry-runfor an instant terminal report.- 6 metrics by design rationale:
orphanโ pages with no inbound wikilinks (= disconnected memory)stale (>30d)โ frontmatterupdated:over 30 days old (= dormant)duplicate titleโ pages sharing the same H1 (= splintered concept)hot.md ageโ time since last manualwiki/hot.mdupdate (= short-term memory freshness)last ingestโ newestsession-logs/*.mdmtime (= ingest pipeline alive?)unprocessed session-logsโingested: falsecount (= auto-ingest backlog)
- Sprint 2 stretch (planned for v0.7.5) โ
broken wikilink/source_sha256 duplicate/pages updated 7-30 days/Wiki page count by type/summaries growth ratewill land separately - Tests: 23 BLUE-HEALTH-* + MCP-HEALTH-* + 9 drift (11 tools verified) + 475+ existing Node + 22 Bash suites all green.
npm auditclean - Release v0.7.4 โ
kioku-wiki-0.7.4.mcpbattached
2026-05-07 โ v0.7.3: Sprint 1 ๅฎ่ตฐ marker โ Mode A/B/C onboarding + doctor mode detection
v0.7.3 marks the Sprint 1 reliability roadmap completion (4 PRs in 8 days). The single-feature delta from v0.7.2 is Mode A/B/C onboarding gradient in Quick Start + doctor install-mode detection.
- Mode A/B/C onboarding (#4) โ Quick Start now offers three install paths so users no longer forced into full install upfront:
- Mode A: MCP-only โ Claude Desktop / security-conscious / casual try-out (no hooks, no auto-ingest, no Git sync)
- Mode B: Read-only โ planned for v0.7.x (write/read tool separation), for enterprise / legal review / shared Vault viewers
- Mode C: Full memory โ existing full Manual Setup, renamed (zero regression)
doctormode detection โbash scripts/doctor.shnow emits[mode] Current install mode: ...derived from MCP / Hooks / cron / Git sync check results.--jsonoutput includessummary.install_mode+summary.install_mode_detailfor tooling. 8 new BLUE-DOCTOR-MODE-* tests (44 total)- Sprint 1 ๅฎ่ตฐ marker โ codex roadmap ยงใSprint 1: ไฟก้ ผๆงใจๅฐๅ ฅใ 4 PRs all landed: doctor MVP (#84) + drift test (#89) + URL test stabilization (#90) + this Mode A/B/C onboarding (#96)
- Tests: Node 475 + Bash all suites + 44 doctor + 9 drift all green,
npm auditclean - Release v0.7.3 โ
kioku-wiki-0.7.3.mcpbattached
2026-05-07 โ v0.7.2: Reliability Sprint โ kioku doctor + metadata drift test + URL test stabilization
v0.7.2 ships the entire Sprint 1 of the post-v0.7.1 reliability roadmap. Where v0.7.0 / v0.7.1 hardened the multi-agent boundary, v0.7.2 turns KIOKU's "what's broken?" surface from intuition into machine-checkable across three new diagnostic axes.
kioku doctor(PR A) โbash scripts/doctor.shruns 22 read-only checks across 7 categories (Environment / Runtime / CLI agents / Hook configs / MCP configs / Metadata parity / Dependencies). Human-readable by default,--jsonfor tooling. Each[fail]/[warn]is paired with a concreteNext action(e.g.bash scripts/install-mcp-client.sh --apply). 36 BLUE-DOCTOR-* tests with temp HOME / temp Vault isolation, macOS / Linux portable (avoids BSD vs GNUstatdivergence by design)- metadata drift test (PR B) โ
node --test tests/metadata-drift.test.mjsmachine-detects 3 drift categories: MCP tool registry (server.mjs โ manifest.json โ README โ context/14) / 5-place version parity (package.json + manifest.json + plugin.json + marketplace.json metadata + plugins[0]) / install command syntax (docs/install-guide-plugin.mdclaude plugin marketplace addsyntax + identifier matchesmarketplace.jsonname). Codifies the ยง44 install-syntax-drift incident (4/28) into a continuous regression guard. 9 BLUE-DRIFT-* tests - URL test stabilization (PR C) โ Daily
node --test ...no longer hangs minutes on URL/fetch tests.tests/run-quick-suite.sh(60s budget,KIOKU_SKIP_NETWORKISH_TESTS=1forced, hooks/ + mcp/ only) is the new contributor default;tests/run-full-suite.sh(FAIL_LOG aggregation, network included) is the release-time gate. 10 URL test files now share a{ timeout, skip }pattern with explicit fixture-server cleanup. Measured: quick suite 9.8s on Mac mini (target <60s) - Side-finding fixes (bundled) โ
mcp/package-lock.jsonversion field bumped 0.5.0 โ 0.7.2 (long-stale lock metadata, future drift test 6th place candidate).tests/post-release-sync.test.shPRS-S13 gains a linked-worktree skip guard ([[ -f "${REPO_ROOT}/.git" ]]detects pointer-file.gitand skips dynamic dry-run output match) - Tests: Node 475 + Bash 22 suites + 36 doctor + 9 drift + 27 post-release-sync all green,
npm auditclean - Release v0.7.2 โ
kioku-wiki-0.7.2.mcpbattached
2026-04-30 โ v0.7.1: Polish โ agent: frontmatter + 5 hardening + workflow codification
v0.7.1 polishes the multi-agent narrative landed in v0.7.0: every session log now carries its agent identity in the frontmatter, five quiet hardening fixes (lock TOCTOU, realpath fallback, exit-reason masking, transcript-path boundary, listener accumulation), and the workflow rules gain bidirectional-drift codification.
agent:frontmatter field (ยง41) โbuildFrontmatternow emitsagent: <claude|gemini|codex>immediately aftertype: session-log. Previously, Gemini and Codex session logs were indistinguishable by frontmatter alone (onlysession_idnamespace was independent). With v0.7.1, indexing and filtering across multi-agent vaults work with a single grep. Verified end-to-end on 2026-04-30 against fresh codex (019ddce8-...) and gemini (f8b1aeb3-...) sessions- 5 hardening fixes (ยง33-36, ยง38) in
hooks/session-logger-core.mjs+hooks/adapters/_common.mjs:- ยง33 INDEX-LOCK-TOCTOU-RACE โ lock acquisition now uses 2-stage defense: (a) PID alive check (
process.kill(pid, 0)) before stealing a stale-mtime lock, (b) post-acquire content re-verify with jitter retry to detect race-stolen locks - ยง34 BUILD-CONTEXT-REALPATH-FALLBACK โ
realpathfailure (EROFS / ENOENT / EACCES on dangling symlink) now falls back to literal path comparison instead of throwing.KIOKU_DEBUG=1warns to stderr; production stays silent - ยง35 EXIT-REASON-MASK-COVERAGE โ
sessionEnd.reasonnow flows throughapplyMasks()+yamlSafeValue()before being written to frontmatter. Defense-in-depth against future vendor schema drift where reason might become free-form - ยง36 TRANSCRIPT-PATH-VAULT-BOUNDARY โ new
assertTranscriptInRoot(agent, path)allowlists~/.{claude,gemini,codex}/{projects,chats,sessions}/, rejects vault-external paths and symlink escapes via realpath. All 3 adapters wire it before passingtranscript_pathto core - ยง38 COMMON-MJS-GLOBAL-LISTENER-ACCUMULATION โ
safeMainlistener registration is now gated by a module-scope flag, eliminatingMaxListenersExceededWarningin test harnesses that import multiple adapters
- ยง33 INDEX-LOCK-TOCTOU-RACE โ lock acquisition now uses 2-stage defense: (a) PID alive check (
- Install path hot fix (ยง44, applied during the v0.7.0 โ v0.7.1 window) โ
marketplace.jsonnamerenamedkioku-marketplaceโmegaphone-tokyoso the docs syntaxclaude plugin install kioku@megaphone-tokyoworks as documented. All 10 README +docs/install-guide-plugin.mdupdated to Claude Code v2.1.89 marketplace syntax (claude plugin marketplace add ...instead of legacyclaude marketplace add ...) - Codex per-turn commit doc (ยง37) โ
docs/install-guide-multi-agent.{md,ja.md}Codex section gains a "Note on per-turn commits" call-out (Hook port users only): SessionEnd absent โ Stop event git-sync emulation โ bounded commit count per session, with disable instructions - Two new code-style rules (ยง39 LEARN#13 / ยง40 LEARN#14) โ
.claude/rules/code-style.md: regex literal control-char escape mandate (U+2028/U+2029/U+200B/U+FEFF must use\uXXXX) and ESM entry gate pattern (isEntry()for adapter modules to avoid stdin-hang on test imports) - Workflow codification (parent-only) โ LEARN#10 reverse drift codified: PM mental-model drift can run either direction (phantom file paths or tasks already merged).
git log -10 origin/main --onelineis now a mandatory PM precheck before creating delegation handoffs, paired with the existingorigin/main..mainempty check (LEARN#12 Rule 2). Caught duplicate-delegation in real-time on 2026-04-30 - Verifier script graduation โ
scripts/verify-multi-agent-e2e.shStep 6 agent-field check graduates from informational to a fail signal (exit 1) now that ยง41 ships - Tests: Node 155/155 hook suites + 389 non-hook + Bash install-hooks all green,
npm auditclean - Release v0.7.1 โ
kioku-wiki-0.7.1.mcpbattached
2026-04-28 โ v0.7.0: Multi-agent complete โ Hook port for Gemini / Codex + automatic session log parity + Visualizer ฮฑ
v0.7.0 closes the narrative-implementation gap that v0.6.0 opened: where v0.6.0 made KIOKU discoverable across non-Claude agents (skill symlinks), v0.7.0 makes KIOKU actively work across them โ automatic session logging, hot-cache pipeline, and per-agent install scripts. Visualizer ฮฑ also ships its first user-visible MCP tool.
- Hook port for Gemini / Codex (Q2) โ
hooks/session-logger.mjs(591 lines, monolithic) refactored intohooks/session-logger-core.mjs(agent-agnostic core) +hooks/adapters/{claude,gemini,codex}.mjs(per-agent translators) +hooks/adapters/_common.mjs(safeMainexit-0 contract +escapeForSystemMessageXSS defense).scripts/install-hooks-{gemini,codex}.shgive one-command install per agent. Result: a Gemini or Codex session now produces session logs at$OBSIDIAN_VAULT/session-logs/byte-equivalent to Claude's, with masking applied through the same pipeline - Multi-agent MCP setup docs (Q1) โ
docs/install-guide-multi-agent.md(EN) +.ja.md(JA) document the per-agent MCP config (~/.codex/config.toml,~/.gemini/settings.json,~/.config/opencode/opencode.json) with verification commands andVerification status: Unverified in our environmentbanners on each agent section (LEARN#10 transparency, Q1 PR #54) - Self-recursion guard agent-aware (ยง43 fix) โ
buildContext({ agent })now narrows the cwd-in-vault no-op rule toagent === 'claude'only. Pre-fix, runningcd $OBSIDIAN_VAULT && codexsilently dropped session logs because the guard (originally for auto-ingest re-entrance) fired for all agents. Post-fix, Gemini and Codex log normally even when started from inside the vault. Caught and fixed during pre-release dogfood (PR #60) - Visualizer ฮฑ (V-2 + V-3/V-4) โ
kioku_generate_vizMCP tool generates a static HTML page (<vault>/wiki/<title>.html) with embedded snapshot JSON, sanitized viasafeJsonForScript(escapes</, U+2028/U+2029) + DOM-built rendering (zeroinnerHTML). The Timeline Player and Diff Viewer surfaces from V-1 lib (already in v0.6) become user-callable verify-multi-agent-e2e.shhelper โ Interactive 6-step verifier (bash scripts/verify-multi-agent-e2e.sh --agent=<gemini|codex>) walks through CLI install check โ hook apply โ user-driven session โ session-log inspection (frontmatter agent tag + masking spot check + Codex per-turn git-sync count). Ships in this release for users to confirm their setup beyond the.mcpbinstall- Manifest tools array reconciled (ยง32) โ
mcp/manifest.jsonnow lists all 10 MCP tools (was 8;kioku_ingest_documentandkioku_generate_vizwere missing since v0.5.0/v0.6.0).long_descriptionupdated to "ten tools". Catches via ่ฃฝไฝ Claude's LEARN#4 precheck during Q1 delivery - README branding fix โ Public READMEs (10 languages) had
claude-brain(parent monorepo internal codename) leaking through into project descriptions, command paths (tools/claude-brain/scripts/...), and vault example names. All references corrected toKIOKU/kioku-vault/ repo-root paths (kioku PR #30) - Pre-release dogfood verify โ Gemini (2026-04-24) and Codex (2026-04-27 + 28) verified end-to-end on RYU's Mac mini before tag publication. ยง43 caught and fixed in the same release window. Details:
handoff/post-release-v0-7-0.mdPre-release verification log - Deferred for v0.7.1+ โ V-1 hotfix (HIGH 4 + Medium 9 from V-1 review), ยง41 (
agent:frontmatter field), ยง42 (Gemini adapter output duplication), ยง34 (buildContextrealpath fallback),SECURITY.ja.mdremaining 3 sections โ all tracked inhandoff/open-issues.md - Tests: Node 136/136 hook suites + Bash all green,
npm auditclean - Release v0.7.0 โ
kioku-wiki-0.7.0.mcpbattached
2026-04-24 โ v0.6.0: Ecosystem expansion โ multi-agent + plugin marketplace + Bases dashboard + delta tracking + security hardening
v0.6.0 lands Phase C in one shot: distribution channels (Claude Code plugin + multi-agent skills), Obsidian-native dashboards, silent-regression-proof ingest, and security policy upgrades. Visualizer foundations are also land-ready for v0.7.
- Multi-agent cross-platform (C-1) โ
scripts/setup-multi-agent.shsymlinks KIOKU skills into Codex CLI / OpenCode / Gemini CLI. 19/19 Bash assertions (SMA-1..8) - Claude Code plugin marketplace (C-2) โ
claude plugin marketplace add megaphone-tokyo/kioku && claude plugin install kioku@megaphone-tokyo.docs/install-guide-plugin.mdcompares 3 install paths - Raw MD sha256 delta tracking (C-3) โ User-placed
raw-sources/<subdir>/*.mdfiles now participate in sha256-based delta detection. 82/82 auto-ingest assertions (new F23-F27) - Obsidian Bases dashboard (C-4) โ
templates/wiki/meta/dashboard.baseships 9 views tailored to KIOKU's wiki structure - Visualizer foundation (V-1, preparing v0.7) โ
mcp/lib/git-history.mjs+mcp/lib/wiki-snapshot.mjswith 14/14 Node assertions. No user-facing surface yet - Security policy upgrade (C-5a) โ
SECURITY.mdgains CVE Classification / Safe Harbor / Coordinated Disclosure Timeline / Out of Scope.SECURITY.ja.mdpartial i18n parity (4/7 sections) - Community channel pivot โ Dedicated Discord dropped, GitHub Discussions will be the canonical channel
- Organizational learnings โ LEARN#10 (PM handoff script verify mandatory) added to workflow rules
- Deferred for v0.7+ โ Visualizer HTML UI (V-2..V-5), LP ฮฒ narrative, GitHub Discussions enable, SECURITY.ja remaining 3 sections
- Tests: Node 264/264 + Bash 400+/400+ assertions green
- Release v0.6.0 โ
kioku-wiki-0.6.0.mcpbattached (~9 MB)
2026-04-23 โ v0.5.1: Hot cache + PostCompact hook + opt-in Stop prompt
- Hot cache pattern โ New
wiki/hot.md(<=500 words, hard cap 4000 chars) is auto-injected at SessionStart and re-injected after PostCompact (context compaction), so the LLM retains short-term working context across sessions and compactions. Inspired by the claude-obsidian UX pattern - PostCompact hook โ
install-hooks.shnow wires a 6th event (PostCompact) that re-injects hot.md only (index.md is already in context after compaction, so it is skipped to avoid token bloat) - Opt-in Stop prompt (
KIOKU_HOT_AUTO_PROMPT=1) โ When explicitly set, session end triggers an update suggestion for hot.md. Default OFF โ hot.md is Git-synced and has a stricter security boundary than session-logs, so auto-prompting requires explicit user consent - Security boundary maintained โ hot.md flows through
applyMasks()(API key / token pattern masking) before injection, is in the scan-secrets.sh walk target, rejects symlink escape viarealpath(vault-external paths rejected), and truncates at 4000 chars with a WARN log - Claude Code v2 hook schema alignment (4 hotfixes) โ Claude Code v2 uses different output schemas per event:
hookSpecificOutputis supported only forPreToolUse/UserPromptSubmit/PostToolUse;PostCompactandStopmust use top-levelsystemMessage. The legacy v1 flat{additionalContext}is silently discarded in v2. hotfixes 1-4 migrate all hook output to the correct per-event schema - Tests: 47 Node assertions (HOT-1..9d + HOT-V1/V2 + session-logger regression + injector H1-H5) + 488 Bash assertions (IH-PC1/2 + SS-H1 + cron-guard-parity CGP-2 + 15 existing suites), all green
- Release v0.5.1 โ
kioku-wiki-0.5.1.mcpbattached (9.2 MB)
2026-04-23 โ v0.5.0: Feature 2.4 โ PDF / MD / EPUB / DOCX unified ingest router
- Phase 1 โ
kioku_ingest_documentrouter: a unified MCP tool that dispatches by file extension (.pdf/.md/.epub/.docx) to the correct handler. Existingkioku_ingest_pdfbecomes a deprecation alias retained for the v0.5 โ v0.7 window; removal planned for v0.8 - Phase 2 โ EPUB ingestion: safe extraction via yauzl with 8-layer defense (zip-slip / symlink / cumulative size cap / entry count cap / NFKC filename / nested ZIP skip / XXE pre-scan / XHTML script sanitize). Spine-ordered chapters are converted to Markdown chunks (
readability-extract+turndown), stored at.cache/extracted/epub-<subdir>--<stem>-ch<NNN>.md; multi-chapter EPUBs also get an-index.md. LLM summaries flow through the auto-ingest cron asynchronously - Phase 3 โ DOCX ingestion (MVP): a
mammoth + yauzltwo-layer architecture (mammoth's internal jszip attack surface is pre-guarded by yauzl's 8-layer defense).word/document.xml/docProps/core.xmlgo through an XXE pre-scan (assertNoDoctype). Images (VULN-D004/D007) and OLE embedded content (VULN-D006) are deferred โ MVP extracts body text + headings only. Metadata is enclosed in a--- DOCX METADATA ---fence with an untrusted annotation to delimit prompt injection against downstream LLM summarization - Pre-release hotfix โ Fixed the argv regex in
scripts/extract-docx.mjs/scripts/extract-epub.mjsto be Unicode-aware (\p{L}\p{N}); the previous\w(ASCII only) silently skipped Japanese / Chinese filenames like่ซๆ.docx/ๆฅๆฌ่ช.epubin the auto-ingest cron path. EPUB was in this latent regression since v0.4.0 and is fixed retroactively (LEARN#6 cross-boundary drift). Additionally,meta/base/linkwere added tohtml-sanitize'sDANGEROUS_TAGSas defense-in-depth for future EPUB consumer paths - Known issue (non-applicable) โ
fast-xml-parserCVE-2026-41650 (GHSA-gh4j-gqv2-49f6, medium) targets the XMLBuilder API (XML writer). This codebase uses only XMLParser (XML reader) inmcp/lib/xml-safe.mjs, so the vulnerability is not exploitable. The dependency will be upgraded tofast-xml-parser@^5.7.0in v0.5.1 to clear the dependabot alert - Tests: 158 Bash assertions + full Node suite green (extract-docx 16 / extract-epub 7 / html-sanitize 10 / auto-ingest 70 / cron-guard-parity 25 / MCP layer 30).
npm auditreports 0 vulnerabilities on runtime dependencies; red-hacker + blue-hacker parallel/security-reviewreports 0 HIGH/CRITICAL findings - Release v0.5.0 โ
kioku-wiki-0.5.0.mcpbattached (9.2 MB)
2026-04-21 โ v0.4.0: Tier A (security + ops) + Tier B (cleanness) overhaul
- A#1 โ Upgraded
@mozilla/readability0.5 โ 0.6 (ReDoS GHSA-3p6v-hrg8-8qj7 mitigated; 144 production dependencies passnpm auditclean) - A#2 โ Added
git symbolic-ref -q HEADguard toauto-ingest.sh/auto-lint.sh/install-hooks.shSessionEnd, preventing runaway commits when the Vault is in a detached-HEAD state (5-day drift observed on one machine before the fix) - A#3 โ Refactored
withLock(shrunk hold time from minutes to seconds), removed theskipLockAPI entirely, and added orphan-PDF cleanup - B#1 โ Hook layer re-audit (
session-logger.mjs): fixed 3 MEDIUM findings (invisible-character bypass of masking, YAML injection in frontmatter,KIOKU_NO_LOGstrict-equality drift) - B#2 โ Formalized cron/setup guard parity as
tests/cron-guard-parity.test.sh(17 assertions) to enforce the Category-A / Category-B env-override conventions - B#3 โ
sync-to-app.shcross-machine race prevented bycheck_github_side_lock(ฮฑ guard, 120s default window, configurable viaKIOKU_SYNC_LOCK_MAX_AGE); regression locked in bytests/sync-to-app.test.sh(11 assertions) - B#8 โ README i18n parity: ยง10 MCP / ยง11 MCPB / Changelog sections added to all 8 non-en/ja READMEs (+1384 lines)
- Tests: 299 Node tests + 15 Bash suites / 415 assertions, all green
- Release v0.4.0 โ
.mcpbattached
2026-04-17 โ Phase N: MCPB bundle for Claude Desktop
- New
mcp/manifest.json(MCPB v0.4) andscripts/build-mcpb.shproducemcp/dist/kioku-wiki-<version>.mcpb(~3.2 MB) - Claude Desktop users can install the MCP server with a single drag-and-drop;
OBSIDIAN_VAULTis configured via the install dialog's directory picker (no Node toolchain required on the user's machine โ Desktop's bundled runtime is used) - Phase M's manual install path (
setup-mcp.sh+install-mcp-client.sh) is unchanged; MCPB is an additional delivery channel for Desktop-first users - See ยง 11 above for build / install steps
2026-04-17 โ Phase M: kioku-wiki MCP server
- Local stdio MCP server (
mcp/) exposing six tools โkioku_search,kioku_read,kioku_list,kioku_write_note,kioku_write_wiki,kioku_delete - Both Claude Desktop and Claude Code can now browse, search, and update the Wiki on demand without leaving the chat
- See ยง 10 above for setup
2026-04-16 โ Phase L: macOS LaunchAgent migration
- New
scripts/install-schedule.shdispatcher chooses macOS LaunchAgent or Linux cron automatically - Resolves the structural impossibility of cron loading the user's full PATH on macOS
License
This project is licensed under the MIT License. See LICENSE for details.
As noted in the "Important Notes" section above, this software is provided "as is" without warranty of any kind.
References
- Karpathy's LLM Wiki Gist โ The original concept this project implements
- Claude Code Hooks Reference โ Official Hook system documentation
- Obsidian โ The knowledge management app used as the Wiki viewer
- qmd โ Local search engine for Markdown (BM25 + vector search)
Author
Building things with code and AI. Freelance engineer, 10 years in. Frontend-focused, lately co-developing with Claude as my main workflow.
