Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

napkin

🧻 Knowledge system for agents. Local-first, file-based, progressively disclosed.

Every great idea started on a napkin.

npm install -g napkin-ai

Quick Start

# Initialize a vault napkin init --template coding # See what's in it napkin overview # Search for something napkin search "authentication" # Read a file napkin read "Architecture" # Write napkin create "Decision" --template Decision napkin append "Decision" "We chose Postgres." napkin daily append "- [ ] Review PR"

SDK

napkin is also a library. No CLI, no stdout - just data:

import { Napkin } from "napkin-ai"; // Always works - creates bare vault if needed const n = new Napkin("/path/to/project"); // Progressive disclosure const overview = n.overview(); const results = n.search("authentication"); const file = n.read("Architecture"); // Write n.create({ name: "New Note", content: "# Hello" }); n.append("New Note", "\nMore content"); // Daily notes n.dailyEnsure(); n.dailyAppend("- Met with team"); // Everything else n.tags(); n.tasks({ todo: true }); n.linksBack("Architecture"); n.outline("Architecture"); n.properties(); n.bookmarks(); n.config();

Scaffold with a template:

Napkin.scaffold("/path/to/project", { template: "coding" }); Napkin.vaultTemplates(); // list available templates

All SDK methods return typed data and throw errors on failure. No console.log, no process.exit.


Progressive Disclosure

napkin is designed as a memory system for agents. Instead of dumping the full vault into context, it reveals information gradually:

LevelCommandTokensWhat it does
0NAPKIN.md~200Project context note
1napkin overview~1-2kL0 + vault map with TF-IDF keywords
2napkin search <query>~2-5kRanked results with snippets
3napkin read <file>~5-20kFull file content

Benchmarks

napkin includes agentic retrieval benchmarks in bench/. The headline result is LongMemEval (ICLR 2025), which tests long-term conversational memory across 500 questions.

DatasetSessionspi + napkinBest prior systemGPT-4o full context
Oracle1-692.0%92.4%92.4%
S~4091.0%86%64%
M~50083.0%72%n/a

Zero preprocessing. No embeddings, no graphs, no summaries. Just BM25 search on markdown files.

See bench/README.md for details and usage.


Vault Structure

.napkin/ holds config. Content lives in the project directory alongside .obsidian/:

my-project/
  .napkin/                  # napkin config
    config.json             # Unified config (syncs to .obsidian/)
  .obsidian/                # Obsidian config (auto-generated)
  NAPKIN.md                 # Context note (Level 0)
  decisions/                # Template-defined directories
  architecture/
  Templates/                # Note templates
  src/                      # Your project (not in vault)

Templates

Scaffold a vault with a domain-specific structure:

napkin init --template coding # decisions/, architecture/, guides/, changelog/ napkin init --template company # people/, projects/, runbooks/, infrastructure/ napkin init --template product # features/, roadmap/, research/, specs/, releases/ napkin init --template personal # people/, projects/, areas/, references/ napkin init --template research # papers/, concepts/, questions/, experiments/

Each template includes directory structure, _about.md files, Obsidian note templates, and a NAPKIN.md skeleton.


For Agents

Every command supports --json for structured output and -q for raw output:

napkin overview --json # Structured vault map napkin search "auth" --json # Ranked results as JSON napkin read "Note" -q # Raw markdown, nothing else

CLI Reference

Global Flags

FlagDescription
--jsonOutput as JSON
-q, --quietSuppress output
--vault <path>Vault path (default: auto-detect from cwd)
--copyCopy output to clipboard

Core

napkin vault # Vault info napkin overview # Vault map with keywords napkin read <file> # Read file contents napkin create "Note" $'# Hello\nFirst note.' # Create with content napkin append "Note" $'\n## Update\nNew info.' # Append to file napkin prepend "Note" $'---\ntags: [new]\n---' # Prepend frontmatter napkin move "Note" Archive # Move to folder napkin rename "Note" "Renamed" # Rename file napkin delete "Note" # Move to .trash napkin search "meeting" # Ranked search with snippets napkin search "TODO" --no-snippets # Files only echo "piped content" | napkin append "Note" # Stdin support

Files & Folders - napkin file

napkin file info <name> # File info (path, size, dates) napkin file list # List all files napkin file list --ext md # Filter by extension napkin file list --folder Projects # Filter by folder napkin file folder <path> # Folder info napkin file folders # List all folders napkin file outline "note" # Heading tree napkin file wordcount "note" # Word + character count

Daily Notes - napkin daily

napkin daily today # Create today's daily note napkin daily path # Print daily note path napkin daily read # Print daily note contents napkin daily append "- [ ] Buy groceries" napkin daily prepend "## Morning"

Tags - napkin tag

napkin tag list # List all tags napkin tag list --counts # With occurrence counts napkin tag list --sort count # Sort by frequency napkin tag info --name "project" # Tag info napkin tag aliases # List all aliases

Properties - napkin property

napkin property list # List all properties napkin property list --file "note" # Properties for a file napkin property read --file "note" --name title napkin property set --file "note" --name status --value done napkin property remove --file "note" --name status

Tasks - napkin task

napkin task list # List all tasks napkin task list --todo # Incomplete only napkin task list --done # Completed only napkin task list --daily # Today's daily note tasks napkin task show --file "note" --line 3 --toggle

Links - napkin link

napkin link out --file "note" # Outgoing links napkin link back --file "note" # Backlinks napkin link unresolved # Broken links napkin link orphans # No incoming links napkin link deadends # No outgoing links

Bases - napkin base

napkin base list # List .base files napkin base views --file "projects" # List views napkin base query --file "projects" # Query default view napkin base query --file "projects" --view "Active" --format csv napkin base create --file "projects" --name "New Item"

Canvas - napkin canvas

napkin canvas list # List .canvas files napkin canvas read --file "Board" # Dump canvas napkin canvas nodes --file "Board" # List nodes napkin canvas create --file "Board" # Create empty canvas napkin canvas add-node --file "Board" --type text --text "# Hello" napkin canvas add-edge --file "Board" --from abc1 --to def2 napkin canvas remove-node --file "Board" --id abc1

Templates - napkin template

napkin template list # List note templates napkin template read --name "Daily Note" napkin template insert --file "note" --name "Template"

Bookmarks - napkin bookmark

napkin bookmark list # List bookmarks napkin bookmark add --file "note" # Bookmark a file

Config - napkin config

napkin config show # Show full config napkin config get --key search.limit # Get a value napkin config set --key search.limit --value 50

Graph - napkin graph

napkin graph # Interactive vault graph

Force-directed graph of vault notes and wikilinks. Click nodes to read content in a sidebar.


File Resolution

Files can be referenced two ways:

  • By name (wikilink-style): "Active Projects" - searches all .md files by basename
  • By path: "Projects/Active Projects.md" - exact path from vault root

Architecture

src/
  index.ts       # SDK exports: Napkin class + all types
  sdk.ts         # Napkin class wrapping core modules
  main.ts        # CLI entry (Commander) - thin wrapper
  core/          # Pure logic, returns data, no stdout
  commands/      # CLI wrappers: parse args → sdk → format + print
  utils/         # Shared utilities (files, frontmatter, markdown, etc.)

Core modules never call console.log, process.exit, or import output utilities. They return typed data and throw errors. The CLI commands are thin wrappers that instantiate the SDK, call methods, and format the output.


Pi Integration

For pi users, install pi-napkin — vault context injection, kb_search/kb_read tools, and automatic distillation.

pi install git:github.com/Michaelliv/pi-napkin

Development

bun install bun run dev -- vault --json bun test bun run check

License

MIT

关于 About

🧻 Knowledge system for agents. Local-first, file-based, progressively disclosed.

语言 Languages

TypeScript94.0%
JavaScript6.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
91
Total Commits
峰值: 37次/周
Less
More

核心贡献者 Contributors