The Problem
Personal knowledge management tools typically lock notes into proprietary formats or rigid folder hierarchies. AI agents can't navigate them without brittle prompt engineering or full-file context dumps, which breaks down as note collections grow. IWE addresses this by treating Markdown notes as a structured knowledge graph that both humans and AI agents can query and modify through a consistent interface.
What This Does
IWE is a Rust workspace with three crates. crates/liwe is the core library: it parses Markdown into a graph model (crates/liwe/src/graph/), handles operations like extract/inline/rename (crates/liwe/src/operations/), and manages the underlying file system. crates/iwe is the CLI binary (crates/iwe/src/main.rs) exposing commands like new, find, retrieve, squash, and export, each with dedicated modules and help text in crates/iwe/help/. crates/iwes is an LSP server (crates/iwes/src/router/server.rs) providing editor features: search, go-to-definition, rename refactoring, and code actions for extract/inline operations.
The knowledge graph uses inclusion links for hierarchy and reference links for cross-connections, enabling polyhierarchy—a note can have multiple parents without duplication. The CLI is designed for AI agents: structured commands return full context (parents, children, related notes) in one query, making it an external memory layer for tools like Claude or Codex.
How To Use It
Setup: Build from source with Cargo. The workspace root has Cargo.toml and a Cargo.lock; no system dependencies beyond Rust.
cargo build --release cargo install --path crates/iwe
Configuration: IWE uses a config file managed by the init command (crates/iwe/src/init.rs). The core library reads a .iwe directory in your notes root, with a config.toml for settings. The README documents iwe init to set up a new vault.
Running it: The CLI entry point is crates/iwe/src/main.rs. Typical usage:
iwe init /path/to/notes iwe new "Meeting Notes" iwe find "project" iwe retrieve "topic"
The LSP server runs via iwes for editor integration.
Real-World Use
A developer uses IWE as persistent memory for an AI coding assistant. After a design discussion, they run iwe new "Auth Refactor" and iwe inline to embed decisions into related notes. When the agent needs context, it calls iwe retrieve "auth" and gets the full subgraph—the note, its parents, and linked references—in a structured format. The agent can then use iwe extract to pull a section into a new note, keeping the knowledge graph current without manual file editing.
Code Health & Issues
Low - No CI for LSP crate: .github/workflows/rust.yml runs tests, but crates/iwes has 20+ test files while the core crate has 14—the LSP is well-tested. No structural red flags. Med - Single license: Both LICENSE-APACHE files are Apache-2.0. If you require MIT compatibility, that's a consideration. Low - Documentation is dense: docs/book.typ (Typst format, 3KB) is the main source; the docs/ folder has CLI references but no user guide in Markdown. The README links to external docs at iwe.md. Low - No version pinning in CI: rust.yml uses a floating toolchain; reproducible builds are not guaranteed.
Overall: clean structure, tests for every CLI command and LSP feature, and CI configured. No obvious security or correctness red flags.
The Bottom Line
IWE is a well-engineered tool for a specific need: structured, queryable Markdown knowledge graphs for AI-assisted workflows. The Rust implementation is fast and the test coverage is solid. It's best suited for developers who already work in Markdown and want to give AI agents reliable, structured access to their notes—less useful if you prefer a GUI or non-technical note-taking.