personal-knowledge-manager

module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 24, 2026 License: Apache-2.0

README ΒΆ

Personal Knowledge Manager (pkm) πŸ“™

pkm is a terminal-first, encrypted personal knowledge manager inspired by the Zettelkasten method. It helps you build a second brain using small, interconnected notes β€” all stored securely on disk and fully controlled by you.

✨ Think: Obsidian-style linking + Git-friendly storage + strong encryption β€” without leaving the terminal.

Why pkm?

  • 🧠 Zettelkasten-inspired β€” notes are atomic, linkable, and discoverable
  • πŸ” Security first β€” notes are encrypted at rest (AES-256-GCM)
  • ⚑ Fast & local β€” no cloud, no latency, no vendor lock-in
  • πŸ—‚ Clean filesystem layout β€” works naturally with Git
  • πŸ§‘ Multi-user support β€” separate encrypted knowledge bases per user

Features πŸš€

Core
  • βœ… Create, edit, list, and delete notes
  • βœ… Link notes to build a knowledge graph
  • βœ… Tag notes for categorization
  • βœ… Full-text keyword search
  • βœ… Tag-based search
  • βœ… Note indexing for fast queries
Security
  • βœ… AES-256-GCM encryption on disk
  • βœ… PBKDF2 key derivation (100k iterations)
  • βœ… Per-user encryption keys
  • βœ… Zero plaintext storage
System
  • βœ… Multi-user support
  • βœ… Git-safe encrypted notes
  • ⏳ Multi-machine sync (planned)
  • ⏳ Terminal UI (TUI) (planned)

Installation βš™οΈ

Prebuilt binaries are available for major platforms on the GitHub Releases page.

# Example (Linux x86_64)
curl -LO https://github.com/<username>/personal-knowledge-manager/releases/latest/download/pkm-linux-amd64
chmod +x pkm-linux-amd64
mv pkm-linux-amd64 /usr/local/bin/pkm

Option 2: Build from source
Prerequisites
  • Go (latest stable)
  • task (Taskfile runner)
git clone https://github.com/<username>/personal-knowledge-manager.git
cd personal-knowledge-manager
task build

Add the binary to your PATH:

export PATH="$PATH:$(pwd)/build"

Option 3: Package Managers (Planned)
  • Homebrew
  • AUR
  • Scoop

Contributions welcome πŸ™‚

Quick Start ⚑

# 1. Create a user
pkm user init alice

# 2. Create a note
pkm --user alice note new "My first note"

# 3. List notes
pkm --user alice note list

# 4. Link notes
pkm --user alice link add <source-id> <target-id>

# 5. Search notes
pkm --user alice search keyword "zettelkasten"

Data Layout πŸ“

~/.pkm/
β”œβ”€β”€ .crypt               # Encrypted user keys (DO NOT commit)
β”œβ”€β”€ alice/
β”‚   β”œβ”€β”€ <note-id>.pkm    # Encrypted notes
β”‚   └── .index.pkm       # Encrypted search index
Git Usage

βœ” Safe to commit:

  • User directories (<username>/)
  • Encrypted .pkm files

❌ Never commit:

  • .crypt

Security Model πŸ”

  • AES-256-GCM authenticated encryption
  • PBKDF2 key derivation
  • Random salts and nonces per user
  • Passwords are never stored
  • No plaintext ever written to disk

Even if your repo is public, your notes remain private.

Philosophy 🧩

pkm is designed around these principles:

  • Small notes > big documents
  • Links create insight
  • Local-first > cloud-first
  • You own your data

Roadmap πŸ›£

  • πŸ”„ Multi-machine sync
  • πŸ–₯ Terminal UI (TUI)
  • πŸ“Š Graph visualization
  • πŸ”Œ Plugin system

Contributing 🀝

Contributions, ideas, and feedback are welcome. Open an issue or submit a PR β€” even small improvements matter.

Directories ΒΆ

Path Synopsis
cmd
pkm command
internal
cli

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL