iwe is a free, open source note taking & knowledge management project written in Rust and released under Apache-2.0. It has 1,703 GitHub stars, 86 forks and 1 open issues, and was last pushed 35 hours ago. On this registry it ranks #37 of 50 tracked projects in Note Taking & Knowledge Management, with 5 head-to-head comparisons available.

What is iwe?

IWE is a local-first Rust tool that turns a directory of Markdown files into a knowledge graph, serving the same notes to your editor through a language server and to AI agents through a CLI and MCP server — it is built for anyone who wants database-style queries over plain notes they continue to own.

What it is

IWE lives in the Markdown and Language Server Protocol ecosystem. Notes remain .md files in a local directory, links between them form a graph, and the project exposes that graph through two interfaces over the same files. Opening the folder in an editor brings search, refactor, rename and autocomplete through real LSP integrations for VS Code, Neovim, Zed and Helix. Pointing an AI agent at the same folder gives it parent context and structural navigation, which is retrieval by structure rather than similarity guessing. There is no cloud, no database and no lock-in; versioning is done with git.

The specific problem it replaces is moving notes into an actual database in order to query them. A folder tree forces every note to have one home, while a note-taking database gives up plain files and version control in exchange for structure. IWE takes the opposite route: a link placed on its own line is an inclusion link meaning "this topic includes that subtopic", so the notes form a tree that can be browsed and refactored, and ordinary inline links create cross-references across topics. Because a note can have several parents, a "Meditation" note can belong to both "Health" and "Productivity" without duplicating the file. When a note is retrieved, IWE can include context from the notes above it in the hierarchy, and the underlying files stay readable, editable and pushable to a git remote.

Key capabilities

  • Two distinct link types: inclusion links, written as a link on its own line, build the hierarchical tree, while inline cross-references connect notes across unrelated topics.
  • Multiple parents, allowing one note to appear under several topics without copying the file.
  • Parent-context retrieval, so a queried note can be returned together with the notes above it in the hierarchy.
  • Editor integration through the Language Server Protocol, with documented setups for VS Code, Neovim, Zed and Helix, covering search, refactor, rename and autocomplete.
  • Structured access for AI agents through CLI tools and an MCP server, working alongside Claude, Codex, Gemini and any tool that speaks the Model Context Protocol.
  • OKF support: iwe init --okf scaffolds an Open Knowledge Format bundle, iwe schema validate checks conformance mechanically, and iwe find --filter '{type: …}' queries OKF YAML frontmatter directly.
  • Performance in Rust, documented as processing 20,000 files in under a second.

Who uses it and how

  • Individuals who keep notes as Markdown and want structural queries such as "all drafts under this subtree" or "every accepted decision in Q1" without a database behind them.
  • People who already version notes with git, since reading, editing and pushing the files is unchanged and nothing proprietary sits in between.
  • Users of AI coding agents: IWE Skills is a set of extensions for Claude Code and other agents, and any MCP client can navigate the same graph the user edits by hand.
  • Editor-centric developers, including Neovim and Helix users, for whom the language server and CLI are the primary surfaces.
  • Mac users who want a keyboard-driven application: iWe for Mac opens the same folder with Claude Code built in, distributed as a DMG from the releases page as an early version.

Getting started

IWE is published on crates.io as iwe, with installation and editor setup documented at iwe.md. Mac users can download the early DMG build from the iwe-org/iwe-mac releases page.

How it compares

The facts provide no list of paid products that IWE replaces, and no directly comparable tool is named. It sits alongside Claude, Codex, Gemini and the Model Context Protocol rather than substituting for them, and it plugs into VS Code, Neovim, Zed and Helix rather than competing with them. On that basis it stands alone in this registry.

When to use it — and when not to

A self-hoster operates nothing more than a local directory and a git remote, because IWE ships no cloud service and no database, but it also has no built-in AI, so an agent such as Claude or Codex must be supplied separately. Anyone who wants a hosted service that stores notes on their behalf, or needs AI features to work out of the box, should not pick it. The Mac application is explicitly an early version, which is worth weighing if a polished desktop client is the main requirement.

project readme (upstream, from github) — read inline

IWE - Memory system for you and your AI agents

Turn your thinking into queryable context

Crates.io Downloads License Build Documentation Discussions Twitter Reddit

Knowledge Graph

IWE turns a directory of markdown files into a knowledge graph — a connected structure you browse from your editor and your AI queries from the command line. Same files, same links, two interfaces. No cloud, no database, no lock-in. Version everything with git.

IWE is for people who want database-style queries on their notes — "all drafts under this subtree", "every accepted decision in Q1" — without moving them into an actual database. Write in Markdown, structure with links, give AI agents the tools to navigate your knowledge. IWE itself has no built-in AI — it works alongside Claude, Codex, Gemini, and any tool that speaks the Model Context Protocol.

What You Get

  • Plain markdown, full ownership. Your notes are .md files in a local directory. Read them, edit them, git push them. Nothing proprietary.
  • A graph, not a folder tree. Link notes together and the same note can belong to multiple topics without copying the file. (How linking works)
  • IDE features for your editor. Real LSP integration with VS Code, Neovim, Zed, and Helix — search, refactor, rename, autocomplete.
  • Structured access for AI agents. CLI tools and an MCP server give agents parent context and structural navigation over the same notes you edit by hand — retrieval by structure, not similarity guessing.
  • Memory for your coding agent. IWE Skills a set of extensions for Claude Code and other AI agents
  • A native Mac app. iWe for Mac opens the same folder as a keyboard-driven app with Claude Code built in — early version, DMG on the releases page.
  • Speaks OKF. An Open Knowledge Format bundle is markdown with YAML frontmatter — the format IWE already manages. iwe init --okf scaffolds a conformant bundle, iwe schema validate checks conformance mechanically, and iwe find --filter '{type: …}' queries OKF frontmatter directly.
  • Fast. Built in Rust, processes 20,000 files in under a second.

How It Works

IWE treats your notes as a connected structure. You organize them with two types of links:

  • Nesting — a link on its own line means "this topic includes that subtopic." Your notes form a tree you can browse and refactor. IWE calls these inclusion links.
  • Cross-references — regular inline links connect notes across topics, creating a web of relationships.
  • Multiple parents — the same note can live under several places at once. A "Meditation" note can belong to both "Health" and "Productivity" without duplicating the file.
  • Context from parents — when you retrieve a note, IWE can include context from the notes above it in the hierarchy.

This structure makes retrieval powerful — whether you're browsing in your editor or an agent is querying via CLI, ask for a topic and get its full context in a single call.

Working with AI

IWE gives AI agents structured access to your notes through two interfaces: a CLI for scripting and shell-based workflows, and an MCP server for native connection with AI tools. Both expose the same operations — search, retrieve, create, refactor — so you can choose whichever fits your setup.

IWE pairs search with structure: built-in fuzzy and full-text search finds the entry point, and the graph turns a hit into usable context — parent context, children, cross-references, link-safe refactoring. It also composes cleanly with any external tooling you already use (ripgrep, full-text, vector): whatever finds the note, IWE supplies the context around it.

What the Engine Checks

Agent writes are checked, not trusted:

  • Declared scope. A mutation carries expect guards stating how many documents and blocks it may touch. The whole update validates before anything is written; a mismatch aborts with the offending blocks named. Over MCP the guards are mandatory — an edit that won't declare its blast radius is refused.
  • Schemas. Frontmatter and document structure are validated against per-type document schemas — required fields, enums, ISO dates, required sections. A schema-violating MCP write is rejected with the violation named; from the CLI, iwe schema validate runs the same checks on demand.
  • Graph hygiene. Mutations surface warnings for what they disturbed — dangling links, orphan pages — and iwe stats similarity flags near-duplicates.

Integration Server (MCP)

IWE includes a server (iwec) that lets AI tools like Claude Desktop, Cursor, and Windsurf work directly with your notes using the Model Context Protocol. The server watches your files for changes, so edits you make in your editor are reflected immediately.

Command-Line Tools

The CLI lets you (and AI agents) work with your notes from the terminal or in scripts.

Example: preparing context for an AI conversation

iwe find --fuzzy auth

iwe retrieve --key authentication --expand-includes 2

iwe tree --key oauth

Core commands:

Command What it does
find Search with fuzzy and full-text ranking, plus filters over frontmatter and graph edges
retrieve Get a document with its linked context in one call
tree Show the hierarchy from any starting point
update Guarded edits: frontmatter changes and targeted block operations
schema Infer the store's schemas, or validate documents against them

The full set — new, extract, inline, rename, delete, squash, stats, normalize, export and more — is in the CLI Reference.

More information: Working with AI · CLI Reference · MCP Server

Editor Integration

IWE gives your editor IDE-like features for markdown notes. It works with VS Code, Neovim, Zed, Helix, and any editor that supports the Language Server Protocol (LSP).

  • Search — find notes by title or content
  • Navigate — go to definition, find references (backlinks)
  • Preview — hover over links to see content
  • Auto-complete — link suggestions as you type
  • Inlay hints — show parent references and link counts
  • Extract — pull sections into new notes
  • Inline — embed note content back into parent
  • Rename — rename files with automatic link updates
  • Format — normalize documents, update link titles
  • Transform — pipe text through external commands
  • Templates — create notes from templates (daily notes, etc.)
  • Outline conversion — switch between headers and lists

More information: Editor Features

iWe for Mac (early version)

A native macOS app for the same folder of markdown. SwiftUI and AppKit over the same Rust engine the CLI uses — no Electron, no web view. It shows the folder as a graph you move through with the keyboard (vim keys, optional), renders Mermaid diagrams natively, runs the same query language as iwe find in its search and sidebar, and hosts Claude Code as its assistant: agent edits stream into the document block by block, one undo step per run.

This is an early version: expect rough edges, and keep your workspace in git so any surprise is reversible. Requires macOS 15 or later. Download the DMG from the releases page; the app keeps itself up to date from there. Feedback and bug reports go to the alpha discussion. Your editor keeps working on the same files — the app is one more way in, not a replacement.

Quick Start

  1. Install the CLI and LSP server:

    Using Homebrew (macOS/Linux):

    brew install iwe-org/iwe/iwe
    

    Or using npm (macOS/Linux/Windows):

    npm install -g @iwe-org/iwe
    

    Or using Cargo:

    cargo install iwe iwes iwec
    

    Or from conda-forge (community-maintained — thanks, salim-b):

    conda install -c conda-forge iwe
    
  2. Initialize your workspace:

    cd ~/notes
    iwe init
    
  3. Pick your path:

    Set up your editorVS Code · Neovim · Helix · Zed

    Connect your AI agent — point it at the MCP server. iwec serves the directory it runs in, so set the working directory to your notes:

    {
      "mcpServers": {
        "iwe": {
          "command": "iwec",
          "cwd": "~/notes"
        }
      }
    }
    

    No install needed — npx fetches the server on demand:

    {
      "mcpServers": {
        "iwe": {
          "command": "npx",
          "args": ["-y", "@iwe-org/mcp"],
          "cwd": "~/notes"
        }
      }
    }
    

    Give Claude Code memory — install the plugin, then run /iwe:init in the repository you want remembered:

    /plugin marketplace add iwe-org/skills
    /plugin install iwe@iwe-org
    

    Or hand the setup to the agent — paste this into Claude Code or any agent with shell access:

    Set up IWE for my notes: install it (brew install iwe-org/iwe/iwe,
    npm install -g @iwe-org/iwe, or cargo install iwe iwes iwec), run `iwe init`
    in my notes directory, then add the `iwec` MCP server with its working
    directory set to that folder.
    Docs: https://iwe.md/docs/agentic/
    

Documentation

Get Involved

IWE is open source and community-driven. Join the discussions, report issues, or contribute to the documentation.

Community: Twitter/X · Reddit · Discussions

Editor plugins: VS Code · Neovim · Zed

Workspace templates: marketing-workspace — campaign memory for a marketing agent · dev-workspace — project memory for a coding agent. Both ship as conformant OKF v0.2 bundles, validated in CI on every commit.

Agentic skills: iwe-org/skills — the Claude Code memory plugin and the skills for knowledge graph management, usable from any agent runtime. Contributors welcome.

Building on IWE: projects already embed IWE — as an agent-memory backend, as the graph layer of an LLM wiki engine, in research tooling. The practical integration surfaces today are the CLI and the MCP server; the liwe library is published but not yet API-stable, so pin your version if you build against it. A declared, stable integration surface is on the roadmap — if you're building on IWE, tell us what you depend on, so we know what not to break.

License

Apache License 2.0

Frequently asked questions

Is iwe free to use?

iwe is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does iwe do?

Markdown knowledge graph — LSP for your editor, CLI + MCP memory for your AI agents

What is iwe written in?

iwe is primarily written in Rust. Its source is publicly available at https://github.com/iwe-org/iwe, and it has 1,703 GitHub stars.