3 ms·
IWE – CLI and LSP for managing Markdown knowledge bases (Rust)
- gimalay 9mo agoI 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.