IWE: a Markdown knowledge base you and your AI agent work on together
Memory serverOfficial IWE project
Created by IWE
Published in iwe-org/iwe. Publisher page
1,821 GitHub stars
What it is
Markdown knowledge graph — LSP for your editor, CLI + MCP memory for your AI agents
AutoGineer overview, from the brain’s own files
IWE provides a shared workspace for humans and AI agents to collaborate on project documentation, specs, and decision logs. By treating a folder of Markdown files as a structured knowledge graph, it allows agents to read, write, and organize information that persists across sessions. It functions as a memory server via the Model Context Protocol (MCP), enabling compatibility with various AI agents while remaining accessible to users through a native Mac app, CLI, or standard text editors like Neovim and VS Code.
How it works
Memory model: Not stated
AutoGineer overview, from the brain’s own files
IWE organizes notes as a collection of Markdown files within a project folder. It uses a CLI and an MCP server to expose these files to AI agents, allowing them to perform operations like searching, creating, and updating notes. The system supports features such as backlinks, link autocomplete, and graph visualization, ensuring that both the user and the AI agent interact with the same underlying document structure.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 4 |
| docs | docs | 70 |
| .githooks | folder | 1 |
| crates | folder | 381 |
| npm | folder | 15 |
Requirements
Runtimes: Rust
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
This brain runs code automatically: 1 script. Review .githooks/pre-commit before opening the folder in Claude Code. No step below turns a hook on for you.
.githooks/pre-commit:runs on git pre-commit
- Not scanned by AutoGineerAutoGineer could not scan everything it runs. https://www.npmjs.com/package/@iwe-org/mcp
Created by IWE. Published in iwe-org/iwe. Licence: Apache License 2.0.
Usage
AutoGineer overview, from the brain’s own files
- Connect an AI agent to your project notes using the MCP server.
- Use the CLI to search, create, or reorganize notes from the terminal.
- Write and browse notes in the native Mac app while an agent works alongside you.
- Integrate note navigation and autocomplete into your preferred text editor.
- Maintain a persistent record of project decisions and lessons learned that both you and your agent can access.
- “Explore my IWE notes and summarize what's here.”
- The agent reads the Markdown files in the designated folder and provides a summary of the project context, decisions, or documentation found.
- “Save the decision we just made about the database schema.”
- The agent creates or updates a Markdown note in the IWE folder containing the details of the decision for future reference.
Documentation by IWE
IWE: a Markdown knowledge base you and your AI agent work on together
Your notes are your agent’s memory. IWE is where you work on them together.
iwe.md · Download for Mac · Docs · Reddit
Image: Crates.io Image: License Image: Documentation
Too many AI conversations start from zero. You explain your project, your decisions, your reasoning — then find yourself explaining it all again next session. Your own notes live somewhere else, out of the agent's reach.
Or worse, the agent “remembers” something in its own internal memory, but you can't easily see what it saved or correct what it got wrong. And that memory doesn't travel with you to the other agents you work with.
IWE gives you and your AI agents one shared place to work, right inside your project: a folder of connected Markdown documents — specs, plans, decisions, and more. Keep your own ideas there, ask your agent to save what you learn together, and return to that context as your work grows. You can read, edit, and organize those documents yourself — and they stay yours.
<br/> <p align="center"> <a href="https://www.youtube.com/watch?v=D58bPkOvbxE"> <img src="https://iwe.md/images/video-thumbnail.jpg" alt="Watch the IWE intro video on YouTube" width="600"> </a> </p> <br/>
Choose how you work
There are four ways to work with IWE. Mix and match them to fit your day:
| Tool | How you'll use it |
|---|---|
| iWe for Mac | Write and browse in a native app, and connect your existing Claude/Codex agent. |
| Your own editor | Stay in Neovim, Helix, VS Code, or Zed, with note navigation, backlinks, and autocomplete. |
| CLI | Search and manage your notes from the terminal or scripts. |
| Claude/Codex | Let your agent read, write, and organize memory while you work through conversation. |
All four work with the same Markdown documents. Draft a spec in your editor, develop it with Claude/Codex, browse it in the iWe app, or search it from the CLI. Use any combination you like; each tool also works independently.
Bring your own AI. Neither the IWE CLI nor the iWe Mac app includes an AI model. Both work on their own as tools for your notes. When you want AI help, use your existing Claude/Codex agent — in terminal or directly in the Mac app.
<a href="https://iwe.md/?ref=readme-shot"><img src="https://iwe.md/images/app/GH-screen-1.1.png" alt="iWe for Mac showing project plans and connected documents" width="820"></a>
<p> <a href="https://iwe.md/?ref=readme-shot"><img src="https://iwe.md/images/app/GH-screen-2.png" alt="Bug tracking with charts" width="32%"></a> <a href="https://iwe.md/?ref=readme-shot"><img src="https://iwe.md/images/app/GH-screen-3.png" alt="Technical documents with code" width="32%"></a> <a href="https://iwe.md/?ref=readme-shot"><img src="https://iwe.md/images/app/GH-screen-4.png" alt="Release documents" width="32%"></a> </p>
Plans · Charts · Technical documents · Releases — click a screenshot to see the iWe app in action on iwe.md.
Why IWE
Shared context. Your agent can use the same notes you write for yourself. Notes link to each other, and one note can belong to several topics, so you can follow an idea wherever it connects.
Memory you can read. Decisions and lessons saved by your agent are ordinary notes you can browse, correct, or delete.
Your notes stay yours. Everything is Markdown in a folder on your machine. Back it up, sync it, or keep it in git. You don't need an IWE cloud account to keep your notes; connecting an AI agent involves that agent's own setup and account requirements.
iWe for Mac
If you'd like a dedicated space for your notes, use the native Mac app. Open a folder of notes and you get a fast, keyboard-friendly space to write and browse. You can also connect your existing Claude/Codex agent to work alongside you.
Works with your Claude/Codex agent. Connect the agent you already use, ask questions about your notes, and have it draft or reorganize them. Watch its edits appear in the document as it works.
Room to experiment. Each agent run is one undo step — try an idea, and roll it back if you don't like it.
Follow your ideas. Jump between related notes, search in a few keystrokes, and view Mermaid diagrams right in your documents. Your editor and other tools can keep working on the same files.
Open a notes folder and start with a note about something you're working on. Once Claude/Codex is connected, try asking it to summarize that note or help you develop an idea.
Your Own Editor
Keep writing in Neovim, Helix, VS Code, or Zed. IWE adds link autocomplete, backlinks, search, and safe renaming across your notes.
Follow the guide for your editor, open your notes folder, and try linking two notes with autocomplete. You can use IWE for your own writing without connecting an AI agent.
CLI
Prefer the terminal? Use IWE to search, create, and reorganize notes, or work it into your scripts. The CLI has no AI built in: these commands work on their own. Your existing Claude/Codex agent can use IWE's tools too.
Install with Homebrew, or choose another option from the installation guide:
brew install iwe-org/iwe/iweThen run these commands inside your notes folder:
iwe init
iwe find
iwe find --lexical "project decisions"iwe find lists your notes; --lexical searches their content. Explore more in the CLI reference and workflow examples.
Claude/Codex
You can use IWE entirely through your agent. Ask Claude/Codex to save decisions, look up past work, and organize what you've learned. The agent works with your notes through IWE, and you can open those files yourself whenever you want.
IWE isn't tied to one AI. The same notes work with Claude Code, Claude Desktop, Codex, Gemini, Cursor, and any tool that supports the Model Context Protocol.
Give Claude/Codex a memory — for Claude Code, install the plugin, then run /iwe:init in any project you want remembered. For Codex, follow the agent connection steps below.
/plugin marketplace add iwe-org/skills
/plugin install iwe@iwe-org
/iwe:initThen ask it to save a decision from your current work, and open the note it creates in your project.
Connect another agent — with Homebrew installed, install IWE:
brew install iwe-org/iwe/iweRun iwe init in your notes folder, then follow the agent connection guide to add the iwec MCP server with that folder as its working directory. For other installation options, see the installation guide.
Once connected, ask your agent: “Explore my IWE notes and summarize what's here.”
Or let the agent set itself up — paste this into any agent that can run commands:
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/Learn More
Getting Started — install and set up
Working with AI — connect your agents
Usage Guide — everyday workflows
Examples — how people use IWE
CLI Reference and MCP Server — for the technically curious
Ready-made workspaces: dev-workspace — project memory for a coding agent · marketing-workspace — campaign memory for a marketing agent.
Get Involved
Trying IWE with your own notes? Tell us what felt useful and where you got stuck. Questions, rough edges, and examples of how you use it are all welcome in Discussions.
IWE is open source. You can also report a bug or help improve the documentation.
Community: Twitter/X · Reddit · Discussions
Building on IWE? The CLI and MCP server are the supported ways to integrate today. Tell us what you depend on so we know what not to break.
License
docs/comparison.md
How IWE Compares
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.
That sentence is also the short answer to most questions on this page. The tools below are one of three things: a markdown language server (marksman, markdown-oxide), a note-taking application (Obsidian), or a CLI notebook (zk, telekasten.nvim). IWE overlaps all three because the graph is the product — the LSP server, the CLI, and the MCP server are three views of one in-memory model.
Which Tool Should You Use
A markdown language server for almost any editor, with the least setup — use marksman. It is the incumbent, it is small, and it does links, references, and diagnostics well.
Obsidian-style daily notes, block references, and tags without leaving your editor — use markdown-oxide. Natural-language dates are better there than in IWE today.
A GUI, mobile apps, a plugin ecosystem, canvas, and a web clipper — use Obsidian.
A Zettelkasten CLI with templates and an fzf browser — use zk.
Notes as a graph you can query, refactor, and hand to an AI agent — from the editor and the command line — use IWE.
If you are weighing IWE against one specific tool, skip to that section. If you want the argument against IWE, read Where IWE Is Weaker below; it is not a short list.
marksman vs markdown-oxide
If you only want a markdown language server and are choosing between the two established ones, the sections below give the details. In short:
| marksman | markdown-oxide | |
|---|---|---|
| Aimed at | Correct links, headings, and references in any editor | Obsidian's editing model inside a text editor |
| Link targets | Documents and headings | Documents, headings, and blocks ([[doc#^block]]) |
| Daily notes | None | :Today, :Daily next monday, relative prev / next |
| Diagnostics | Live wiki-link diagnostics | Unresolved-reference diagnostics |
| Editors | VS Code, Neovim, Vim, Emacs, Helix, Kakoune, Sublime Text, BBEdit, Zed | Neovim, VS Code, Zed, Helix, Kakoune |
| Implementation | F#/.NET | Rust |
Pick marksman for the widest editor support and the least setup, especially in Vim, Emacs, Sublime Text, or BBEdit. Pick markdown-oxide if you are coming from Obsidian and want daily notes, block references, and tags in your editor. Pick IWE if you also want to query the notes, restructure them, and let an AI agent work on them from the CLI or MCP. The two sections below say where each of them is ahead of IWE.
IWE vs marksman
Verified 2026-09-03 against marksman's feature documentation and its 2026-02-08 release.
marksman is the default answer to "is there a markdown LSP?" It has the widest editor coverage of any tool on this page, it is the tool other markdown language servers get compared against, and for a large class of users it is enough.
The difference in one sentence: marksman is a markdown language server; IWE is a knowledge graph that speaks LSP. marksman's job ends at making links, headings, and references work correctly inside an editor — and it does that job well. IWE's LSP is one interface onto a graph that also has a CLI, a query language, and an MCP server; the editor features fall out of the graph rather than being the point.
| Capability | IWE | marksman |
|---|---|---|
| Link syntax | ✅ Markdown links, [[wiki]], [[wiki|piped]], and inclusion links | ✅ Markdown inline links, reference links, and wiki links |
| Link targets | ⚠️ Document granularity — #fragment is dropped when resolving (Keys) | ✅ Documents and headings — [[doc#heading]], [[#heading]] |
| Diagnostics | ❌ None published by the LSP; iwe stats reports broken links in batch | ✅ Live wiki-link diagnostics in the editor |
| Workspace symbols | ✅ Section-grain, carrying hierarchical path text (Journal ⇒ 2026 ⇒ Jan 26) | ✅ Heading-grain |
| Search ranking | ✅ Fuzzy + BM25 fused with RRF, shared by CLI, LSP, and MCP | ⚠️ Subsequence matching, no relevance ranking |
| Reference counts | ⚠️ Whole-document backlink count as an inlay hint | ✅ Per-heading counts via code lens |
| Graph transformations | ✅ Extract / inline sections, section↔list, attach, squash | ❌ Not a goal |
| Query language | ✅ MongoDB-style YAML over frontmatter and graph edges | ❌ None |
| CLI | ✅ Full CLI — find, retrieve, tree, stats, schema, normalize, bulk update/delete | ❌ None (a standalone check command is on the roadmap) |
| MCP for AI agents | ✅ 14 tools, prompts, resources, file watching | ❌ None |
| Table of contents | ❌ Not supported | ✅ Code action generates and updates a ToC |
| Rename | ✅ Rename a file, all references follow | ✅ Rename updates cross-references in the configured link style |
| Daily notes | ⚠️ Template-based via attach; no date resolution | ❌ None |
| Folding | ✅ Folding ranges over sections and lists | ❌ Not documented |
| Workspace scoping | Directory the server starts in, plus workspace.path; honors .gitignore | VCS root or .marksman.toml; honors .gitignore, .hgignore, .ignore |
| Editors | ✅ Documented setup for VS Code, Neovim, Zed, Helix; any LSP client works | ✅ VS Code, Neovim, Vim, Emacs, Helix, Kakoune, Sublime Text, BBEdit, Zed |
| Implementation | Rust; pulldown-cmark AST with wikilinks enabled | F#/.NET; custom parser built on Markdig |
Choose marksman if you want link and reference correctness in an editor marksman already supports, with a .marksman.toml and nothing else to learn — especially Emacs, Vim, Sublime Text, or BBEdit, where IWE has no documented setup. Choose IWE if the notes are something you also want to query, restructure, and expose to agents outside the editor.
IWE vs markdown-oxide
Verified 2026-09-03 against oxide.md, the markdown-oxide repository, and release v0.25.12.
markdown-oxide is a PKM language server aimed squarely at bringing Obsidian's editing model into a text editor: daily notes, block references, tags, callouts. It is an actively maintained solo project with a real community around it, and on the Obsidian-compatibility axis it is ahead of IWE.
The difference in one sentence: markdown-oxide brings Obsidian's model into your editor; IWE treats the notes as a graph with an editor attached. They overlap on links, backlinks, and completion, and diverge on almost everything else.
| Capability | IWE | markdown-oxide |
|---|---|---|
| Parsing | AST — pulldown-cmark with wikilinks enabled | Regular expressions (src/vault/mod.rs), a deliberate tradeoff for indexing speed (#2) |
| Link granularity | Document — #fragment is dropped; the answer to "link to a section" is to extract it into its own document | Document, heading, and block — [[doc#heading]] and [[doc#^block]] resolve directly |
| Search & ranking | ✅ Section-grain workspace symbols with path context; fuzzy + BM25 fused with RRF | ⚠️ Filename, heading, and block completion; no relevance ranking of its own — sorting is left to the editor's completion engine (#409) |
| Daily & periodic notes | ⚠️ Template-based via attach (daily/{{today}}); no date resolution | ✅ :Today, :Daily next monday, :Daily two days ago, relative prev / next / +7 |
| Diagnostics | ❌ None from the LSP; iwe stats reports broken links in batch | ✅ Unresolved-reference diagnostics in the editor |
| Reference counts | ⚠️ Whole-document backlink count as an inlay hint | ✅ Per-referenceable counts via code lens (needs enabling in some clients) |
| Backlinks | ✅ Go-to-references over reference and inclusion edges | ✅ Files, headings, and blocks |
| Hover preview | ✅ Linked note rendered inline, frontmatter stripped | ✅ Hover preview |
| Tags | ⚠️ Frontmatter tags are queryable; no inline #tag index or completion | ✅ Tag completion, and tag references through workspace symbols |
| Graph transformations | ✅ Extract / inline sections, section↔list, attach, squash | ❌ Linking and rename only |
| Query language | ✅ MongoDB-style filters over frontmatter and graph edges, with projection, sort, limit | ❌ None |
| CLI | ✅ Full CLI, including bulk update / delete across the workspace by filter | ⚠️ Small CLI for opening daily notes and config files |
| MCP for AI agents | ✅ 14 tools, prompts, resources, file watching, dry-run on every mutation | ❌ None |
| External commands | ✅ Configurable CLI pipeline for block-level transformations | ❌ None |
| Auto-formatting | ✅ Full normalization — headers, lists, link titles, wrapping | ⚠️ Basic formatting |
| Editors | ✅ VS Code, Neovim, Zed, Helix | ✅ Neovim, VS Code, Zed, Helix, Kakoune |
| Performance | ✅ Rust; 20,000 files in under a second | ✅ Rust; fast in the common case, no published benchmark |
On parsing
Both approaches work; they fail differently. Regex parsing is very fast to index and gets the common cases right. An AST costs more to build and settles a class of question by construction rather than by pattern: whether [[ inside an inline-code span is a link, whether a fenced block nested in a list item is code, whether seven # characters open a heading. IWE pays the parse cost once at startup in the LSP and MCP servers, and per invocation in the CLI — the benchmark is where that cost is measured rather than asserted.
On link granularity
This is a design difference, not a scoreboard. markdown-oxide resolves heading and block anchors, so a link can point at a paragraph. IWE resolves at document granularity and drops #fragment when computing the target key; if a section is worth linking to, the extract code action turns it into its own document and rewrites the link for you. That is a real answer, but it is not the same answer, and if you want to point at a block without moving it, markdown-oxide does what you want and IWE does not.
IWE vs Obsidian
Verified 2026-09-03 for pricing and platform support; feature rows carried forward from May 2026.
Obsidian is a GUI PKM application with strong visualization, an extensive plugin ecosystem, and Bases (typed database views), Canvas, and Web Clipper:
| Feature | IWE | Obsidian |
|---|---|---|
| Editor Integration | ✅ Works with your preferred text editor (VS Code, Neovim, Zed, Helix) | ❌ Proprietary editor only |
| Cost | ✅ Completely free and open source | ⚠️ Free for personal use; Sync $4–5/mo, Publish $8–10/mo, commercial $50/user/yr |
| Performance | ✅ Rust-powered, instant operations on thousands of files | ⚠️ Electron-based, can be slower with large vaults |
| Graph Transformations | ✅ Automated extract/embed operations, section-to-list conversions | ❌ Manual linking and organization |
| Query Language | ✅ MongoDB-style YAML over frontmatter and graph edges | ✅ Bases (typed database views) and the Dataview plugin |
| MCP / AI Integration | ✅ Native MCP server with 14 tools, prompts, and resources | ⚠️ Requires third-party plugins |
| External Commands | ✅ Configurable CLI tools (AI agents, scripts, Unix tools) | ⚠️ Limited, requires third-party plugins |
| Inclusion Links | ✅ Native support with automatic linking | ⚠️ Available via plugins |
| Auto-formatting | ✅ Comprehensive markdown normalization on save | ⚠️ Basic formatting; plugins for advanced normalization |
| Batch Operations | ✅ CLI for bulk transformations, update, delete with filters | ❌ No batch operation capabilities |
| Graph Visualization | ⚠️ CLI-based dot export | ✅ Interactive graph view with customizable styling |
| Canvas / Whiteboard | ❌ Not supported | ✅ Native infinite canvas |
| Web Clipper | ❌ Not supported | ✅ Native browser extension |
| Plugin Ecosystem | ⚠️ LSP capabilities, CLI extensions, and MCP tools | ✅ Thousands of community plugins |
| Learning Curve | ⚠️ Requires terminal knowledge and editor setup | ✅ GUI-friendly with intuitive interface |
| Sync & Collaboration | ✅ Git-based sync (free), works with any Git hosting | ⚠️ Obsidian Sync (paid) with shared vaults, or manual Git setup |
| Publishing | ✅ Export to various formats via CLI | ⚠️ Obsidian Publish (paid) or manual export |
| Mobile Support | ❌ Desktop and terminal only | ✅ Native mobile apps with sync |
The philosophical difference: IWE is editor-agnostic and developer-focused, designed to sit inside existing technical workflows and to be readable by agents. Obsidian is a complete environment with its own ecosystem, better suited to people who want one application that does everything, with visual interfaces and plugin-level customization. If you are not already living in a text editor, Obsidian is very likely the right choice.
IWE vs zk and telekasten.nvim
Feature rows carried forward from May 2026 — not re-verified on 2026-09-03.
zk (zk-org) is a CLI-driven Zettelkasten tool with an LSP server and integrations for Neovim, VS Code, and Emacs. telekasten.nvim is a Neovim-only plugin with calendar, image paste, and Telescope integration:
| Feature | IWE | zk | telekasten.nvim |
|---|---|---|---|
| Editor Support | ✅ VS Code, Neovim, Zed, Helix, any LSP-compatible editor | ✅ Neovim, VS Code, Emacs via LSP | ❌ Neovim only |
| Graph Transformations | ✅ Automated extract/embed, structural changes | ❌ Basic note creation and linking | ❌ Basic note creation |
| Query Language | ✅ MongoDB-style YAML filters over frontmatter and graph edges | ⚠️ Filter flags for tags, links, mentions | ❌ None |
| MCP / AI Integration | ✅ Native MCP server with 14 tools | ❌ None | ❌ None |
| External Commands | ✅ Configurable CLI tools (AI agents, scripts, Unix tools) | ⚠️ Aliases and shell automation | ❌ Manual workflows only |
| Performance | ✅ Rust-powered LSP | ✅ Go-based CLI | ⚠️ Lua-based, editor-dependent |
| Batch Operations | ✅ CLI for bulk operations with filters | ⚠️ Limited (notebook housekeeping) | ❌ One-note-at-a-time workflow |
| Auto-formatting | ✅ Built-in normalization | ❌ Requires external tools | ❌ Requires external tools |
| Note Templates | ✅ Note templates via attach command | ✅ Template-based note creation | ✅ Static templates |
| Daily / Periodic Notes | ⚠️ Template-based via attach; no date resolution | ⚠️ Via templates | ✅ Daily/weekly/monthly/yearly |
| Search Integration | ✅ LSP-based with any picker | ✅ Built-in fzf browser | ✅ Telescope/fzf integration |
| Calendar View | ❌ Not supported | ❌ Not supported | ✅ Calendar with note highlights |
| Image / Media Paste | ❌ Not supported | ❌ Not supported | ✅ Clipboard image paste |
| Installation | ✅ Single binary + editor extension | ✅ Single binary + LSP | ⚠️ Complex Neovim plugin setup |
zk is a strong choice for Zettelkasten purists who want a CLI-first workflow with a simpler data model. telekasten.nvim is the best fit for Neovim users who want a polished journaling experience with calendar and image-paste workflows — neither of which IWE offers.
IWE vs mdbase
Feature rows carried forward from May 2026 — not re-verified on 2026-09-03.
mdbase is a specification (v0.2.1) for treating folders of markdown files as typed, queryable data collections. It has a TypeScript reference implementation and a Go library, but no LSP server, no editor extensions, and no CLI. It overlaps with IWE on querying and frontmatter typing — but not on graph transformations, editor integration, or AI tooling.
| Feature | IWE | mdbase |
|---|---|---|
| Project Maturity | ✅ Production tool: CLI, LSP, MCP shipping today | ⚠️ Pre-1.0 spec (v0.2.1) with reference library implementations |
| Editor Integration | ✅ LSP for VS Code, Neovim, Zed, Helix | ❌ No LSP, no editor extensions |
| CLI | ✅ iwe with find, retrieve, update, delete, normalize, schema, etc. | ❌ Library-only (TypeScript / Go) |
| MCP / AI Integration | ✅ Native MCP server with 14 tools | ❌ None |
| Query Language | ✅ MongoDB-style filters over frontmatter and graph edges | ✅ Expression language for filters, ordering, and link traversal |
| Frontmatter Schemas | ✅ Schema inference from existing documents (iwe schema) | ✅ Explicit type definitions with validation and inheritance |
| Validation | ⚠️ Implicit via schema inference | ✅ Configurable strictness (off / warn / error) |
| Graph Transformations | ✅ Extract, inline, attach, normalize, rename with link updates | ⚠️ Rename updates references; no structural refactors |
| Inclusion Links | ✅ Native block-reference inclusion | ❌ Wikilinks and markdown links only |
| Performance | ✅ Rust core, in-memory graph | ⚠️ TypeScript reference impl with SQLite-backed cache |
| Batch Operations | ✅ iwe update/delete with filters | ✅ batchUpdate / batchDelete library calls |
| File Watching | ✅ Built into LSP and MCP servers | ✅ Watch-mode simulation in reference impl |
mdbase's advantage: explicit, vendor-neutral schema definitions with strict validation suit teams that want to enforce frontmatter contracts across tools. If you primarily need typed records rather than a knowledge graph, mdbase's typed-collection model may fit better.
Where IWE Is Weaker
Everything above is easy to write in IWE's favor, so here is the other list — checked against IWE 0.23.0 on 2026-09-03.
Daily and periodic notes. IWE has templates: an attach action with
key_template = "daily/{{today}}"creates and links today's note. It has no natural-language date resolution, no[[next monday]]as a link target, no relative jump commands, and no weekly, monthly, or yearly periods. markdown-oxide is clearly ahead here; telekasten.nvim has the weekly, monthly, and yearly periods.Live diagnostics. IWE's LSP publishes none. Broken links are detectable, but only in batch, through
iwe stats. Both marksman and markdown-oxide flag unresolved references as you type.Section and block link targets. IWE resolves links at document granularity and drops
#fragment. marksman resolves heading anchors; markdown-oxide resolves headings and blocks. Extraction is IWE's answer, and it is a different answer, not a strictly better one.Per-heading reference counts. IWE's inlay hint shows one backlink count for the whole document. marksman and markdown-oxide both show counts per heading.
Tags. IWE queries frontmatter
tagsarrays well, but has no index, completion, or go-to-definition for inline#tagsyntax. markdown-oxide does.Aliases. A document has one title. If you want a note findable under several names, IWE has no answer today.
Editor breadth. IWE documents VS Code, Neovim, Zed, and Helix. marksman additionally covers Emacs, Vim, Sublime Text, BBEdit, and Kakoune; markdown-oxide covers Kakoune. Any LSP client can be wired up by hand, but "by hand" is the operative phrase.
Table of contents. marksman generates and maintains one as a code action. IWE does not.
Mobile. Obsidian has native apps with sync. IWE is desktop and terminal only.
Plugin ecosystem, canvas, web clipper, and interactive graph view. Obsidian wins these outright, and it is not close.
First-run clarity. IWE is a binary, an editor config, and a directory of markdown. If you have never used an LSP-backed tool before, Obsidian will be working before IWE is configured.
What IWE Adds Beyond a Markdown LSP
The tables above compress a lot. The capabilities that have no counterpart in a markdown language server — graph transformations, the query language, the MCP server, search ranking, schema inference, external commands, normalization, and inclusion links — are catalogued with links to their documentation in the Feature Overview.
Method and Dates
Each comparison block carries its own verification date. A block dated May 2026 has not been re-checked since; treat it accordingly. marksman and markdown-oxide were re-verified on 2026-09-03 against their documentation, source, and releases. Obsidian pricing and platform support were re-checked the same day; its feature rows were not.
Claims about IWE were checked against IWE
0.23.0.Claims about other tools link to their documentation, source, or issue tracker wherever the claim is not obvious from the tool's front page.
Corrections are welcome and will be applied. If something here is wrong, out of date, or unfair — including by the maintainers of the tools compared — open an issue and it will be fixed. This page is maintained, not marketing.
485 files · 414 not served here
- .gitattributes (not served here)
- .githooks/pre-commit (not served here)
- .github/dependabot.yaml (not served here)
- .github/workflows/release-plz.yaml (not served here)
- .github/workflows/release.yaml (not served here)
- .github/workflows/rust.yml (not served here)
- .gitignore (not served here)
- .release-plz.toml (not served here)
- ATTRIBUTION.md
- AUTOGINEER-RUNS.md
- CONTRIBUTING.md
- Cargo.lock (not served here)
- Cargo.toml (not served here)
- LICENSE-APACHE
- README.ko.md
- README.md
- README.zh-CN.md
- crates/diwe/CHANGELOG.md (not served here)
- crates/diwe/Cargo.toml (not served here)
- crates/diwe/src/config.rs (not served here)
- crates/diwe/src/file.rs (not served here)
- crates/diwe/src/find.rs (not served here)
- crates/diwe/src/fs.rs (not served here)
- crates/diwe/src/keys.rs (not served here)
- crates/diwe/src/lib.rs (not served here)
- crates/diwe/src/loader.rs (not served here)
- crates/diwe/src/retrieve.rs (not served here)
- crates/diwe/src/schema.rs (not served here)
- crates/diwe/src/search.rs (not served here)
- crates/diwe/src/search_query.rs (not served here)
- crates/diwe/src/stats.rs (not served here)
- crates/diwe/src/tokens.rs (not served here)
- crates/diwe/src/watcher.rs (not served here)
- crates/diwe/tests/config_migration_test.rs (not served here)
- crates/diwe/tests/djot_fs_test.rs (not served here)
- crates/diwe/tests/gitignore_test.rs (not served here)
- crates/diwe/tests/nested_keys_test.rs (not served here)
- crates/diwe/tests/query_search.rs (not served here)
- crates/diwe/tests/search_test.rs (not served here)
- crates/diwe/tests/stats_test.rs (not served here)
- crates/diwe/tests/stats_warnings_test.rs (not served here)
- crates/diwe/tests/windows_paths_test.rs (not served here)
- crates/iwe/CHANGELOG.md (not served here)
- crates/iwe/Cargo.toml (not served here)
- crates/iwe/LICENSE-APACHE
- crates/iwe/README.md (not served here)
- crates/iwe/benches/common.rs (not served here)
- crates/iwe/benches/load.rs (not served here)
- crates/iwe/benches/query.rs (not served here)
- crates/iwe/benches/similarity.rs (not served here)
- crates/iwe/docs/agent.md (not served here)
- crates/iwe/docs/config.md (not served here)
- crates/iwe/docs/index.txt (not served here)
- crates/iwe/docs/query.md (not served here)
- crates/iwe/docs/schema.md (not served here)
- crates/iwe/help/attach/about.txt (not served here)
- crates/iwe/help/attach/after_help.txt (not served here)
- crates/iwe/help/attach/long_about.txt (not served here)
- crates/iwe/help/completions/about.txt (not served here)
- crates/iwe/help/completions/after_help.txt (not served here)
- crates/iwe/help/completions/long_about.txt (not served here)
- crates/iwe/help/count/about.txt (not served here)
- crates/iwe/help/count/after_help.txt (not served here)
- crates/iwe/help/count/long_about.txt (not served here)
- crates/iwe/help/create/about.txt (not served here)
- crates/iwe/help/create/after_help.txt (not served here)
- crates/iwe/help/create/long_about.txt (not served here)
- crates/iwe/help/delete/about.txt (not served here)
- crates/iwe/help/delete/after_help.txt (not served here)
- crates/iwe/help/delete/long_about.txt (not served here)
- crates/iwe/help/docs/about.txt (not served here)
- crates/iwe/help/docs/after_help.txt (not served here)
- crates/iwe/help/docs/long_about.txt (not served here)
- crates/iwe/help/export/about.txt (not served here)
- crates/iwe/help/export/after_help.txt (not served here)
- crates/iwe/help/export/long_about.txt (not served here)
- crates/iwe/help/extract/about.txt (not served here)
- crates/iwe/help/extract/after_help.txt (not served here)
- crates/iwe/help/extract/long_about.txt (not served here)
- crates/iwe/help/find/about.txt (not served here)
- crates/iwe/help/find/after_help.txt (not served here)
- crates/iwe/help/find/long_about.txt (not served here)
- crates/iwe/help/init/about.txt (not served here)
- crates/iwe/help/init/after_help.txt (not served here)
- crates/iwe/help/init/long_about.txt (not served here)
- crates/iwe/help/inline/about.txt (not served here)
- crates/iwe/help/inline/after_help.txt (not served here)
- crates/iwe/help/inline/long_about.txt (not served here)
- crates/iwe/help/new/about.txt (not served here)
- crates/iwe/help/new/after_help.txt (not served here)
- crates/iwe/help/new/long_about.txt (not served here)
- crates/iwe/help/normalize/about.txt (not served here)
- crates/iwe/help/normalize/after_help.txt (not served here)
- crates/iwe/help/normalize/long_about.txt (not served here)
- crates/iwe/help/rename/about.txt (not served here)
- crates/iwe/help/rename/after_help.txt (not served here)
- crates/iwe/help/rename/long_about.txt (not served here)
- crates/iwe/help/retrieve/about.txt (not served here)
- crates/iwe/help/retrieve/after_help.txt (not served here)
- crates/iwe/help/retrieve/long_about.txt (not served here)
- crates/iwe/help/schema/about.txt (not served here)
- crates/iwe/help/schema/after_help.txt (not served here)
- crates/iwe/help/schema/long_about.txt (not served here)
- crates/iwe/help/squash/about.txt (not served here)
- crates/iwe/help/squash/after_help.txt (not served here)
- crates/iwe/help/squash/long_about.txt (not served here)
- crates/iwe/help/stats/about.txt (not served here)
- crates/iwe/help/stats/after_help.txt (not served here)
- crates/iwe/help/stats/long_about.txt (not served here)
- crates/iwe/help/tree/about.txt (not served here)
- crates/iwe/help/tree/after_help.txt (not served here)
- crates/iwe/help/tree/long_about.txt (not served here)
- crates/iwe/help/update/about.txt (not served here)
- crates/iwe/help/update/after_help.txt (not served here)
- crates/iwe/help/update/long_about.txt (not served here)
- crates/iwe/src/export.rs (not served here)
- crates/iwe/src/export/dot_details_exporter.rs (not served here)
- crates/iwe/src/export/dot_exporter.rs (not served here)
- crates/iwe/src/export/graph_colors.rs (not served here)
- crates/iwe/src/export/graph_data.rs (not served here)
- crates/iwe/src/filter_args.rs (not served here)
- crates/iwe/src/help.rs (not served here)
- crates/iwe/src/init.rs (not served here)
- crates/iwe/src/init/agents.rs (not served here)
- crates/iwe/src/init/fit.rs (not served here)
- crates/iwe/src/init/okf.rs (not served here)
- crates/iwe/src/init/report.rs (not served here)
- crates/iwe/src/init/schemas/okf-index.yaml (not served here)
- crates/iwe/src/init/schemas/okf-log.yaml (not served here)
- crates/iwe/src/init/schemas/okf.yaml (not served here)
- crates/iwe/src/init/screen.rs (not served here)
- crates/iwe/src/init/writer.rs (not served here)
- crates/iwe/src/internal.rs (not served here)
- crates/iwe/src/internal/claude.rs (not served here)
- crates/iwe/src/internal/claude/digest.rs (not served here)
- crates/iwe/src/internal/claude/enable.rs (not served here)
- crates/iwe/src/internal/claude/hook.rs (not served here)
- crates/iwe/src/internal/claude/hook/index.rs (not served here)
- crates/iwe/src/internal/claude/hook/post_tool.rs (not served here)
- crates/iwe/src/internal/claude/hook/store.rs (not served here)
- crates/iwe/src/internal/claude/policy.rs (not served here)
- crates/iwe/src/internal/claude/prompt.rs (not served here)
- crates/iwe/src/internal/claude/record.rs (not served here)
- crates/iwe/src/internal/claude/session.rs (not served here)
- crates/iwe/src/lib.rs (not served here)
- crates/iwe/src/main.rs (not served here)
- crates/iwe/src/new.rs (not served here)
- crates/iwe/src/projection_args.rs (not served here)
- crates/iwe/src/render.rs (not served here)
- crates/iwe/src/schema.rs (not served here)
- crates/iwe/src/stats.rs (not served here)
- crates/iwe/templates/claude/enable/queries.md (not served here)
- crates/iwe/templates/claude/enable/schemas/decision.yaml (not served here)
- crates/iwe/templates/claude/enable/schemas/gotcha.yaml (not served here)
- crates/iwe/templates/claude/enable/schemas/learning.yaml (not served here)
- crates/iwe/templates/claude/enable/schemas/memory.yaml (not served here)
- crates/iwe/templates/claude/enable/schemas/topic.yaml (not served here)
- crates/iwe/templates/claude/enable/starter.md (not served here)
- crates/iwe/templates/claude/enable/starter.toml (not served here)
- crates/iwe/templates/claude/enable/typed.md (not served here)
- crates/iwe/templates/claude/enable/typed.toml (not served here)
- crates/iwe/templates/claude/memory_index.md.jinja (not served here)
- crates/iwe/templates/claude/policy.schema.yaml (not served here)
- crates/iwe/templates/claude/prompts/distill.md (not served here)
- crates/iwe/templates/claude/prompts/init.md (not served here)
- crates/iwe/templates/claude/prompts/reflect.md (not served here)
- crates/iwe/templates/stats.md.jinja (not served here)
- crates/iwe/tests/attach_test.rs (not served here)
- crates/iwe/tests/cli_filter_test.rs (not served here)
- crates/iwe/tests/common.rs (not served here)
- crates/iwe/tests/completions_test.rs (not served here)
- crates/iwe/tests/config_test.rs (not served here)
- crates/iwe/tests/create_test.rs (not served here)
- crates/iwe/tests/delete_test.rs (not served here)
- crates/iwe/tests/docs_test.rs (not served here)
- crates/iwe/tests/export_dot_test.rs (not served here)
- crates/iwe/tests/extract_test.rs (not served here)
- crates/iwe/tests/find_test.rs (not served here)
- crates/iwe/tests/init_test.rs (not served here)
- crates/iwe/tests/inline_test.rs (not served here)
- crates/iwe/tests/internal_test.rs (not served here)
- crates/iwe/tests/main.rs (not served here)
- crates/iwe/tests/new_test.rs (not served here)
- crates/iwe/tests/normalize_test.rs (not served here)
- crates/iwe/tests/prompt_test.rs (not served here)
- crates/iwe/tests/query_schema_test.rs (not served here)
- crates/iwe/tests/rename_test.rs (not served here)
- crates/iwe/tests/retrieve_test.rs (not served here)
- crates/iwe/tests/schema_strict_test.rs (not served here)
- crates/iwe/tests/schema_test.rs (not served here)
- crates/iwe/tests/schema_validate_test.rs (not served here)
- crates/iwe/tests/squash_test.rs (not served here)
- crates/iwe/tests/stats_test.rs (not served here)
- crates/iwe/tests/stats_warnings_test.rs (not served here)
- crates/iwe/tests/tree_test.rs (not served here)
- crates/iwe/tests/update_test.rs (not served here)
- crates/iwec/CHANGELOG.md (not served here)
- crates/iwec/Cargo.toml (not served here)
- crates/iwec/README.md (not served here)
- crates/iwec/src/lib.rs (not served here)
- crates/iwec/src/main.rs (not served here)
- crates/iwec/src/watcher.rs (not served here)
- crates/iwec/tests/attach_test.rs (not served here)
- crates/iwec/tests/extract_test.rs (not served here)
- crates/iwec/tests/find_test.rs (not served here)
- crates/iwec/tests/fixture.rs (not served here)
- crates/iwec/tests/http_transport_test.rs (not served here)
- crates/iwec/tests/inline_test.rs (not served here)
- crates/iwec/tests/main.rs (not served here)
- crates/iwec/tests/normalize_test.rs (not served here)
- crates/iwec/tests/prompt_test.rs (not served here)
- crates/iwec/tests/query_test.rs (not served here)
- crates/iwec/tests/resource_test.rs (not served here)
- crates/iwec/tests/retrieve_test.rs (not served here)
- crates/iwec/tests/schema_test.rs (not served here)
- crates/iwec/tests/server_info_test.rs (not served here)
- crates/iwec/tests/squash_test.rs (not served here)
- crates/iwec/tests/stats_test.rs (not served here)
- crates/iwec/tests/stats_warnings_test.rs (not served here)
- crates/iwec/tests/tree_test.rs (not served here)
- crates/iwec/tests/watcher_test.rs (not served here)
- crates/iwec/tests/write_test.rs (not served here)
- crates/iwes/CHANGELOG.md (not served here)
- crates/iwes/Cargo.toml (not served here)
- crates/iwes/LICENSE-APACHE
- crates/iwes/README.md (not served here)
- crates/iwes/src/lib.rs (not served here)
- crates/iwes/src/main.rs (not served here)
- crates/iwes/src/router.rs (not served here)
- crates/iwes/src/router/server.rs (not served here)
- crates/iwes/src/router/server/actions.rs (not served here)
- crates/iwes/src/router/server/actions/attach.rs (not served here)
- crates/iwes/src/router/server/actions/delete.rs (not served here)
- crates/iwes/src/router/server/actions/extract.rs (not served here)
- crates/iwes/src/router/server/actions/extract_all.rs (not served here)
- crates/iwes/src/router/server/actions/inline.rs (not served here)
- crates/iwes/src/router/server/actions/link.rs (not served here)
- crates/iwes/src/router/server/actions/list.rs (not served here)
- crates/iwes/src/router/server/actions/section.rs (not served here)
- crates/iwes/src/router/server/actions/sort.rs (not served here)
- crates/iwes/src/router/server/actions/templates.rs (not served here)
- crates/iwes/src/router/server/actions/transform.rs (not served here)
- crates/iwes/src/router/server/base_path.rs (not served here)
- crates/iwes/src/router/server/extensions.rs (not served here)
- crates/iwes/src/router/server/query.rs (not served here)
- crates/iwes/src/router/server/search.rs (not served here)
- crates/iwes/tests/attach_test.rs (not served here)
- crates/iwes/tests/change_list_type_test.rs (not served here)
- crates/iwes/tests/completion_test.rs (not served here)
- crates/iwes/tests/custom_actions_test.rs (not served here)
- crates/iwes/tests/delete_test.rs (not served here)
- crates/iwes/tests/did_change_test.rs (not served here)
- crates/iwes/tests/did_save_test.rs (not served here)
- crates/iwes/tests/extract_all_test.rs (not served here)
- crates/iwes/tests/extract_test.rs (not served here)
- crates/iwes/tests/fixture.rs (not served here)
- crates/iwes/tests/folding_range_test.rs (not served here)
- crates/iwes/tests/format_document_test.rs (not served here)
- crates/iwes/tests/go_to_definition_test.rs (not served here)
- crates/iwes/tests/handler_panic_test.rs (not served here)
- crates/iwes/tests/hover_test.rs (not served here)
- crates/iwes/tests/inlay_hints_test.rs (not served here)
- crates/iwes/tests/inline_quote_test.rs (not served here)
- crates/iwes/tests/inline_section_test.rs (not served here)
- crates/iwes/tests/link_test.rs (not served here)
- crates/iwes/tests/list_to_sections_test.rs (not served here)
- crates/iwes/tests/main.rs (not served here)
- crates/iwes/tests/reconcile_test.rs (not served here)
- crates/iwes/tests/references_test.rs (not served here)
- crates/iwes/tests/rename_test.rs (not served here)
- crates/iwes/tests/sections_to_list_test.rs (not served here)
- crates/iwes/tests/sort_test.rs (not served here)
- crates/iwes/tests/transform_test.rs (not served here)
- crates/iwes/tests/unknown_method_test.rs (not served here)
- crates/iwes/tests/watched_files_test.rs (not served here)
- crates/iwes/tests/watcher_test.rs (not served here)
- crates/iwes/tests/workspace_symbols_test.rs (not served here)
- crates/liwe/CHANGELOG.md (not served here)
- crates/liwe/Cargo.toml (not served here)
- crates/liwe/LICENSE-APACHE
- crates/liwe/README.md (not served here)
- crates/liwe/src/collation.rs (not served here)
- crates/liwe/src/djot.rs (not served here)
- crates/liwe/src/djot/reader.rs (not served here)
- crates/liwe/src/djot/writer.rs (not served here)
- crates/liwe/src/format.rs (not served here)
- crates/liwe/src/fs.rs (not served here)
- crates/liwe/src/graph.rs (not served here)
- crates/liwe/src/graph/arena.rs (not served here)
- crates/liwe/src/graph/basic_iter.rs (not served here)
- crates/liwe/src/graph/builder.rs (not served here)
- crates/liwe/src/graph/graph_line.rs (not served here)
- crates/liwe/src/graph/graph_node.rs (not served here)
- crates/liwe/src/graph/index.rs (not served here)
- crates/liwe/src/graph/path.rs (not served here)
- crates/liwe/src/graph/sections_builder.rs (not served here)
- crates/liwe/src/graph/squash_iter.rs (not served here)
- crates/liwe/src/graph/walk.rs (not served here)
- crates/liwe/src/init.rs (not served here)
- crates/liwe/src/init/detect.rs (not served here)
- crates/liwe/src/init/evidence.rs (not served here)
- crates/liwe/src/init/notes.rs (not served here)
- crates/liwe/src/init/notes/tests.rs (not served here)
- crates/liwe/src/init/probe.rs (not served here)
- crates/liwe/src/init/settings.rs (not served here)
- crates/liwe/src/lib.rs (not served here)
- crates/liwe/src/locale.rs (not served here)
- crates/liwe/src/markdown.rs (not served here)
- crates/liwe/src/markdown/reader.rs (not served here)
- crates/liwe/src/markdown/writer.rs (not served here)
- crates/liwe/src/model.rs (not served here)
- crates/liwe/src/model/config.rs (not served here)
- crates/liwe/src/model/document.rs (not served here)
- crates/liwe/src/model/frontmatter.rs (not served here)
- crates/liwe/src/model/ids.rs (not served here)
- crates/liwe/src/model/inline.rs (not served here)
- crates/liwe/src/model/key_index.rs (not served here)
- crates/liwe/src/model/node.rs (not served here)
- crates/liwe/src/model/node_iter.rs (not served here)
- crates/liwe/src/model/node_pointer.rs (not served here)
- crates/liwe/src/model/projector.rs (not served here)
- crates/liwe/src/model/reference.rs (not served here)
- crates/liwe/src/model/tree.rs (not served here)
- crates/liwe/src/model/tree_iter.rs (not served here)
- crates/liwe/src/model/writer.rs (not served here)
- crates/liwe/src/operations.rs (not served here)
- crates/liwe/src/operations/attach.rs (not served here)
- crates/liwe/src/operations/changes.rs (not served here)
- crates/liwe/src/operations/config.rs (not served here)
- crates/liwe/src/operations/delete.rs (not served here)
- crates/liwe/src/operations/extract.rs (not served here)
- crates/liwe/src/operations/inline.rs (not served here)
- crates/liwe/src/operations/rename.rs (not served here)
- crates/liwe/src/operations/select.rs (not served here)
- crates/liwe/src/operations/util.rs (not served here)
- crates/liwe/src/parser.rs (not served here)
- crates/liwe/src/query.rs (not served here)
- crates/liwe/src/query/block.rs (not served here)
- crates/liwe/src/query/block_eval.rs (not served here)
- crates/liwe/src/query/block_update.rs (not served here)
- crates/liwe/src/query/builder.rs (not served here)
- crates/liwe/src/query/cli.rs (not served here)
- crates/liwe/src/query/document.rs (not served here)
- crates/liwe/src/query/edges.rs (not served here)
- crates/liwe/src/query/eval.rs (not served here)
- crates/liwe/src/query/execute.rs (not served here)
- crates/liwe/src/query/filter.rs (not served here)
- crates/liwe/src/query/graph_match.rs (not served here)
- crates/liwe/src/query/project.rs (not served here)
- crates/liwe/src/query/schemas.rs (not served here)
- crates/liwe/src/query/schemas/draft-2026-08.json (not served here)
- crates/liwe/src/query/scores.rs (not served here)
- crates/liwe/src/query/search.rs (not served here)
- crates/liwe/src/query/sort.rs (not served here)
- crates/liwe/src/query/update.rs (not served here)
- crates/liwe/src/query/wire.rs (not served here)
- crates/liwe/src/schema.rs (not served here)
- crates/liwe/src/schema/document.rs (not served here)
- crates/liwe/src/schema/infer.rs (not served here)
- crates/liwe/src/state.rs (not served here)
- crates/liwe/tests/blocks.rs (not served here)
- crates/liwe/tests/comments_test.rs (not served here)
- crates/liwe/tests/djot_roundtrip.rs (not served here)
- crates/liwe/tests/formatting_test.rs (not served here)
- crates/liwe/tests/frontmatter_title_test.rs (not served here)
- crates/liwe/tests/html_test.rs (not served here)
- crates/liwe/tests/links_test.rs (not served here)
- crates/liwe/tests/live_resolution_test.rs (not served here)
- crates/liwe/tests/main.rs (not served here)
- crates/liwe/tests/normalization_escapes.rs (not served here)
- crates/liwe/tests/normalization_headers.rs (not served here)
- crates/liwe/tests/normalization_html.rs (not served here)
- crates/liwe/tests/normalization_lists.rs (not served here)
- crates/liwe/tests/normalization_metadata.rs (not served here)
- crates/liwe/tests/normalization_misc.rs (not served here)
- crates/liwe/tests/normalization_raw.rs (not served here)
- crates/liwe/tests/operations_inline_test.rs (not served here)
- crates/liwe/tests/operations_rename_test.rs (not served here)
- crates/liwe/tests/queries.rs (not served here)
- crates/liwe/tests/query_block_update.rs (not served here)
- crates/liwe/tests/query_blocks.rs (not served here)
- crates/liwe/tests/query_content_filter.rs (not served here)
- crates/liwe/tests/query_count.rs (not served here)
- crates/liwe/tests/query_delete.rs (not served here)
- crates/liwe/tests/query_deserialize.rs (not served here)
- crates/liwe/tests/query_filter_expression.rs (not served here)
- crates/liwe/tests/query_find.rs (not served here)
- crates/liwe/tests/query_frontmatter_prefixes.rs (not served here)
- crates/liwe/tests/query_graph.rs (not served here)
- crates/liwe/tests/query_scores.rs (not served here)
- crates/liwe/tests/query_update.rs (not served here)
- crates/liwe/tests/root_keys_test.rs (not served here)
- crates/liwe/tests/roundtrip_test.rs (not served here)
- crates/liwe/tests/squash_test.rs (not served here)
- crates/liwe/tests/task_items_test.rs (not served here)
- crates/liwe/tests/toc_test.rs (not served here)
- crates/liwe/tests/wide_document_test.rs (not served here)
- crates/liwe/tests/writer_escaping_test.rs (not served here)
- docs/Makefile (not served here)
- docs/architecture.md
- docs/benchmark.md
- docs/book.pdf (not served here)
- docs/book.typ (not served here)
- docs/cli-attach.md
- docs/cli-count.md
- docs/cli-create.md
- docs/cli-delete.md
- docs/cli-export.md
- docs/cli-extract.md
- docs/cli-find.md
- docs/cli-init.md
- docs/cli-inline.md
- docs/cli-new.md
- docs/cli-normalize.md
- docs/cli-rename.md
- docs/cli-retrieve.md
- docs/cli-schema.md
- docs/cli-squash.md
- docs/cli-stats.md
- docs/cli-tree.md
- docs/cli-troubleshooting.md
- docs/cli-update.md
- docs/cli-workflows.md
- docs/cli.md
- docs/comparison.md
- docs/configuration.md
- docs/data-model.md
- docs/debug-mode.md
- docs/design-principles.md
- docs/docs-basic.dot (not served here)
- docs/docs-basic.svg (not served here)
- docs/docs-detailed.dot (not served here)
- docs/docs-detailed.svg (not served here)
- docs/document-schema.md
- docs/documents-as-binary-tree.png (not served here)
- docs/feature-ai-commands.md
- docs/feature-attach.md
- docs/feature-auto-format.md
- docs/feature-autocomplete.md
- docs/feature-delete.md
- docs/feature-extract.md
- docs/feature-hover-preview.md
- docs/feature-inlay-hints.md
- docs/feature-inline.md
- docs/feature-link.md
- docs/feature-navigation.md
- docs/feature-normalization.md
- docs/feature-overview.md
- docs/feature-renaming.md
- docs/feature-search.md
- docs/feature-subdirectories.md
- docs/feature-text-manipulation.md
- docs/feature-visualization.md
- docs/helix.md
- docs/how-to-install.md
- docs/how-to-use.md
- docs/inclusion-links.md
- docs/index.md
- docs/keys.md
- docs/mcp.md
- docs/neovim.md
- docs/okf.md
- docs/query-language.md
- docs/search-ranking.md
- docs/spec.md
- docs/vscode.md
- docs/why-it-exists.md (not served here)
- docs/zed.md (not served here)
- glama.json (not served here)
- npm/cli-darwin-arm64/package.json (not served here)
- npm/cli-darwin-x64/package.json (not served here)
- npm/cli-linux-arm64/package.json (not served here)
- npm/cli-linux-x64/package.json (not served here)
- npm/cli-win32-x64/package.json (not served here)
- npm/iwe/README.md (not served here)
- npm/iwe/bin/iwe.js (not served here)
- npm/iwe/bin/iwec.js (not served here)
- npm/iwe/bin/iwes.js (not served here)
- npm/iwe/lib/run.js (not served here)
- npm/iwe/package.json (not served here)
- npm/mcp/README.md (not served here)
- npm/mcp/bin/iwe-mcp.js (not served here)
- npm/mcp/package.json (not served here)
- npm/stamp.js (not served here)
- server.json
Advantages
- Shared context allows agents to access and build upon the same notes written by the user. evidence: README.md
- Memory is stored as human-readable Markdown files that can be easily browsed, corrected, or deleted. evidence: README.md
- Data remains under user control in local folders, avoiding dependency on proprietary cloud storage. evidence: README.md
Limitations
- Requires manual setup of the MCP server or CLI tools to enable agent connectivity. evidence: README.md
- The system does not include an AI model, requiring the user to bring their own agent. evidence: README.md
Security
Risk level: Low risk
This brain runs
Git hooks (1)
.githooks/pre-commit(pre-commit):runs on git pre-commit
- Low risk: scripts-present (.githooks/pre-commit)
Attribution and licence
- Created by
- IWE
- Publisher
- IWE (Official IWE project)
- Source
- iwe-org/iwe · commit b733afe
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by IWE.
Install from source
414 of its files are not served here, so there is no ZIP. iwe-org/iwe at b733afe