Live data from Hacker News

IWE – CLI and LSP for managing Markdown knowledge bases (Rust)

github.com

1–2 of 2 posts

Re: IWE – CLI and LSP for managing Markdown knowledge bases (Rust)

#2
I built IWE (Interactive Writing Environment) to manage my markdown notes. It's a CLI tool and LSP server written in Rust.

The problem: I have thousands of markdown files with links between them. Link titles get out of sync when I rename files, I can't easily find what links to what, and batch operations (normalize formatting, export graphs) required custom scripts.

How it works:

IWE loads markdown files into an in-memory graph structure that understands document hierarchy (headers, lists, links). This enables operations that would be hard to do with plain text processing.

CLI: - iwe normalize - fix link titles, header levels, list numbering across all files - iwe stats - analyze your knowledge base (word counts, most connected docs, orphans) - iwe export dot - export link structure for Graphviz - iwe squash - combine linked docs into a single file (useful for generating PDFs)

LSP (works with VS Code, Neovim, Helix, Zed): - Go-to-definition for links - Backlinks via find-references - Autocomplete for linking notes - Hover preview - Rename with automatic link updates - Code actions: extract section to new file, inline content back, convert lists↔headers

Why another PKM tool?

Obsidian is great but I wanted to stay in my editor (Neovim). Existing LSPs like markdown-oxide cover basics but I needed batch operations and more refactoring capabilities. Building both CLI and LSP on a shared Rust core made sense.

Install: `brew tap iwe-org/iwe && brew install iwe`

or `cargo install iwe iwes`

Happy to answer questions about the architecture or implementation.