wenlan-mcp 0.18.16 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +169 -169
  2. package/install.js +1 -1
  3. package/package.json +5 -5
package/README.md CHANGED
@@ -1,19 +1,21 @@
1
1
  <p align="center">
2
2
  <picture>
3
3
  <source media="(max-width: 600px)" srcset="./docs/assets/readme-banner-mobile.png">
4
- <img src="./docs/assets/readme-banner.png" alt="Wenlan: your source-backed knowledge base, built to compound." width="100%">
4
+ <img src="./docs/assets/readme-banner.png" alt="Wenlan: A living personal wiki. AI organizes. You stay in control." width="100%">
5
5
  </picture>
6
6
  </p>
7
7
 
8
- Useful work with AI shouldn't disappear when a conversation ends. Wenlan builds the right pages and keeps them current as sources change, asking only when judgment is needed.
8
+ Wenlan turns your documents, notes, and AI conversations into editable pages with links to their sources, so you and your AI tools can keep building on them.
9
+
10
+ As sources change, you can ask AI to update the pages or enable background updates. If you’ve edited a page, Wenlan proposes revisions for you to review instead of automatically overwriting your work.
9
11
 
10
12
  <p align="center">
11
13
  English | <a href="./README.zh-Hans.md">简体中文</a> | <a href="./README.zh-Hant.md">繁體中文</a> | <a href="./README.es-ES.md">Español</a>
12
14
  </p>
13
15
 
14
16
  <p align="center">
15
- <a href="https://github.com/7xuanlu/wenlan/actions/workflows/ci.yml?query=branch%3Amain"><img alt="CI" src="https://github.com/7xuanlu/wenlan/actions/workflows/ci.yml/badge.svg?branch=main&event=push"></a>
16
- <a href="https://github.com/7xuanlu/wenlan/releases/latest"><img alt="Latest release" src="https://img.shields.io/github/v/release/7xuanlu/wenlan?sort=semver&label=release"></a>
17
+ <a href="https://github.com/wenlan-app/wenlan/actions/workflows/ci.yml?query=branch%3Amain"><img alt="CI" src="https://github.com/wenlan-app/wenlan/actions/workflows/ci.yml/badge.svg?branch=main&event=push"></a>
18
+ <a href="https://github.com/wenlan-app/wenlan/releases/latest"><img alt="Latest release" src="https://img.shields.io/github/v/release/wenlan-app/wenlan?sort=semver&label=release"></a>
17
19
  <a href="#license"><img alt="License: Apache-2.0 and AGPL-3.0" src="https://img.shields.io/badge/license-Apache--2.0%20%2B%20AGPL--3.0-blue.svg"></a>
18
20
  </p>
19
21
 
@@ -26,34 +28,30 @@ Useful work with AI shouldn't disappear when a conversation ends. Wenlan builds
26
28
  <a href="#learn-more">Learn&nbsp;more</a>
27
29
  </p>
28
30
 
29
- https://github.com/user-attachments/assets/d8b2ad4a-f97a-4a15-97a8-9105478de18a
31
+ https://github.com/user-attachments/assets/35f06749-00e5-484d-a9f4-5e462de8d11e
30
32
 
31
33
  <p align="center">
32
- <sub>A maintained Page in the desktop app: open any citation to inspect the Source or Memory behind the claim.</sub>
34
+ <sub>The opening frame is a composed preview, not a native three-pane view. The rest shows the app in use, including pages and source citations.</sub>
33
35
  </p>
34
36
 
35
- ---
36
-
37
37
  <a id="quickstart"></a>
38
38
  <a id="start-in-30-seconds"></a>
39
39
 
40
40
  ## Get started
41
41
 
42
- Wenlan runs as one local daemon. The desktop app carries that daemon inside it; the headless install gives you the same daemon without a window. Your AI clients reach the same knowledge base either way.
43
-
44
42
  <a id="start-with-the-app"></a>
45
43
  <a id="open-the-wiki"></a>
46
44
  <a id="desktop-app"></a>
47
45
 
48
- ### Desktop app
46
+ ### 1. Download and open Wenlan
49
47
 
50
- Download from the [Releases page](https://github.com/7xuanlu/wenlan/releases/latest):
48
+ [Download the app](https://github.com/wenlan-app/wenlan/releases/latest), then open it:
51
49
 
52
- - **macOS (Apple Silicon):** open the `.dmg` and drag Wenlan to Applications. The app is signed and notarized, so there is no warning on first launch. From the terminal instead: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/7xuanlu/wenlan/main/scripts/install-macos-app.sh)"` (downloads, checks the SHA-256, moves it to Applications).
53
- - **Windows x64:** run the `-setup.exe`. It is not signed yet, so when SmartScreen says "Windows protected your PC", choose "More info", then "Run anyway".
54
- - **Linux:** no desktop build yet; use the headless runtime below.
50
+ - **macOS (Apple Silicon):** open the `.dmg` and drag Wenlan to Applications. The app is signed and notarized.
51
+ - **Windows x64:** run the `-setup.exe`. It is not signed yet. If SmartScreen warns you, confirm you downloaded it from the official Releases page before choosing "More info" → "Run anyway".
52
+ - **Linux:** no desktop build yet; follow the [setup guide](docs/setup-with-ai.md#install-the-runtime) to use Wenlan with your AI tools without the app.
55
53
 
56
- The app bundles the daemon, CLI, and MCP connector, starts the daemon on launch, and offers to connect the AI clients it detects: the plugin for Claude Code and Codex, an MCP entry for the rest. To upgrade, drag the new app over the old one and open it (Wenlan 0.17.0 and older must be quit by hand first).
54
+ First launch downloads a model for local search, so keep an internet connection until setup finishes. [Download and privacy details](docs/PRIVACY.md#when-wenlan-reaches-the-network).
57
55
 
58
56
  <a id="claude-code-in-30-seconds"></a>
59
57
 
@@ -62,230 +60,242 @@ The app bundles the daemon, CLI, and MCP connector, starts the daemon on launch,
62
60
  <a id="mcp-setup"></a>
63
61
  <a id="mcp-clients"></a>
64
62
 
65
- ### Set up with your AI
63
+ ### 2. Start with your own note
64
+
65
+ Choose **Open notes** to enter Wenlan, then create a page of your own. The welcome screen also offers a sample to explore first. You can start writing without importing material, connecting an AI tool, or setting up an AI model.
66
+
67
+ ### 3. Bring in sources when you want
68
+
69
+ You can [import notes or ChatGPT / Claude conversation exports](#what-can-i-bring-in) whenever you are ready. Import is optional; you can begin with a page of your own.
70
+
71
+ ### 4. Connect AI tools when you want AI help
72
+
73
+ Connect Claude Code, Codex, or other supported AI tools when you want them to use the same knowledge. A connected AI can write pages without an additional local language model.
66
74
 
67
- Paste this into Claude Code, Codex, or another tool that can follow a setup guide:
75
+ <details>
76
+ <summary>Need help connecting? Ask your AI</summary>
77
+
78
+ Restart your AI tool if prompted. For help with setup, paste this into Claude Code, Codex, or another tool that can follow a setup guide:
68
79
 
69
80
  ```text
70
- Set up Wenlan for this AI client by following:
71
- https://raw.githubusercontent.com/7xuanlu/wenlan/main/docs/setup-with-ai.md
81
+ Connect this AI tool to Wenlan by following:
82
+ https://raw.githubusercontent.com/wenlan-app/wenlan/main/docs/setup-with-ai.md
72
83
 
73
- Install only what this client needs. Then verify the local runtime,
74
- its Wenlan connection, and a capture/recall round trip.
84
+ Reuse my existing Wenlan installation if available.
85
+ Set up only this AI tool, then check that it can save and find a test memory.
75
86
  ```
76
87
 
77
- The guide detects which client you are using and keeps client-specific commands out of this README. It does not configure every AI tool unless you ask it to.
88
+ </details>
78
89
 
79
- Need only the headless runtime on macOS Apple Silicon?
90
+ To organize a topic with a connected AI, open a work conversation worth keeping and ask:
80
91
 
81
- ```bash
82
- npx -y wenlan setup
83
- ```
92
+ > Turn the conclusions, reasoning, and sources about [topic] in this conversation into a Wenlan page with source citations.
93
+
94
+ You can also ask your AI to organize a topic from material you imported into a page.
84
95
 
85
- `npx` requires Node.js; without it, run `curl -fsSL https://raw.githubusercontent.com/7xuanlu/wenlan/main/install.sh | bash` then `wenlan setup --basic`.
96
+ When it's ready, open the new page in Wenlan, click a citation to check its source, and add your own thoughts. Next time you work on that topic, ask your AI to read this page before continuing.
86
97
 
87
- This downloads the prebuilt CLI, daemon, and MCP connector, starts the local runtime, and verifies it. No Rust toolchain or Cargo is required. Linux x64/ARM64 with glibc has an automated [shell setup path](docs/setup-with-ai.md#install-the-runtime); Windows x64 uses the matching archive from [Releases](https://github.com/7xuanlu/wenlan/releases/latest). macOS Intel currently has [no supported complete-runtime install](crates/wenlan-cli/README.md#macos-intel).
98
+ Background organization and automatic updates are optional and need a [configured model](#models-and-privacy). For terminal installation, other platforms, and updates, see the [setup guide](docs/setup-and-data.md#installation).
88
99
 
89
- Manual and client-specific instructions: [AI-assisted setup](docs/setup-with-ai.md) · [Claude Code plugin](plugin/README.md) · [Codex plugin](plugin-codex/README.md) · [CLI and MCP](crates/wenlan-cli/README.md).
100
+ Need help? [Setup guide](docs/setup-with-ai.md) · [Report a problem](https://github.com/wenlan-app/wenlan/issues). Issues are public: redact secrets, credentials, access tokens, identifiers, private or personal content from anything you share, including logs.
90
101
 
91
- ---
92
102
 
93
103
  <a id="what-does-wenlan-build"></a>
94
104
  <a id="why-it-compounds"></a>
95
105
 
96
- ## What is this?
106
+ <a id="what-is-this"></a>
97
107
 
98
- Wenlan turns documents, notes, and past AI conversations into a source-backed knowledge base that stays current as your work evolves. Sources remain traceable; decisions, lessons, and corrections become durable memories; both can support the same maintained Pages.
108
+ ## Your wiki, for you and your AI
109
+
110
+ - **Turn scattered material into connected topics.** Bring documents, notes, and AI conversations together in linked pages, with citations you can open and check.
111
+ - **Read it yourself. Use it with your AI.** Read and edit your pages, or ask Claude Code or Codex to use them for your next task.
112
+ - **Maintain knowledge without starting over.** Track source changes, update related pages, and keep their history. AI proposes revisions to pages you've edited for you to review.
113
+
114
+ Your pages are local Markdown files you can read, edit, and take with you.
99
115
 
100
116
  <p align="center">
101
117
  <picture>
102
- <source media="(max-width: 600px)" srcset="./docs/assets/wenlan-system-mobile.png">
103
- <img src="./docs/assets/wenlan-system.png" alt="Sources and memories independently support a maintained Page. Wenlan can rebuild a stale Page from its current support; optional conflict review can surface protected conflicts, and changes to human writing wait for the user." width="100%">
118
+ <source media="(max-width: 900px)" srcset="./docs/assets/wenlan-system-mobile.png">
119
+ <img src="./docs/assets/wenlan-system.png" alt="Sources and memories feed an illustrative Agent Loop page. It combines retry guidance with a concrete lesson: tests passed, but a line still covered a mobile label. Desktop and mobile visual checks become part of the completion criteria for later work with Claude or Codex." width="100%">
104
120
  </picture>
105
121
  </p>
106
122
 
107
123
  <a id="what-wenlan-is-not"></a>
108
124
 
109
- **Built for work that continues.** Wenlan is for researchers, writers, consultants, product teams, and software teams whose knowledge is scattered across documents, notes, and AI conversations. It turns that material into inspectable Pages that can improve across projects and weeks, not another chat history or isolated memory store. It is not a life-management system or a memory SDK embedded inside another product.
110
-
111
- **One knowledge system, three roles:**
112
-
113
- - **Sources keep the material Wenlan reads traceable.** Imported conversations remain as captured records; registered files sync their current contents as they change.
114
- - **Memories preserve what work teaches you.** Agents capture atomic decisions, lessons, corrections, and supersession with provenance.
115
- - **Pages compile current knowledge.** Wenlan turns relevant Sources and Memories into source-cited Markdown you can reuse, refresh, and review.
116
-
117
- **The LLM-wiki foundation, extended:**
118
-
119
- - **[LLM-wiki v1](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f):** Karpathy defined immutable Sources, an AI-maintained Markdown Wiki, and a co-evolving Schema of rules for structuring and maintaining it. Wenlan implements that foundation with [typed Memory fields](docs/technical-foundations.md#typed-memory-schema) and built-in rules for Page structure, provenance, citations, refresh, ownership, and review.
120
- - **[LLM-wiki v2](https://gist.github.com/rohitg00/2067ab416f7bbe447c1977edaaa681e2):** Rohitg00 added a memory lifecycle. Wenlan makes that direction concrete with traceable Sources, agent-captured Zettelkasten-style atomic Memories (one complete idea each), and maintained Pages built from both.
121
-
122
- For the complete workflow, see the [LLM-wiki implementation guide](https://wenlan.app/learn/distilled-wiki-pages-ai-memory).
123
-
124
- **Wenlan's distinctive move:** Sources and atomic Memories independently support maintained Pages. Memory history preserves how knowledge changed; Page history shows which current evidence supports the synthesis. Machine-maintained Pages can rebuild from current support, while changes to human writing wait as reviewable revisions.
125
+ The illustration shows a reusable working rule, not customer results or an automated page-generation test. [How sources, memories, and pages work together](docs/knowledge-guide.md#sources-and-pages).
125
126
 
126
127
  <a id="knowledge-graph"></a>
127
128
 
128
- ### A knowledge graph that gets more useful over time
129
+ ### Follow the connections behind a page
129
130
 
130
- The entity-relation graph is one part of Wenlan's wider connected wiki. **Knowledge Pages** hold maintained synthesis, **Entities** anchor reusable people, projects, and concepts, **Source Pages** make imported or synchronized material inspectable, and atomic **Memories** preserve decisions and changes. They work through separate, explicit links: Page-to-Page wikilinks, Page evidence, Memory-to-Entity links, and directed Entity relations.
131
+ The Agent Loop example connects a retry rule, a lesson from a UI review, and an acceptance checklist you can reuse.
131
132
 
132
133
  <p align="center">
133
134
  <picture>
134
- <source media="(max-width: 600px)" srcset="./docs/assets/wenlan-knowledge-network-mobile.png">
135
- <img src="./docs/assets/wenlan-knowledge-network.png" alt="Conceptual model of Wenlan's connected knowledge system, with Knowledge Pages, Source Pages, atomic Memories, and Entities connected through Page links, evidence, Memory-to-Entity links, and Entity relations." width="100%">
135
+ <source media="(max-width: 900px)" srcset="./docs/assets/wenlan-knowledge-network-mobile.png">
136
+ <img src="./docs/assets/wenlan-knowledge-network.png" alt="Illustrative Agent Loop page citing an agent-design guide and UI-review note; named memories include retry guidance and a visual-check lesson, linked to a reusable acceptance checklist and related concepts and tools." width="100%">
136
137
  </picture>
137
138
  </p>
138
139
 
139
- Within the entity graph, a configured enrichment model extracts typed Entities, observations, and directed relations from Memories. Entity linking and resolution reuse existing nodes instead of treating every mention as new; each Memory keeps its Source and can link to multiple Entities. [How the connected model is stored ->](docs/technical-foundations.md#connected-knowledge-model)
140
-
141
- - **Meaning and direction:** Relations use a seeded vocabulary such as `uses`, `part_of`, `contradicts`, and `replaced_by`; unknown types fall back to `related_to` and become reviewable vocabulary proposals.
142
- - **Strength and provenance:** A relation can store confidence, an explanation, and its source Memory, so stronger and weaker claims remain distinguishable and inspectable.
143
- - **Communities that compound:** Label propagation groups Entities by relation density, weighted by the relation count between each pair. These groups can organize optional corpus summaries while Entity links add retrieval context.
144
- - **Correction without erasure:** Related claims, corrections, and explicit supersession stay inspectable together while original Sources and Memory history remain.
145
-
146
- During retrieval, dense entity matching finds query-relevant entities. When eligible graph links exist, the default graph-memory stream boosts linked Memories as a third [RRF](https://cormack.uwaterloo.ca/cormacksigir09-rrf.pdf) signal. The path is data- and scope-dependent, and Space boundaries (Spaces are defined under Capabilities) still apply. [How the graph path works ->](docs/technical-foundations.md#graph-assisted-retrieval)
147
-
148
140
  <a id="retrieval"></a>
141
+ <a id="retrieval-across-words-meaning-and-connections"></a>
149
142
 
150
- ### Retrieval across words, meaning, and connections
151
-
152
- Wenlan's core search is a local hybrid pipeline, not a single vector lookup. Each stage has a different job:
153
-
154
- - **Exact wording, [SQLite FTS5](https://www.sqlite.org/fts5.html):** a full-text index finds literal terms, identifiers, and phrases.
155
- - **Similar meaning, FastEmbed + [`Qdrant/bge-base-en-v1.5-onnx-Q`](https://huggingface.co/Qdrant/bge-base-en-v1.5-onnx-Q):** a quantized English model creates 768-dimensional embeddings; [libSQL cosine DiskANN](https://turso.tech/blog/approximate-nearest-neighbor-search-with-diskann-in-libsql) indexes them for approximate nearest-neighbor retrieval.
156
- - **Combined ranking, weighted [RRF](https://cormack.uwaterloo.ca/cormacksigir09-rrf.pdf) (`k = 60`):** lexical and semantic rank lists are fused without pretending their raw scores share a scale; cosine similarity also weights the vector contribution.
157
- - **Connected context, graph-memory stream:** eligible entity links add a third RRF signal while the active read scope still filters returned Memories.
158
- - **Optional precision, cross-encoder reranking:** unlike embeddings, [`jinaai/jina-reranker-v1-turbo-en`](https://huggingface.co/jinaai/jina-reranker-v1-turbo-en) or [`BAAI/bge-reranker-base`](https://huggingface.co/BAAI/bge-reranker-base) reads each query-candidate pair and reorders the smaller pool; reranking is off by default.
159
-
160
- Page, episodic, and fact channels are opt-in and degrade to the remaining search signals if unavailable. Space still limits the read scope. [Methods, defaults, and limitations ->](docs/technical-foundations.md)
143
+ Follow a page to related concepts and evidence. [How graph and search work](docs/knowledge-guide.md#graph-and-search).
161
144
 
162
145
  <a id="what-makes-wenlan-distinct"></a>
163
146
  <a id="why-is-wenlan-different"></a>
164
147
  <a id="two-lifecycles"></a>
148
+ <a id="two-lifecycles-one-maintained-knowledge-system"></a>
165
149
 
166
- ### Two lifecycles, one maintained knowledge system
150
+ ### Knowledge changes. History stays.
167
151
 
168
- A generated wiki can go stale; a memory store can fragment into disconnected facts. Wenlan links two lifecycles without collapsing them into one layer.
152
+ New experience improves your notes without hiding earlier decisions. This example replaces “tests passed, so the UI is done” with “check tests and the desktop and mobile views,” keeping the reason and evidence for the change.
169
153
 
170
154
  <p align="center">
171
155
  <picture>
172
- <source media="(max-width: 600px)" srcset="./docs/assets/wenlan-lifecycle-mobile.png">
173
- <img src="./docs/assets/wenlan-lifecycle.png" alt="An earlier memory remains linked after an explicit superseding capture. When a Page is stale, Wenlan rebuilds it from current Sources and Memories, records the revision, and stages changes to human writing for review." width="100%">
156
+ <source media="(max-width: 900px)" srcset="./docs/assets/wenlan-lifecycle-mobile.png">
157
+ <img src="./docs/assets/wenlan-lifecycle.png" alt="Illustrative before and after: “tests passed, so the UI is done” becomes “check tests and desktop and mobile views”; the evidence is a mobile label obscured despite passing tests. During automatic refresh, changes to a page you edited are proposed for your review." width="100%">
174
158
  </picture>
175
159
  </p>
176
160
 
177
- #### Atomic Memory
161
+ <a id="local-markdown"></a>
162
+ <a id="atomic-memory"></a>
163
+ <a id="maintained-page"></a>
164
+ <a id="local-markdown-that-works-with-obsidian"></a>
178
165
 
179
- `CAPTURE -> CLASSIFY -> ENRICH -> LINK -> RECONCILE`
166
+ Review applies to AI updates; direct file edits and forced regeneration follow different rules. [Updates, review, and local files](docs/knowledge-guide.md#updates-and-history).
180
167
 
181
- Capture and explicit supersession are core. Model-backed stages run only when the matching model is configured, and the reconcile pass is off by default.
168
+ ### Already using Obsidian with AI plugins?
182
169
 
183
- | Operation | What Wenlan does |
184
- |---|---|
185
- | **Capture** | Agents write one complete, self-contained idea per Memory, following the Zettelkasten atomic-note principle instead of saving the whole conversation. |
186
- | **Classify** | With the on-device model, Wenlan assigns `identity`, `preference`, `decision`, `lesson`, `gotcha`, or `fact`; a precise type supplied by the caller remains authoritative. |
187
- | **Enrich** | With the on-device model, adds structured fields, retrieval cues, event dates, quality, importance, and tags when available. |
188
- | **Link** | Retains provenance and, when enrichment is enabled, connects Memories to entities and relations in the knowledge graph. |
189
- | **Reconcile** | Explicit replacements preserve a `supersedes` chain. A replacement from an agent whose trust level is below full queues for human review automatically, no flag required. An optional on-device pass can also queue protected conflicts for review instead of overwriting history; that pass is off by default and must be explicitly enabled. |
170
+ You can use [Copilot](https://docs.obsidiancopilot.com/agent-mode-and-tools/) for AI-assisted reading and editing, [Smart Connections](https://github.com/brianpetro/obsidian-smart-connections) to find related notes, and [Obsidian Git](https://github.com/Vinzent03/obsidian-git) to keep version history. That gives you flexibility, but choosing how the plugins work together, when to organize new material, and how to update older pages is still a workflow you arrange.
190
171
 
191
- Advanced configuration: set `WENLAN_ENABLE_DUAL_POOL_RESOLVE=1` to enable that reconcile pass.
172
+ Wenlan connects topic-page creation, source-change tracking, page updates, and revision history in one workflow, saving you the work of assembling and maintaining those steps yourself. You can read the resulting knowledge directly or let Claude Code, Codex, and other tools build on it.
192
173
 
193
- #### Maintained Page
174
+ Ask your connected AI to update a page, or [configure a model](#models-and-privacy) to enable background updates. When AI updates a page you've edited, Wenlan proposes a revision for you to review.
194
175
 
195
- `DISTILL -> CITE -> TRACK -> REFRESH -> REVIEW`
176
+ Connect your existing Obsidian vault as a read-only source without moving your notes. Wenlan does not modify the vault or sync changes back to it.
196
177
 
197
- | Operation | What Wenlan does |
198
- |---|---|
199
- | **Distill** | Compiles related Sources and Memories into one Markdown Page. |
200
- | **Cite** | Retains citation records and verification status; automatic refresh discards a draft when its citation-support check fails. |
201
- | **Track** | Records which evidence supports the Page, why it became stale, and a bounded changelog. |
202
- | **Refresh** | When a Page is marked stale, rebuilds the eligible machine-maintained Page from current evidence. |
203
- | **Review** | Turns changes to a Page you edited into a proposed revision instead of a silent rewrite. |
204
178
 
205
- For example, import a design document and capture a debugging decision in Codex. Wenlan can compile one Page that cites both. When that Page is refreshed, it rebuilds from its current support; if you have edited it, the proposed change waits for review.
179
+ <a id="what-you-get"></a>
180
+ <a id="what-can-it-do"></a>
181
+ <a id="what-can-i-bring-in"></a>
206
182
 
207
- <a id="local-markdown"></a>
183
+ ## Capabilities
208
184
 
209
- ### Local Markdown that works with Obsidian
185
+ ### Bring your material in
210
186
 
211
- Your durable synthesis remains ordinary files rather than a proprietary editor format:
187
+ - **Keep useful AI conversations:** Import ChatGPT or Claude export ZIPs without duplicating conversations already imported.
188
+ - **Bring your existing notes:** Import Markdown, text files, or text-extractable PDFs, by file or folder; connect an Obsidian vault as a source. Scanned PDFs need text extraction first.
189
+ - **Quick Capture:** Save a thought or decision directly in the desktop app without opening an AI chat.
190
+ - **[Capture decisions with your AI](https://wenlan.app/learn/ai-work-memory):** Ask your AI tool to save decisions, lessons, corrections, preferences, and facts, with their sources and what they replace.
191
+ - **Bring in another wiki:** Import an external OKF wiki through the CLI or API, preserving source references and links. Reimporting Wenlan's own OKF exports is not supported.
212
192
 
213
- - **Plain files:** Pages and session notes stay as Markdown under `~/.wenlan/`.
214
- - **Inspectable history:** Distill and handoff workflows can commit logical file batches to a local git repository.
215
- - **Obsidian coexistence:** Wenlan reads an existing vault as a source. Symlink `~/.wenlan/pages/` into the vault or export a Page from the desktop app; your edits remain human-owned, and later machine refreshes become reviewable revisions.
193
+ ### Explore your personal wiki
216
194
 
217
- The local history is directly inspectable:
195
+ - **[Editable, source-linked Pages](https://wenlan.app/docs/source-backed-pages):** Turn related documents and Memories into Markdown Pages with citations and links to other Pages.
196
+ - **Cards or lists:** Browse Pages, Entities, and Spaces in the view that suits you.
197
+ - **[Knowledge graph](docs/technical-foundations.md#graph-data-and-entity-resolution):** Explore connections between people, projects, claims, and the Memories supporting them.
218
198
 
219
- ```text
220
- $ git -C ~/.wenlan log --oneline
221
- a1b2c3d distill: 4 pages
222
- 9f8e7d6 session: embedding-work
223
- ```
199
+ ### Use it with your AI tools
224
200
 
225
- ---
201
+ - **[Pick up in another AI tool](https://wenlan.app/docs/architecture):** Connected Claude Code, Codex, and other MCP clients can use the same local Pages and Memories as the desktop app and CLI.
202
+ - **[Search by words and meaning](docs/technical-foundations.md#retrieval-pipeline):** Combine exact matches with local semantic search; graph connections can add relevant context.
203
+ - **[Optional deeper search](docs/technical-foundations.md#optional-channels-and-defaults):** Search Pages and finer-grained Memories, with optional reranking to refine results.
204
+ - **[Keep projects separate](https://wenlan.app/docs/spaces):** Use Spaces to choose which work, personal, client, or repository knowledge your AI searches.
205
+ - **Web access (experimental):** Connect a supported web AI client to your whole library, or to one Space you choose, while your computer is online. Queries and results pass through a relay; see [how access works and its privacy limits](docs/PRIVACY.md#pre-release-standalone-wenlan-relay-connector).
206
+ - **Connect your own tools:** Send prepared text, webpage content, or Memories through the local HTTP API. It accepts content, not URLs to fetch.
226
207
 
227
- <a id="what-you-get"></a>
228
- <a id="what-can-it-do"></a>
229
- <a id="what-can-i-bring-in"></a>
208
+ ### Keep knowledge current
230
209
 
231
- ## Capabilities
210
+ Optional background organization and Page updates need a [configured model](#models-and-privacy).
211
+
212
+ - **Incremental sync:** File and folder Sources track changes in the background. Obsidian vaults stay read-only and resync on demand.
213
+ - **[Organize saved knowledge](docs/technical-foundations.md#typed-memory-schema):** A configured model can add types, structured details, relevant dates, tags, search cues, and graph links to Memories.
214
+ - **Updates backed by sources:** Automatic refresh rejects drafts with insufficient citations. AI-generated Pages can update; changes to Pages you have edited become review proposals.
215
+ - **[Review where judgment matters](https://wenlan.app/docs/review-and-trust):** Review protected conflicts, Page revisions, entity merges, and new vocabulary.
216
+ - **See what is happening:** Check progress and blockers in Activity. Configured sync, Steep (background enrichment), and eligible Page updates can continue after the app window closes while the local service runs.
217
+
218
+ ### Keep ownership and control
219
+
220
+ - **[Local, inspectable knowledge](https://wenlan.app/learn/local-first-ai-memory):** Keep Markdown Pages, citations, revisions, and Obsidian exports; Memories and graph data live in local libSQL.
221
+ - **Take your wiki with you:** Export eligible Pages across Spaces as an OKF v0.2 wiki from Settings or the CLI. This is a wiki export, not a full database backup.
222
+ - **[Model choice](docs/technical-foundations.md#model-roles):** Base retrieval stays local. Steep, the optional background enrichment and synthesis, can use on-device Qwen, a local endpoint, or a cloud model; remote providers receive the content needed for their tasks.
223
+ - **Health checks and reviewed repairs:** [Doctor](https://wenlan.app/docs/diagnostics-and-issue-reports) and [lint](plugin/skills/lint/SKILL.md) report problems without rewriting knowledge. For supported findings, the app lets you preview and explicitly apply a repair, then verify it.
224
+
225
+ **Start with a note you want to keep.** [Get started](#start-in-30-seconds). Star this repo if you'd like to come back and try it later.
232
226
 
233
- - **Chat import:** Bring in ChatGPT or Claude export ZIPs; Wenlan automatically skips conversations already imported.
234
- - **Document Sources:** Ingest one `.md`, `.txt`, or text-extractable `.pdf` file; recurse through a folder of them; or index Markdown from an Obsidian vault.
235
- - **Incremental sync:** Regular file and folder Sources track changes in the background; Obsidian vaults stay read-only and resync on demand.
236
- - **Atomic Memory:** MCP clients save one complete decision, lesson, correction, preference, or fact, with [provenance and supersession](https://wenlan.app/learn/ai-memory-provenance) recording where it came from and what it replaces.
237
- - **[Typed enrichment](docs/technical-foundations.md#typed-memory-schema):** A configured model classifies each Memory, then adds the structured fields defined for its type, plus dates, tags, retrieval cues, and graph links.
238
- - **[Source-backed Pages](https://wenlan.app/docs/source-backed-pages):** Distill related Sources and Memories into Markdown Pages with source references and `[[wikilinks]]`; the daemon can verify and record per-claim citations.
239
- - **Citation-gated refresh:** Automatic refresh rejects citation-poor drafts; machine Pages update while human edits become reviewable revisions.
240
- - **[Hybrid retrieval](docs/technical-foundations.md#retrieval-pipeline):** FTS5 finds exact words, local BGE embeddings find meaning, and RRF fuses their ranks; graph links can add context.
241
- - **[Retrieval channels](docs/technical-foundations.md#optional-channels-and-defaults):** Optional Page, episodic, and per-fact channels widen recall; cross-encoder reranking can improve precision.
242
- - **[Knowledge graph](docs/technical-foundations.md#graph-data-and-entity-resolution):** Typed entities, relations, and observations connect people, projects, claims, and supporting Memories.
243
- - **[Human-in-the-loop review](https://wenlan.app/docs/review-and-trust):** Routine work stays automatic; protected conflicts, Page revisions, entity merges, and new vocabulary wait for judgment.
244
- - **[Spaces](https://wenlan.app/docs/spaces):** Keep work, personal, client, and repository knowledge inside an explicit retrieval scope.
245
- - **[Local daemon + MCP](https://wenlan.app/docs/architecture):** One lightweight Rust daemon remains the local source of truth. The desktop app and CLI call it directly; AI clients use small MCP connectors to reach the same knowledge.
246
- - **Custom integrations:** The localhost HTTP API accepts prepared text, webpage content, and Memories from other capture workflows.
247
- - **Background maintenance:** The daemon keeps working after the desktop app closes, running configured sync, enrichment, citation work, and eligible Page refresh.
248
- - **[Model choice](docs/technical-foundations.md#model-roles):** Base retrieval stays local; enrichment and synthesis can use on-device Qwen, a local endpoint, or a configured cloud model.
249
- - **[Inspectable ownership](https://wenlan.app/learn/markdown-local-index-ai-memory):** Memories and graph data stay in local libSQL; Markdown, citations, revisions, git history, and Obsidian exports remain inspectable.
250
- - **Read-only health checks:** [`doctor`](https://wenlan.app/docs/diagnostics-and-issue-reports) verifies the runtime; [`lint`](plugin/skills/lint/SKILL.md) finds malformed citations, orphan links, broken embeddings, and search-index or graph integrity problems without rewriting knowledge.
251
-
252
- ---
253
227
 
254
228
  <a id="how-wenlan-works"></a>
255
229
  <a id="how-does-it-work"></a>
256
230
 
257
231
  ## Daily workflow
258
232
 
259
- The system above becomes a small daily loop: start with relevant knowledge, capture what matters while you work, close with a handoff, and let Wenlan refine what should return next time. Each pass leaves the same knowledge base sharper instead of creating another disconnected history.
233
+ Once your AI tool is connected, you can ask in plain language:
234
+
235
+ With the Wenlan plugin installed, you can also use the slash commands below.
236
+
237
+ ### Before starting a task
238
+
239
+ > Find what I've saved in Wenlan about [topic], including earlier decisions and their sources.
240
+
241
+ Shortcut: `/recall [topic]`
242
+
243
+ ### When you reach a useful conclusion
244
+
245
+ > Save this decision and why we made it in Wenlan, with its sources.
260
246
 
261
- The loop has four steps:
247
+ Shortcut: `/capture [decision, reasons, and sources]`
262
248
 
263
- 1. **Capture and find knowledge while you work.** `/capture <thing>` saves a decision, lesson, gotcha, or fact with its source. `/recall <query>` retrieves only what is relevant instead of loading your whole history.
264
- 2. **Find current knowledge.** Open a relevant Page, search, or use `/recall <query>`; `/brief [topic]` reads the Brief — the Space's rolling project snapshot, first written by `/handoff` — and a topic appends separately labeled context from that same Space. Clients without plugin commands use the equivalent page, search, recall, and brief tools.
265
- 3. **Close the loop.** `/handoff` records what changed and applies typed item-level updates to the current Space Brief.
266
- 4. **Keep the wiki current.** `/distill` deliberately creates or refreshes pages. Between sessions, optional model-backed passes can enrich captures, connect related entities, and refresh eligible pages. `/lint` checks knowledge health; `/curate` brings proposed revisions and any conflict-review items created by the optional reconcile pass to you.
249
+ ### When a topic deserves a page
267
250
 
268
- ### Offline queue (outbox)
251
+ > Create or update a Wenlan page on [topic] from the material we've saved. Keep the citations.
269
252
 
270
- If the local daemon is unreachable, `wenlan capture` and `wenlan brief update` write their requests to a durable local outbox and exit successfully. When the daemon returns, it drains those writes through the normal HTTP routes; inspect the queue with `wenlan outbox status` or request an immediate replay with `wenlan outbox drain`. A write the daemon rejects outright (a 4xx, such as failing the content quality gate) moves to `outbox/failed/` with a receipt instead of retrying forever; a transport failure or server error (5xx) leaves it queued for the next drain, which runs automatically every 60 seconds.
253
+ To organize saved knowledge into pages: `/distill`
254
+
255
+ Open the page in Wenlan to read, edit, and check its sources. Next time, ask your AI to use it for your next task.
256
+
257
+ ### When you wrap up
258
+
259
+ > Save this session's progress, decisions, and open questions in Wenlan so we can pick up next time.
260
+
261
+ Shortcut: `/handoff`
262
+
263
+ <details>
264
+ <summary>Plugin commands and maintenance</summary>
265
+
266
+ - **Read the project summary:** `/brief [topic]` reads the current Space's project summary; an optional topic adds related context from that Space.
267
+ - **Check and review:** `/lint` checks knowledge health; `/curate` reviews pending captures or revisions.
268
+
269
+ These shortcuts are available through the Wenlan plugins. Other connected clients use the equivalent MCP tools. Optional background organization and Page updates need a [configured model](#models-and-privacy).
270
+
271
+ [Full command reference](plugin/skills/README.md).
272
+
273
+ </details>
274
+
275
+ <a id="offline-queue-outbox"></a>
276
+
277
+ [CLI offline writes and replay](docs/setup-and-data.md#offline-queue).
278
+
279
+ <a id="models-and-privacy"></a>
271
280
 
272
281
  ### Models and privacy
273
282
 
274
- - **Local base retrieval:** The [BGE embedding model](https://huggingface.co/Qdrant/bge-base-en-v1.5-onnx-Q) runs through FastEmbed on your machine for hybrid search and needs no API key.
275
- - **Optional on-device synthesis:** Enrichment and Page synthesis can use user-selected [`Qwen3 4B`](https://huggingface.co/unsloth/Qwen3-4B-Instruct-2507-GGUF) or [`Qwen3.5 9B`](https://huggingface.co/unsloth/Qwen3.5-9B-GGUF) through [llama.cpp](https://github.com/ggml-org/llama.cpp). Wenlan does not download or activate a language model until you choose one.
276
- - **Other providers:** An OpenAI-compatible local endpoint such as Ollama or LM Studio, or a configured cloud provider, can supply model-backed enrichment and synthesis instead.
277
- - **Cloud disclosure:** If the model endpoint you select is remote, Wenlan sends that task's system and user prompts to it. Local retrieval and on-device synthesis stay on your machine.
278
- - **Optional usage statistics:** Off by default. If you opt in, Wenlan sends bounded operation counts, version and platform—not your knowledge content or an installation ID. See [privacy](docs/PRIVACY.md#telemetry).
283
+ Use your connected AI to write pages without installing an additional local language model. Background organization and automatic updates are optional and need a configured model.
279
284
 
280
- Full workflow reference: [plugin/skills](plugin/skills/README.md). Technical model roles: [technical foundations](docs/technical-foundations.md#model-roles).
285
+ - **Search stays local.** The search model downloads at first launch and runs on your machine, without an API key.
286
+ - **Connected AI can receive your knowledge.** A cloud AI client can send retrieved content to its provider. Choosing a cloud model for background organization also sends the material needed for that task. Local storage does not make those interactions local.
287
+ - **Usage statistics are off by default.** If you opt in, Wenlan sends limited operation counts, version, and platform, not your knowledge content or an installation ID. [Details](docs/PRIVACY.md#telemetry).
288
+
289
+ See [network and privacy details](docs/PRIVACY.md#when-wenlan-reaches-the-network) for downloads, update checks, remote images, and optional remote access.
290
+
291
+ [Model choices and configuration](docs/setup-and-data.md#models).
281
292
 
282
293
  ### Your data and uninstall
283
294
 
284
- Nothing is locked in. Pages and session notes are Markdown under `~/.wenlan/`; memories live in one libSQL database under the platform data directory (`~/Library/Application Support/wenlan/` on macOS, `~/.local/share/wenlan/` on Linux, `%LOCALAPPDATA%\wenlan\` on Windows). Copy those two folders to back up or move a Wenlan. An install upgraded from Origin still holds a full copy of its data in `~/.origin/` and in the sibling `origin` data folder (`~/Library/Application Support/origin/` on macOS, `~/.local/share/origin/` on Linux, `%LOCALAPPDATA%\origin\` on Windows); delete or copy those two as well.
295
+ Your pages and session notes are Markdown files; memories and the graph live in a local database. You can keep your knowledge when you uninstall the app.
285
296
 
286
- To uninstall: the app's *Run Wenlan in background at login* toggle removes the launch registration — turn it off, quit, and delete `Wenlan.app` or run the Windows uninstaller, then delete the folders above. `wenlan background off` only stops the daemon and disables autostart; it does not remove the launch registration, so a CLI-only install should instead follow the daemon uninstall bullet in [PRIVACY.md](docs/PRIVACY.md). The paths Wenlan writes are listed there.
297
+ [File locations, backup, and removal](docs/setup-and-data.md#backup-and-removal).
287
298
 
288
- ---
289
299
 
290
300
  <a id="evaluation"></a>
291
301
 
@@ -300,7 +310,6 @@ This is a retrieval-only snapshot, not a claim about end-to-end answer quality.
300
310
  | LME_S (deep, 90 Q) | 87.7% | 0.815 | 0.822 |
301
311
  <!-- EVAL_SNAPSHOT_END -->
302
312
 
303
- ---
304
313
 
305
314
  <a id="learn-more"></a>
306
315
 
@@ -316,6 +325,7 @@ More detailed documentation, concepts, and comparisons:
316
325
 
317
326
  ### Workflow guides
318
327
 
328
+ - [Build your first LLM Wiki](https://wenlan.app/learn/distilled-wiki-pages-ai-memory): work through a three-source example, check its citations, and review what changes when a source is updated.
319
329
  - [Build a client project knowledge base for consulting](https://wenlan.app/learn/build-client-project-knowledge-base-for-consulting)
320
330
  - [Build an investment research knowledge base](https://wenlan.app/learn/build-investment-research-knowledge-base)
321
331
  - [Build a product research knowledge base before writing a PRD](https://wenlan.app/learn/build-product-research-knowledge-base-for-prd)
@@ -327,7 +337,7 @@ More detailed documentation, concepts, and comparisons:
327
337
  - [Why a living wiki, not just AI memory](https://wenlan.app/learn/ai-work-memory): the problem and product model in depth.
328
338
  - [MCP memory server](https://wenlan.app/learn/mcp-memory-server): how Wenlan exposes knowledge across AI tools.
329
339
  - [Local-first AI memory](https://wenlan.app/learn/local-first-ai-memory): data, privacy, and control.
330
- - [Markdown and local index](https://wenlan.app/learn/markdown-local-index-ai-memory): storage, retrieval, and ownership.
340
+ - [Markdown and local index](https://wenlan.app/learn/local-first-ai-memory): storage, retrieval, and ownership.
331
341
  - [AI agent handoff loop](https://wenlan.app/learn/ai-agent-handoff-loop): carrying work cleanly into the next session.
332
342
  - [Research knowledge base from papers](https://wenlan.app/learn/source-backed-research-knowledge-base): build an inspectable literature matrix and source-backed synthesis from papers you already have.
333
343
 
@@ -337,7 +347,6 @@ More detailed documentation, concepts, and comparisons:
337
347
  - [Wenlan vs claude-mem](https://wenlan.app/learn/wenlan-vs-claude-mem)
338
348
  - [Wenlan vs Superlocal Memory](https://wenlan.app/learn/wenlan-vs-superlocal-memory)
339
349
 
340
- ---
341
350
 
342
351
  ## Contributing
343
352
 
@@ -356,25 +365,17 @@ pnpm build:all
356
365
 
357
366
  `pnpm dev:all` is the supported development entry point for the desktop app. It keeps development ports, data, process ownership, app identity, MCP sockets, and Remote Access state separate from the installed production runtime; a debug app started without that isolation refuses to run. See this repository's [AGENTS.md](AGENTS.md) and [CONTRIBUTING.md](.github/CONTRIBUTING.md), plus the in-tree [app/AGENTS.md](app/AGENTS.md), for the complete development workflow. Security reports: [SECURITY.md](.github/SECURITY.md). Privacy policy: [PRIVACY.md](docs/PRIVACY.md). Please also read the [Code of Conduct](.github/CODE_OF_CONDUCT.md).
358
367
 
359
- ---
360
368
 
361
369
  <a id="code-signing-policy"></a>
362
370
 
363
371
  ## Code signing policy
364
372
 
365
- Free code signing provided by [SignPath.io](https://about.signpath.io), certificate by [SignPath Foundation](https://signpath.org).
366
-
367
- - **Authors:** [@7xuanlu](https://github.com/7xuanlu), who may commit to this repository without a further review.
368
- - **Reviewers:** [@7xuanlu](https://github.com/7xuanlu). Every change from someone who is not a committer arrives as a pull request and is reviewed before it merges.
369
- - **Approvers:** [@7xuanlu](https://github.com/7xuanlu), who approves each signing request and so decides which release is signed.
370
-
371
- Multi-factor authentication is required of every maintainer, on GitHub and on SignPath, and nobody is added to either without it. Releases are built only by the tagged release workflow in this repository, on GitHub-hosted runners, from the commit the tag points at.
373
+ macOS desktop releases are Developer ID signed and notarized. Windows installers are not signed yet.
372
374
 
373
- **Privacy policy:** [PRIVACY.md](docs/PRIVACY.md) — what Wenlan stores, where it stores it, and each case we know of in which it reaches the network. How each platform is signed: [docs/code-signing.md](docs/code-signing.md).
375
+ Releases are built from tagged commits by this repository's release workflow on GitHub-hosted runners. Maintainers must use multi-factor authentication on GitHub.
374
376
 
375
- The SignPath application is pending. Windows installers are not signed yet.
377
+ [Platform signing details](docs/code-signing.md) · [Privacy policy](docs/PRIVACY.md).
376
378
 
377
- ---
378
379
 
379
380
  <a id="license"></a>
380
381
 
@@ -387,7 +388,6 @@ Wenlan uses two licenses, one per part of the repository.
387
388
 
388
389
  The split is deliberate. Apache-2.0 code may be used inside an AGPL-3.0 program, so the desktop app builds on the runtime without either license being violated.
389
390
 
390
- ---
391
391
 
392
392
  <a id="acknowledgments"></a>
393
393
 
package/install.js CHANGED
@@ -11,7 +11,7 @@ const fs = require("fs");
11
11
  const path = require("path");
12
12
 
13
13
  const VERSION = require("./package.json").version;
14
- const REPO = "7xuanlu/wenlan";
14
+ const REPO = "wenlan-app/wenlan";
15
15
 
16
16
  // Maps Node platform-arch to the release bundle filename shipped by release.yml.
17
17
  // Each bundle contains wenlan, wenlan-server, and wenlan-mcp (or .exe on Windows).
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "wenlan-mcp",
3
- "version": "0.18.16",
4
- "description": "Local-first memory layer for AI agents - MCP server",
3
+ "version": "0.19.1",
4
+ "description": "MCP server for Wenlan, a living knowledge base your agents build as they work",
5
5
  "keywords": [
6
6
  "mcp",
7
7
  "ai-memory",
@@ -17,9 +17,9 @@
17
17
  "chatgpt",
18
18
  "wenlan"
19
19
  ],
20
- "homepage": "https://github.com/7xuanlu/wenlan#readme",
20
+ "homepage": "https://github.com/wenlan-app/wenlan#readme",
21
21
  "bugs": {
22
- "url": "https://github.com/7xuanlu/wenlan/issues"
22
+ "url": "https://github.com/wenlan-app/wenlan/issues"
23
23
  },
24
24
  "author": "7xuanlu <h164654156465@gmail.com>",
25
25
  "license": "Apache-2.0",
@@ -49,7 +49,7 @@
49
49
  ],
50
50
  "repository": {
51
51
  "type": "git",
52
- "url": "https://github.com/7xuanlu/wenlan",
52
+ "url": "https://github.com/wenlan-app/wenlan",
53
53
  "directory": "crates/wenlan-mcp/npm"
54
54
  }
55
55
  }