kioku
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Basarisiz
- process.env — Environment variable access in hooks/adapters/_common.mjs
- process.env — Environment variable access in hooks/adapters/claude.mjs
- process.env — Environment variable access in hooks/adapters/codex.mjs
- process.env — Environment variable access in hooks/adapters/gemini.mjs
- process.env — Environment variable access in hooks/auto-ingest-retry.mjs
- process.env — Environment variable access in hooks/session-logger-core.mjs
- exec() — Shell command execution in hooks/sync-vault.mjs
- process.env — Environment variable access in hooks/sync-vault.mjs
- process.env — Environment variable access in hooks/wiki-context-injector.mjs
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Memory for Claude Code — auto-accumulate sessions into an Obsidian Wiki
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 theclaude -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 [email protected]:<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-19 — v0.10.0: "Your auto-ingest never fails silently, and search learns from your own sessions" — Sprint 5 + 5.5 完走 (reliability + intelligence の 2 軸進化)
v0.10.0 ships Sprint 5 (axis A) + Sprint 5.5 (axis B) 全完走 — v0.9.0 (Sprint 4) で「使いたい時に使える体験」が 4 軸揃った上で、v0.10.0 は 基盤の信頼性と検索の知能を 2 軸 で底上げする。「自動取り込みが network 一時失敗で静かに止まらない」「検索 query が自分の過去 session から自動で学習して賢くなる」 — この 2 つを reliability + intelligence の bundle minor release として land。
KIOKU positioning に reliability (auto-ingest 自己回復) + intelligence (discoverQueries 自動学習) の 2 軸が加わる。Sprint 4 (v0.9.0) の 4 pillar narrative の上に、基盤を強くする 2 軸進化。
- Sprint 5 axis A — auto-ingest pipeline reliability ("取り込みが静かに失敗しない"):
hooks/auto-ingest-retry.mjs— auto-ingest 失敗を retry queue で 3 回 exponential backoff + persistent queue、次回起動時 resume- classify — 失敗を category 分類 (network / transient / permanent) して recovery 戦略を分岐
- manual review queue — 自動回復不能な item を user が後から確認できる queue へ退避
- credential masking — retry log に token / password が残らないよう
applyMasksSSOT で redact scripts/doctor.shcheck_auto_ingest_state— queue 残件 / 最終成功時刻 / 失敗 category を read-only diagnostic- LEARN#8b N=3 mandatory extract pattern 達成
- Sprint 5.5 axis B — discoverQueries 自動学習 ("検索が自分の会話から自動で賢くなる"):
mcp/lib/discoverqueries-learning.mjs—discoverQueriesに session-logs/ scan = 8th source (weight 2.8、既存 7 source 中最高) を additive 統合、過去 session から query を dynamic 学習- privacy contract 3 axis — (1) masking SSOT
applyMasksで sensitive content を pin (2).kioku-discoverqueries-opt-outで opt-out (3).kioku-discoverqueries-usage.json64KB FIFO rotate で usage log を bounded に scripts/doctor.shcheck_discoverqueries_state— 3 axis (learning 有効性 / opt-out / usage log) を read-only diagnostic- LEARN#8b N=4 reinforcement (mockSessionLogScan + readUsageLog)
- Hardened 設計契約 2 axis 通底 — credential masking SSOT (
applyMasks) を auto-ingest retry log と discoverQueries usage log の両方で再利用、秘密を共有しても漏れない契約を 2 軸横断で維持 - Tests — Sprint 5 (auto-ingest-retry .mjs/.sh + auto-ingest-diagnostic + doctor) + Sprint 5.5 (discoverqueries-learning + discoverqueries-privacy + discoverqueries-diagnostic) 全 BLUE-* green、Sprint 4 累計 regression なし
- subagent-driven N=29-34 cycle — Sprint 5 (N=29-31) + Sprint 5.5 (N=32-34)、axis A+B 各 PR A/B/C の N=3 cycle 簡略形 × 2
- Release v0.10.0 —
kioku-wiki-0.10.0.mcpbattached
2026-05-15 — v0.9.0: "Open your wiki in a browser, search with Claude, even from your phone" — Sprint 4 完走 (4 pillar: Shell + Search + Mobile + Sync polish)
v0.9.0 ships Sprint 4 全 phase 完走 — Sprint 3 (v0.8.0 Visualizer β) で「過去が見える」が揃った上で、Sprint 4 は 「使いたい時に使える体験」を 4 軸 で揃える。「Obsidian を起動せずブラウザで Wiki を一望」「ブラウザで keyword 検索 → Claude で深掘り」「スマホで Wiki を読める」「Git push が静かに失敗しない」 — この 4 つの疑問に 3 日間 (5/13–5/15) で 4 phase land。
KIOKU positioning が "Hardened LLM Wiki for Professionals + Claude-augmented Search + Mobile responsive + Sync polished" の 4 pillar narrative に確立。Path C+β progress 70% → 100% 達成、Sprint 4 全 cycle 完走 marker。
- Phase 1 (5/13) — Web UI shell + Bases dashboard renderer ("Obsidian なしで Wiki を一望"):
kioku_generate_viz mode=shellで 8-tab self-contained HTML を出力 ([Dashboard] [Overview] [Timeline] [Diff] [Lineage] [Search] [Navigation] [Wikilink])- Bases dashboard renderer —
wiki/meta/*.baseを Node stdlib のみで parse、Obsidian Bases plugin の view を Obsidian なしで再現 (Hot Cache / Active Projects / Concepts / Decisions など) - Path C+β 設計境界: editor は作らない (Monaco / CodeMirror 全部 forbidden keyword)、新規ページ作成 UI なし、外部 CDN / fetch / WebSocket 0、Canvas alternative 外。Wiki を書くツールは Obsidian / VS Code に任せ、KIOKU は Markdown 解析プラットフォーム に徹する分業
- 8 タブの placeholder で「Phase 2 で実装予定」label — 後から追加する shape を最初に固定して、ユーザーの URL
#tab=...を将来 stable に
- Phase 2 (5/14) — Claude-augmented Search ("ブラウザで keyword → Claude で深掘り"):
kioku_searchにintentparam +discoverQueries3→7 source 拡張 (LLM が「何を探しているか」を伝えて snippet 精度向上)- shell Search tab UI — Tier 1 offline filter (precomputed JSON inline、HTTP サーバ不要、CSRF / port 衝突 / CORS 攻撃面 全 0)
- Tier 2 deep-link "Claude で深掘り検索" — Tier 1 で足りない時 1 click で Claude session 起動、Claude が KIOKU MCP tool を叩いて深掘り回答
- Visualizer β URL fragment
#q=...→ graph node highlight 連動 (shell Search tab から "view in graph" deep-link) - Option C 採用 meeting (6 role) で「localhost HTTP サーバ立てない」を意図的決定 — Hardened LLM Wiki positioning と整合、攻撃面追加なし
- Phase 3 (5/14 夜) — Mobile responsive ("スマホで Wiki を読みたい"):
- shell + viz responsive CSS + hamburger menu + tap target 44pt+ (iOS Safari + Android Chrome real device verified)
- Tier 2 Mobile deep-link —
claude://URI scheme + 1.5s timeout +claude.aiweb fallback (Claude モバイルアプリ未 install でも graceful degrade) - iOS auto-zoom 防止 16px font-size + virtual keyboard scroll 対応
- Mobile simplified view (
renderMobileFallbacktextContent only) + 300KB performance budget guard — 大きな graph は scroll listview に degrade - CSP
navigate-topolicy でclaude://URI scheme 許可、他 URI scheme は blocked
- Phase 4 (5/15) — Sync polish ("Git push が静かに失敗しない"):
sync-vault.mjsGit push retry queue — network 一時失敗を 3 回 exponential backoff + persistent queue で次回起動時 resumeclassifyGitError— push failure を 5 category 分類 (network / auth / conflict / quota / unknown)、user-facing message + recovery hintmaskCredentials— error message から token / password / SSH key path を redact、log を共有しても秘密が漏れないdoctor.shsync state diagnostic (check_sync_state) —git status+git log @{u}..を read-only audit、retry queue 残件を visualize- 44 件新規 BLUE-* test (Phase 4 累計、retry / classify / mask / doctor diagnostic + sync-diagnostic.test.sh)
- Sprint 3 + Sprint 4 全 phase 累積 stats — Sprint 3 (4 phase) + Sprint 4 (4 phase × 15 sub-PR) = 8 phase / ~19 sub-PR を 4 月後半~5 月中旬の 3 週間 で land、Path C+β 70% → 100% completion
- Hardened 設計契約 4 phase 通底 — offline-first / textContent only / 外部依存ゼロ / 攻撃面追加ゼロ、を 4 phase ずっと崩さない (Phase 2 Search の Option C / Phase 3 Mobile の textContent only / Phase 4 Sync の credential masking で連続して効いた)
- subagent-driven N=28 of 28 cycle — Sprint 4 全 cycle で subagent-driven development pattern (LEARN#7 中規模 feature の 5 層 formula) を 4 phase × 4 cycle 連続適用、累計 N=28
- Release v0.9.0 —
kioku-wiki-0.9.0.mcpbattached
2026-05-13 — v0.8.0: "Open KIOKU and see what your memory looks like" — HTML Visualizer β (Sprint 3 完走)
v0.8.0 ships Sprint 3 (価値の可視化) completion — Sprint 1 (信頼性) と Sprint 2 (記憶品質) で 「自分の KIOKU は動いてる? Wiki は腐ってない?」 に答える土台ができた上で、Sprint 3 は 「自分の記憶がどう育っているか」 を 5 秒で見せる HTML Visualizer β を提供する。Obsidian なしで開ける self-contained HTML として、kioku_generate_viz MCP tool が 4 view (Overview / Timeline / Diff / Lineage) を 1 ファイルに包む。
This is the first release where KIOKU can show its value without Obsidian — drag-and-drop the generated HTML into any browser and see your second brain breathe.
- Overview tab (Phase 1 + 2) — Open KIOKU and see 4 layers at a glance:
- Vault overview — pages total, summaries growth (7d/30d), page type distribution
- Health focus — broken wikilinks (cluster view with merge candidates) / source sha256 duplicates / warm zone (7-30 days, fresh→warm→stale gradient)
- Graph preview — hot pages by inbound degree / active projects / recent decisions
- Action queue — 3-5 actionable items with P0/P1/P2 priority + concrete
next_action
- Status banner + 5 visualizations (Phase 2) — All pure CSS + DOM, no external chart library:
- bar chart for page type distribution
- sparkline for summaries growth rate (7d/30d)
- warm zone gradient (fresh/warm/stale 3-segment bar)
- broken wikilink cluster (target で grouped, merge candidate view)
- source_sha256 duplicate cluster (same-source 重複 page の merge surface)
- Lineage tab (Phase 3) — KIOKU's distinctive view: raw-sources → summaries → wiki pages の 3 layer lineage graph with 5 edge types (sha256 / derived_from / filename / wikilink / time proximity). 300-node cap, best-effort hint, 1-2 hop subgraph helper. Real Vault dogfood: 184 nodes / 846 edges in 68ms.
- Quality notes drawer (Phase 4) —
wiki/lint-report.md(auto-lint output) を 5 枚目の Overview card として表示。Phase 2 で 2 重 negative assert していた契約を Phase 4 で flip (negative → positive) — auto-lint 4 観点 (concept contradiction / concept splinter / dedicated page candidate / semantic wikilink gap) が drawer に並ぶ。kioku_healthの 11 machine-checkable metrics と auto-lint の LLM judgment が non-overlapping surface で共存する。 - §46 N=3 mandatory refactor —
mcp/lib/wiki-walker.mjs抽出、3 caller (health-metrics / visualizer-data / lineage-graph) をwalkPages()共通 entry point に統一。LEARN#8b framework の好例。 - Tests: 38 Phase 4 (visualizer-data 24 + visualizer 10 + screenshot 4) + 45 Phase 3 (wiki-walker 9 + lineage-graph 7+補強 + visualizer-data 15 + mcp/visualizer 9) + 全 Node + Bash regression 全 pass。CI screenshot regression (
tests/mcp/tools-visualizer-screenshot.test.mjs) で empty / small Vault fixture を deterministic に走らせる。 - Real-world dogfood (PM Vault, 162 pages) — Overview tab で broken=23 / sha256_dup=2 / warm=99、Lineage tab で 184 nodes / 846 edges、auto-lint drawer で 4 categories surface。HTML self-contained 61.5KB (external script/link/fetch 全 0)
- Release v0.8.0 —
kioku-wiki-0.8.0.mcpbattached
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.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi