<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dmytro Halichenko</title>
    <description>The latest articles on DEV Community by Dmytro Halichenko (@gimalay).</description>
    <link>https://dev.to/gimalay</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2691905%2F854aba8d-3d82-4d9c-ba37-2b1abaa82177.png</url>
      <title>DEV Community: Dmytro Halichenko</title>
      <link>https://dev.to/gimalay</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gimalay"/>
    <language>en</language>
    <item>
      <title>Five Components of Agent Memory, Implemented in Plain Markdown</title>
      <dc:creator>Dmytro Halichenko</dc:creator>
      <pubDate>Mon, 04 May 2026 21:05:53 +0000</pubDate>
      <link>https://dev.to/gimalay/five-components-of-agent-memory-implemented-in-plain-markdown-29i0</link>
      <guid>https://dev.to/gimalay/five-components-of-agent-memory-implemented-in-plain-markdown-29i0</guid>
      <description>&lt;p&gt;An agent memory system, to actually be useful, has to do five things: persist information across sessions, give it structure, support retrieval, allow writeback, and handle forgetting.&lt;/p&gt;

&lt;p&gt;Most current implementations cover two or three of these. Vector databases nail retrieval but have no structure a human can read. Prompt files like &lt;code&gt;.cursorrules&lt;/code&gt; give you persistence and a thin slice of structure but nothing else. Conversation history scrolls past the context window and is gone.&lt;/p&gt;

&lt;p&gt;This post walks through the five components and shows how &lt;a href="https://github.com/iwe-org/iwe" rel="noopener noreferrer"&gt;IWE&lt;/a&gt; implements each one. No vector database. No proprietary index. The substrate is a directory of markdown files.&lt;/p&gt;

&lt;h3&gt;
  
  
  The substrate
&lt;/h3&gt;

&lt;p&gt;IWE is a Rust binary that treats a directory of markdown files as a knowledge graph. Links between files are edges. A link on its own line — &lt;code&gt;[Authentication](auth.md)&lt;/code&gt; — is an inclusion link, which establishes a parent-child relationship. Notes can have multiple parents. The graph is rebuilt from the files on every change; the files are always the source of truth.&lt;/p&gt;

&lt;p&gt;Agents talk to the graph through a CLI (&lt;code&gt;iwe&lt;/code&gt;) or an MCP server (&lt;code&gt;iwec&lt;/code&gt;). Humans talk to it through their editor — VS Code, Neovim, Zed, Helix — over LSP.&lt;/p&gt;

&lt;p&gt;That's the whole architecture. Now the five components.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Persistence
&lt;/h3&gt;

&lt;p&gt;Memory lives as &lt;code&gt;.md&lt;/code&gt; files in a directory you choose. It survives sessions, restarts, OS reinstalls, and IWE itself — uninstall the binary tomorrow and your memory is still there, readable in any text editor. Git versions it. rsync backs it up. You already know how to operate it.&lt;/p&gt;

&lt;p&gt;Compare to a vector DB or a proprietary blob format: if the vendor changes the format, your memory is stranded.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Structure
&lt;/h3&gt;

&lt;p&gt;The structure is the graph. Headers define sections. Inclusion links define hierarchy. Reference links define cross-references. The same note can appear under multiple parents — "Performance Optimization" can live under both Frontend and Backend without duplication.&lt;/p&gt;

&lt;p&gt;What structured memory needs — entities, facts, decisions, relationships, temporal context — in IWE these are just notes with links. An entity is a note. A decision is a note linked from the project that made it. A relationship is an inclusion link. Temporal context is &lt;code&gt;git log&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This isn't a clever encoding. It's the boring observation that markdown has always been a graph format, and humans have always written in it.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Retrieval
&lt;/h3&gt;

&lt;p&gt;IWE exposes the graph through a query language that reads like Mongo's filter syntax but runs against markdown files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iwe find &lt;span class="s2"&gt;"authentication"&lt;/span&gt;                           &lt;span class="c"&gt;# fuzzy search across titles&lt;/span&gt;
iwe find &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="s1"&gt;'status: draft, priority: {$gte: 8}'&lt;/span&gt;  &lt;span class="c"&gt;# frontmatter predicates&lt;/span&gt;
iwe find &lt;span class="nt"&gt;--included-by&lt;/span&gt; projects/alpha:0             &lt;span class="c"&gt;# everything under alpha's subtree&lt;/span&gt;
iwe find &lt;span class="nt"&gt;--included-by&lt;/span&gt; projects/alpha:0 &lt;span class="se"&gt;\&lt;/span&gt;
         &lt;span class="nt"&gt;--references&lt;/span&gt; people/dmytro &lt;span class="se"&gt;\&lt;/span&gt;
         &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="s1"&gt;'status: draft'&lt;/span&gt;                   &lt;span class="c"&gt;# compose structure + fields&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The filter operators are the ones you already know: &lt;code&gt;$eq&lt;/code&gt;, &lt;code&gt;$ne&lt;/code&gt;, &lt;code&gt;$in&lt;/code&gt;, &lt;code&gt;$gt&lt;/code&gt;/&lt;code&gt;$gte&lt;/code&gt;/&lt;code&gt;$lt&lt;/code&gt;/&lt;code&gt;$lte&lt;/code&gt;, &lt;code&gt;$exists&lt;/code&gt;, &lt;code&gt;$and&lt;/code&gt;, &lt;code&gt;$or&lt;/code&gt;, &lt;code&gt;$not&lt;/code&gt;. On top of that, four structural anchors walk the graph's two edge types: &lt;code&gt;--includes&lt;/code&gt;, &lt;code&gt;--included-by&lt;/code&gt; for hierarchy, &lt;code&gt;--references&lt;/code&gt;, &lt;code&gt;--referenced-by&lt;/code&gt; for cross-references. Stack them to compose multi-edge queries — "drafts under this project that mention this person" is three flags, not a join.&lt;/p&gt;

&lt;p&gt;For navigating, &lt;code&gt;retrieve&lt;/code&gt; fetches a note plus its descendants to a given depth, &lt;code&gt;tree&lt;/code&gt; shows the hierarchy, &lt;code&gt;squash&lt;/code&gt; flattens a subtree into one document. Projection (&lt;code&gt;--project title,status&lt;/code&gt;), sorting (&lt;code&gt;--sort modified_at:-1&lt;/code&gt;), and limits round it out. &lt;code&gt;count&lt;/code&gt; gives you an integer instead of results.&lt;/p&gt;

&lt;p&gt;Retrieval is deterministic graph traversal, not similarity search. The structure the human wrote is the retrieval signal. When the agent gets wrong context, you trace which link brought it in and fix the graph.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Writeback
&lt;/h3&gt;

&lt;p&gt;The agent writes back the same way you do. Create a note, link it in, done. But writeback goes further than append-only — the same query language that drives reads also drives mutations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iwe update &lt;span class="nt"&gt;-k&lt;/span&gt; meeting-notes &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;reviewed &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;priority&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3
iwe update &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="s1"&gt;'status: draft, reviewed: true'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
           &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;published &lt;span class="se"&gt;\&lt;/span&gt;
           &lt;span class="nt"&gt;--unset&lt;/span&gt; draft_notes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;update&lt;/code&gt; takes a filter or a key, applies &lt;code&gt;--set&lt;/code&gt; and &lt;code&gt;--unset&lt;/code&gt; to every match, and rewrites the frontmatter in place. The agent can promote a batch of drafts, tag a set of notes, or adjust priorities across a project — the same filter it used to find the notes is the one it uses to change them.&lt;/p&gt;

&lt;p&gt;The MCP server exposes the same operations as tools: create, update, extract (split a section into its own note), inline (pull a referenced note back in), attach (link a note under a new parent). &lt;code&gt;extract&lt;/code&gt; and &lt;code&gt;inline&lt;/code&gt; let the agent refactor memory the same way a developer refactors code — a note that's grown too long gets split, small notes that belong together get inlined into a summary.&lt;/p&gt;

&lt;p&gt;This is what separates real memory from RAG: the agent can read, write, query, and restructure. One source of truth, no sync layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Forgetting
&lt;/h3&gt;

&lt;p&gt;This is the hardest one. IWE now has a first-class &lt;code&gt;delete&lt;/code&gt; with the same filter language:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iwe delete &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="s1"&gt;'status: archived'&lt;/span&gt;
iwe delete &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="s1"&gt;'{type: scratch, modified: {$lt: "2026-01-01"}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete is reference-aware: inclusion links to removed notes are cleaned up automatically, inline links are flattened to plain text. Nothing dangles. &lt;code&gt;--dry-run&lt;/code&gt; previews without writing. Git means nothing is truly lost — deletions are commits you can reverse.&lt;/p&gt;

&lt;p&gt;The full forgetting loop: &lt;code&gt;iwe stats&lt;/code&gt; surfaces orphan nodes, dead links, and graph density. &lt;code&gt;iwe find --roots&lt;/code&gt; shows unlinked documents — candidates for archival. &lt;code&gt;extract&lt;/code&gt; and &lt;code&gt;inline&lt;/code&gt; let you summarize subtrees into higher-level notes and archive the details. &lt;code&gt;delete&lt;/code&gt; prunes what's no longer needed. The agent can run this loop autonomously: find stale notes, summarize, prune, commit.&lt;/p&gt;

&lt;p&gt;Not as elegant as automatic temporal decay, but every step is auditable and reversible.&lt;/p&gt;

&lt;h3&gt;
  
  
  What this buys you
&lt;/h3&gt;

&lt;p&gt;For agent memory specifically, plain markdown files have a property no vector DB can match: the agent and the human read the same bytes. There is no translation layer where the human's mental model can drift from the agent's stored representation. When the agent surfaces a surprising response, you grep the directory and find out why.&lt;/p&gt;

&lt;p&gt;The architectural shape — a human-editable instruction layer, a structured memory layer, a graph view both humans and agents share — is showing up in several places right now. IWE is one open-source implementation of it. The binary is on &lt;a href="https://github.com/iwe-org/iwe" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, on Homebrew, on crates.io. Point an agent at it and try.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/iwe-org/iwe" rel="noopener noreferrer"&gt;IWE on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://iwe.md" rel="noopener noreferrer"&gt;iwe.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>markdown</category>
      <category>opensource</category>
      <category>agents</category>
    </item>
    <item>
      <title>Markdown Knowledge Graph for Humans and AI Agents</title>
      <dc:creator>Dmytro Halichenko</dc:creator>
      <pubDate>Sat, 21 Mar 2026 17:13:06 +0000</pubDate>
      <link>https://dev.to/gimalay/markdown-knowledge-graph-for-humans-and-agents-43c4</link>
      <guid>https://dev.to/gimalay/markdown-knowledge-graph-for-humans-and-agents-43c4</guid>
      <description>&lt;p&gt;You accumulate knowledge constantly — notes, docs, project decisions, things you'll need to remember later. AI agents could help you work with all of this. But how do you give them access to what you know?&lt;/p&gt;

&lt;p&gt;There's a growing industry around "agent memory" — vector databases, embedding pipelines, retrieval systems. But for personal and project knowledge, the answer might be simpler: plain Markdown files.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Agent Memory
&lt;/h2&gt;

&lt;p&gt;The amount of knowledge and context we need to operate with grows exponentially. Codebases expand. Documentation multiplies. Every project accumulates decisions, patterns, and tribal knowledge that's hard to keep in your head — or fit in a context window.&lt;/p&gt;

&lt;p&gt;AI agents are supposed to help. Every framework now ships with some form of memory management. LangChain has memory modules. CrewAI has knowledge sources. AutoGPT writes to files. The common pattern: agents need persistent, structured storage that survives beyond a single conversation.&lt;/p&gt;

&lt;p&gt;The dominant approach uses vector embeddings. Store memories as embeddings, retrieve via semantic similarity, inject into context. It works, but it creates a problem: &lt;strong&gt;the agent's knowledge becomes opaque&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When your agent "remembers" something, where does that memory live? In a vector database you can't easily read. In embeddings you can't edit by hand. The agent has knowledge, but you can't see it, verify it, or share it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Different Approach
&lt;/h2&gt;

&lt;p&gt;What if your notes and your agent shared the same knowledge base?&lt;/p&gt;

&lt;p&gt;This is the idea behind &lt;a href="https://github.com/iwe-org/iwe" rel="noopener noreferrer"&gt;IWE&lt;/a&gt; — a tool that treats Markdown as a knowledge graph accessible to both you and your AI agents. You edit in your preferred text editor with full LSP support. Your agent queries the same files through a CLI. Same source of truth, no sync.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;IWE consists of two components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;An LSP server&lt;/strong&gt; (&lt;code&gt;iwes&lt;/code&gt;) that integrates with VS Code, Neovim, Zed, and Helix&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A CLI&lt;/strong&gt; (&lt;code&gt;iwe&lt;/code&gt;) for programmatic access — the part AI agents use&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The core insight: your text editor already has a protocol for structured document access. The Language Server Protocol gives you completions, go-to-definition, references, and code actions. IWE implements LSP for Markdown knowledge bases.&lt;/p&gt;

&lt;h2&gt;
  
  
  The CLI as Agent Interface
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;iwe&lt;/code&gt; CLI exposes the same knowledge graph to command-line tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iwe find &lt;span class="s2"&gt;"authentication"&lt;/span&gt;

iwe retrieve &lt;span class="nt"&gt;-k&lt;/span&gt; docs/auth-flow

iwe retrieve &lt;span class="nt"&gt;-k&lt;/span&gt; docs/auth-flow &lt;span class="nt"&gt;--depth&lt;/span&gt; 2

iwe retrieve &lt;span class="nt"&gt;-k&lt;/span&gt; docs/auth-flow &lt;span class="nt"&gt;--dry-run&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An AI agent using Claude Code, Cursor, or any tool that can execute shell commands gets structured access to your knowledge base. No embeddings. No vector database. Just Markdown files with a query interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key flags:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--depth N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Follow inclusion links N levels deep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-c N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Include N levels of parent context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-e KEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Exclude already-loaded documents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--dry-run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Check document count and size before fetching&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;--depth&lt;/code&gt; flag is particularly useful. It follows inclusion links and inlines child documents, giving the agent transitive context in a single retrieval call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inclusion Links: Structure Without Folders
&lt;/h2&gt;

&lt;p&gt;What makes graph traversal work is a simple concept: &lt;strong&gt;&lt;a href="https://iwe.md/docs/concepts/inclusion-links/" rel="noopener noreferrer"&gt;inclusion links&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An inclusion link is a markdown link placed on its own line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Photography&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Composition&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;composition.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Lighting&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;lighting.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Post-Processing&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;post-processing.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When a link appears on its own line, it defines structure: "Photography" becomes the parent of the linked documents. Unlike folder hierarchies, a document can have multiple parents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend Development
├── React Fundamentals
├── Vue.js Guide
└── Performance Optimization

Backend Topics
├── Database Design
└── Performance Optimization  ← same document, multiple parents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is polyhierarchy — structure without the limitations of folders. Context flows from parent to child. When you retrieve a document with depth, IWE follows these links to pull in child content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters vs alternatives:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Folders&lt;/strong&gt;: Force single placement. "Performance Optimization" can't live in both frontend and backend directories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tags&lt;/strong&gt;: No structure, no ordering, no hierarchy within categories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inclusion links&lt;/strong&gt;: Multiple parents, explicit ordering, annotations alongside links.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What This Enables
&lt;/h2&gt;

&lt;p&gt;This approach gives you &lt;strong&gt;context engineering&lt;/strong&gt; — control over exactly what enters the context window.&lt;/p&gt;

&lt;p&gt;When an agent needs to understand your authentication system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iwe retrieve &lt;span class="nt"&gt;-k&lt;/span&gt; docs/auth &lt;span class="nt"&gt;--depth&lt;/span&gt; 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It gets back structured Markdown containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The auth document itself&lt;/li&gt;
&lt;li&gt;Child documents expanded inline&lt;/li&gt;
&lt;li&gt;Parent context and backlinks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is deterministic retrieval. No embedding similarity thresholds. No "maybe relevant" results. The agent gets exactly the documents in your knowledge graph that connect to the topic.&lt;/p&gt;

&lt;p&gt;Additional benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Version-controlled knowledge&lt;/strong&gt; — Git tracks every change&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transitive context in one command&lt;/strong&gt; — no recursive API calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readable, editable, portable&lt;/strong&gt; — it's just Markdown&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Tradeoff
&lt;/h2&gt;

&lt;p&gt;IWE isn't a replacement for every memory approach:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured knowledge (technical docs, project specs, reference material, task managenet)&lt;/li&gt;
&lt;li&gt;Developer workflows with text editor/CLI comfort&lt;/li&gt;
&lt;li&gt;Knowledge you want to read, edit, and version control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key insight: this isn't "agent memory" bolted onto your workflow. It's your knowledge base — the one you already maintain for yourself — made accessible to agents when you want their help.&lt;/p&gt;

&lt;p&gt;You remain in control. The files are yours, readable and editable. Agents become collaborators that can navigate your knowledge, not black boxes that store it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;IWE is open source and available on &lt;a href="https://github.com/iwe-org/iwe" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See the &lt;a href="https://iwe.md/get-started/" rel="noopener noreferrer"&gt;Get Started guide&lt;/a&gt; for installation and setup instructions.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>cli</category>
      <category>lsp</category>
    </item>
  </channel>
</rss>
