@autorag/librarian 2.10.0 → 2.10.2

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 (94) hide show
  1. package/LICENSE +195 -21
  2. package/NOTICE +16 -23
  3. package/README.md +399 -182
  4. package/dist/agent/agent.d.ts +163 -20
  5. package/dist/agent/context-token-guard.d.ts +23 -0
  6. package/dist/agent/evidence-ledger.d.ts +54 -5
  7. package/dist/agent/evidence-persistence.d.ts +24 -0
  8. package/dist/agent/jev-extension.d.ts +7 -4
  9. package/dist/agent/jikji-find-tool.d.ts +1 -0
  10. package/dist/agent/pi-session.d.ts +35 -2
  11. package/dist/agent/request-limits.d.ts +20 -0
  12. package/dist/agent/search-all-tool.d.ts +1 -0
  13. package/dist/agent/search-documents.d.ts +1 -1
  14. package/dist/agent/search-single-datasource-tool.d.ts +1 -0
  15. package/dist/agent/system-prompt.d.ts +0 -2
  16. package/dist/agent/tool-burst-guard.d.ts +26 -0
  17. package/dist/cli/config.d.ts +39 -23
  18. package/dist/cli/index.js +4195 -1478
  19. package/dist/cloud/config.d.ts +33 -9
  20. package/dist/cloud/credential.d.ts +17 -0
  21. package/dist/cloud/errors.d.ts +6 -6
  22. package/dist/cloud/index.d.ts +5 -4
  23. package/dist/cloud/jev-backend.d.ts +92 -0
  24. package/dist/cloud/models.d.ts +4 -4
  25. package/dist/cloud/oauth-login.d.ts +3 -3
  26. package/dist/cloud/provider.d.ts +16 -11
  27. package/dist/cloud/token.d.ts +2 -2
  28. package/dist/core.d.ts +2 -1
  29. package/dist/core.js +4200 -1506
  30. package/dist/datasource/aliased-skill.d.ts +2 -2
  31. package/dist/datasource/connector-skill.d.ts +2 -2
  32. package/dist/datasource/crawler-skill.d.ts +19 -2
  33. package/dist/datasource/described-skill.d.ts +2 -2
  34. package/dist/datasource/index.d.ts +1 -1
  35. package/dist/datasource/retry.d.ts +49 -0
  36. package/dist/datasource/sidecar/config.d.ts +26 -0
  37. package/dist/datasource/sidecar/descriptors.d.ts +67 -0
  38. package/dist/datasource/sidecar/fusion.d.ts +25 -0
  39. package/dist/datasource/sidecar/index.d.ts +131 -0
  40. package/dist/datasource/sidecar/methods.d.ts +27 -0
  41. package/dist/datasource/skills/clawgallery/skill.d.ts +4 -4
  42. package/dist/datasource/skills/discrawl/skill.d.ts +5 -5
  43. package/dist/datasource/skills/github-gist/skill.d.ts +2 -2
  44. package/dist/datasource/skills/lazykatok/skill.d.ts +5 -5
  45. package/dist/datasource/skills/mailcrawl/skill.d.ts +2 -2
  46. package/dist/datasource/skills/obsidian/skill.d.ts +5 -5
  47. package/dist/datasource/types.d.ts +16 -2
  48. package/dist/embedding-runtime/cache.d.ts +9 -0
  49. package/dist/embedding-runtime/index.d.ts +6 -6
  50. package/dist/embedding-runtime/manifest.d.ts +0 -12
  51. package/dist/embedding-runtime/types.d.ts +1 -1
  52. package/dist/index.d.ts +1 -2
  53. package/dist/index.js +4454 -1757
  54. package/dist/jikji/client.d.ts +13 -2
  55. package/dist/jikji/index.d.ts +1 -1
  56. package/dist/jikji/path-map.d.ts +9 -0
  57. package/dist/jikji/prepare-budget.d.ts +18 -0
  58. package/dist/jikji/serial-queue.d.ts +17 -0
  59. package/dist/jikji/types.d.ts +17 -0
  60. package/dist/mcp/index.js +4442 -1748
  61. package/dist/minsync/client.d.ts +6 -4
  62. package/dist/minsync/installer.d.ts +1 -1
  63. package/dist/minsync/method.d.ts +1 -1
  64. package/dist/minsync/process.d.ts +1 -0
  65. package/dist/minsync/types.d.ts +2 -2
  66. package/dist/mirror/atomic-write.d.ts +6 -0
  67. package/dist/mirror/index-store.d.ts +8 -1
  68. package/dist/mirror/index.d.ts +2 -2
  69. package/dist/mirror/sync.d.ts +57 -1
  70. package/dist/p2p/simplex-server.d.ts +0 -1
  71. package/dist/parser/defaults.d.ts +14 -4
  72. package/dist/parser/errors.d.ts +10 -0
  73. package/dist/parser/isolated.d.ts +77 -0
  74. package/dist/parser/kordoc.d.ts +1 -0
  75. package/dist/parser/ocr-engines.d.ts +6 -0
  76. package/dist/parser/parse-worker.d.ts +1 -0
  77. package/dist/parser/parse-worker.js +780 -0
  78. package/dist/parser/types.d.ts +5 -0
  79. package/dist/process/abort-reason.d.ts +2 -0
  80. package/dist/retrieval/index.d.ts +1 -1
  81. package/dist/retrieval/rerank.d.ts +28 -5
  82. package/licenses/embedding-assets.json +0 -35
  83. package/package.json +26 -29
  84. package/skills/autorag/SKILL.md +3 -2
  85. package/skills/autorag-doctor/SKILL.md +7 -1
  86. package/skills/autorag-lite-setup/SKILL.md +3 -3
  87. package/skills/autorag-setup/SKILL.md +43 -18
  88. package/dist/manifest/index.d.ts +0 -2
  89. package/dist/manifest/loader.d.ts +0 -3
  90. package/dist/manifest/types.d.ts +0 -8
  91. package/licenses/gemma-notice.txt +0 -24
  92. package/licenses/gemma-section-3.2-flow-down.txt +0 -9
  93. package/licenses/gemma-terms-of-use.html +0 -4750
  94. package/licenses/gemma-terms-of-use.txt +0 -158
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  <a href="https://www.npmjs.com/package/@autorag/librarian"><img src="https://img.shields.io/npm/dm/@autorag/librarian.svg?style=flat-square&color=818cf8" alt="npm downloads" /></a>
8
8
  <a href="https://github.com/Marker-Inc-Korea/AutoRAG/stargazers"><img src="https://img.shields.io/github/stars/Marker-Inc-Korea/AutoRAG?style=flat-square&logo=github&color=f59e0b" alt="GitHub stars" /></a>
9
9
  <a href="https://github.com/Marker-Inc-Korea/AutoRAG/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/Marker-Inc-Korea/AutoRAG/ci.yml?branch=main&label=CI&style=flat-square" alt="CI Status" /></a>
10
- <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg?style=flat-square" alt="License: MIT" /></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-green.svg?style=flat-square" alt="License: Apache-2.0" /></a>
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D24.0.0-informational.svg?style=flat-square" alt="Node >= 24" />
12
12
  <img src="https://img.shields.io/badge/bun-%3E%3D1.2-black.svg?style=flat-square&logo=bun" alt="Bun >= 1.2" />
13
13
  </p>
@@ -24,6 +24,141 @@
24
24
 
25
25
  ---
26
26
 
27
+ ## 🖥️ The desktop app
28
+
29
+ **A Finder for your computer that understands what's inside your files.** The
30
+ AutoRAG desktop app puts this librarian behind a real file manager: browse your
31
+ folders as usual, then ask a question and get an answer that cites the files,
32
+ chats, and mail it came from. Everything it searches with is the engine in this
33
+ repository.
34
+
35
+ <p align="center">
36
+ <img src="assets/app/finder.webp" alt="AutoRAG desktop app: a folder in list view with a version stack expanded and the index column" width="100%" />
37
+ </p>
38
+
39
+ <table>
40
+ <tr>
41
+ <td width="50%" valign="top">
42
+
43
+ ### 🔎 Just ask
44
+
45
+ Ask the way you'd ask a teammate. The librarian reads the files and writes back,
46
+ every claim linked to the passage behind it. Drag files, folders, or links into
47
+ a question to ask about just those.
48
+
49
+ </td>
50
+ <td width="50%" valign="top">
51
+
52
+ <img src="assets/app/ask.webp" alt="An answer about the Seoul office lease with numbered citations" />
53
+
54
+ </td>
55
+ </tr>
56
+ <tr>
57
+ <td width="50%" valign="top">
58
+
59
+ <img src="assets/app/versions.webp" alt="A folder in list view with document versions stacked under one row" />
60
+
61
+ </td>
62
+ <td width="50%" valign="top">
63
+
64
+ ### 🗂️ Spot the twins
65
+
66
+ `proposal-final`, `proposal-v3`, `proposal (1)`: stacked into one row, newest
67
+ on top, tagged **Latest**, **Similar**, or **Identical**. Powered by
68
+ [dupey](https://github.com/NomaDamas/dupey), the same scan as
69
+ `autorag duplicates`.
70
+
71
+ </td>
72
+ </tr>
73
+ <tr>
74
+ <td width="50%" valign="top">
75
+
76
+ ### ⌨️ Space to see anything
77
+
78
+ Markdown, code, PDF, video, audio, Office, and HWP/HWPX previewed instantly in
79
+ Quick Look. HWP pages are drawn locally by
80
+ [rhwp](https://github.com/edwardkim/rhwp); Hancom Office is not required.
81
+
82
+ </td>
83
+ <td width="50%" valign="top">
84
+
85
+ <img src="assets/app/quick-look.webp" alt="Quick Look showing a multi-page PDF with a page rail" />
86
+
87
+ </td>
88
+ </tr>
89
+ <tr>
90
+ <td width="50%" valign="top">
91
+
92
+ <img src="assets/app/panes.webp" alt="Two folder panes side by side, each with its own tabs" />
93
+
94
+ </td>
95
+ <td width="50%" valign="top">
96
+
97
+ ### 🪟 A real file manager
98
+
99
+ Tabs and split panes: drag a tab to an edge to split, and every pane keeps its
100
+ own tabs, so a folder and a conversation sit side by side. Folders update live
101
+ as other apps change them.
102
+
103
+ </td>
104
+ </tr>
105
+ </table>
106
+
107
+ **And more:** hybrid keyword + meaning search with a reranker · scheduled
108
+ re-indexing that runs even while the app is closed · an *Ask* entry in the
109
+ Finder and Explorer right-click menu · light and dark mode · Korean, English,
110
+ Japanese, and Simplified Chinese.
111
+
112
+ ### Every place, one search
113
+
114
+ The app connects the same [datasources](#-supported-datasources) the librarian
115
+ does, and searches them right alongside your files:
116
+
117
+ <table>
118
+ <tr>
119
+ <td align="center" width="25%">💬<br><b>Slack</b><br>Channels and threads</td>
120
+ <td align="center" width="25%">💛<br><b>KakaoTalk</b><br>Chats on this computer</td>
121
+ <td align="center" width="25%">🎮<br><b>Discord</b><br>Servers and forums</td>
122
+ <td align="center" width="25%">✈️<br><b>Telegram</b><br>Chats and channels</td>
123
+ </tr>
124
+ <tr>
125
+ <td align="center">📱<br><b>WhatsApp</b><br>Messages, read-only</td>
126
+ <td align="center">✉️<br><b>Mail</b><br>Every inbox you sign in to</td>
127
+ <td align="center">🐙<br><b>GitHub</b><br>Repos, issues, PRs</td>
128
+ <td align="center">🔮<br><b>Obsidian</b><br>Your vaults</td>
129
+ </tr>
130
+ </table>
131
+
132
+ ### Private by design
133
+
134
+ - **Embedded on your machine.** Document understanding runs on the local
135
+ [`qwen3-embedding-0.6b`](docs/model-cards/qwen3-embedding-0.6b.md) model.
136
+ File contents are never sent to a remote embedder.
137
+ - **Keys stay encrypted.** Sign-in tokens and API keys live in the system's
138
+ encrypted store, never in a config file.
139
+ - **Bring your own model.** Use the [hosted Dazzi Models plan](#hosted-dazzi-models-plan),
140
+ or connect your own provider key and pay the provider directly.
141
+
142
+ > [!TIP]
143
+ > **The app's source lives in [NomaDamas/AutoRAG-app](https://github.com/NomaDamas/AutoRAG-app)**
144
+ > (Electron + React, AGPL-3.0). It depends on `@autorag/librarian` from this
145
+ > repository; build, run, and file app issues there.
146
+
147
+ ### One engine, every surface
148
+
149
+ The app is one way in. The same librarian runs everywhere else:
150
+
151
+ | Surface | Use it for | Start here |
152
+ |---|---|---|
153
+ | **Desktop app** | Browsing and asking in one window | [NomaDamas/AutoRAG-app](https://github.com/NomaDamas/AutoRAG-app) |
154
+ | **Terminal UI** | Interactive, steerable search sessions | [`autorag tui`](#2-search-from-cli) |
155
+ | **CLI** | Scripts, indexing, health checks | [CLI Command Reference](#cli-command-reference) |
156
+ | **MCP server** | Feeding retrieval to Claude Code, Codex, and other agents | [AutoRAG Lite MCP Server](#autorag-lite-mcp-server) |
157
+ | **TypeScript API** | Embedding the librarian in your own app | [Programmatic usage](#3-programmatic-usage-typescript-api) |
158
+ | **Agent skills** | Letting a coding agent install and drive AutoRAG | [For AI Agents](#-for-ai-agents--llms-setup--skills) |
159
+
160
+ ---
161
+
27
162
  ## What is AutoRAG Agent?
28
163
 
29
164
  Search tools dump file paths and matching lines — forcing you to open files, read context, and synthesize answers yourself.
@@ -51,7 +186,7 @@ Three principles drive every design decision in AutoRAG Agent:
51
186
 
52
187
  1. **Never migrate your data to search it.** Traditional RAG systems force you to upload, ETL, and duplicate your files into a centralized vector database. AutoRAG Agent federates your data **in place**, querying CLI-native stores (`lazykatok`, `discrawl`, `slacrawl`, `mailcrawl`, `rclone`, `qmd`) where your data already lives. Results retain opaque, source-native identities (`/kakao/...`, `/slack/...`) that preserve local access control and privacy. *(See our [Competitive Landscape Study](docs/competitive-landscape-2026-09.md) on why in-place federation is the durable differentiator).*
53
188
 
54
- 2. **Just works — no RAG degree required.** No pipeline tuning, no vector-DB maintenance, and no remote embedding keys required. AutoRAG Agent automatically manages [MinSync](docs/minsync-setup.md) for incremental Change Data Capture (CDC) chunking and provides a local [embedding gateway](docs/embedding-runtime.md) out of the box with zero external telemetry. A [remote rerank model](docs/rerank.md) (OpenRouter, `voyageai/rerank-3-lite` by default) is an opt-in extra.
189
+ 2. **Just works — no RAG degree required.** No pipeline tuning, no vector-DB maintenance, and no remote embedding keys required. AutoRAG Agent automatically manages [MinSync](docs/minsync-setup.md) for incremental Change Data Capture (CDC) chunking and provides a local [embedding gateway](docs/embedding-runtime.md) out of the box with zero external telemetry. A [remote rerank model](docs/rerank.md) (the hosted Dazzi Models reranker when signed in, else OpenRouter `voyageai/rerank-3-lite`) is an opt-in extra.
55
190
 
56
191
  3. **Fast by design.** Rather than coordinating slow multi-agent hierarchies, a single configured model owns the entire retrieval, direct-read, and curation loop. Local CDC chunks (BM25, vector, and hybrid modes) deliver rapid, low-latency turnaround across multi-turn research queries.
57
192
 
@@ -80,144 +215,9 @@ AutoRAG uses `@earendil-works/pi-coding-agent` as the runtime host for model ses
80
215
 
81
216
  The CLI TUI (`autorag tui`) is Pi's interactive mode hosted on the AutoRAG librarian: there is no separate AutoRAG renderer. Pi owns the terminal UI and its native in-session commands — `/login`/`/logout`, `/model`, `/resume`, `/new`, `/tree`, `/compact`, and `/settings` — so provider sign-in and model selection work on first launch even when no AutoRAG model is configured. AutoRAG registers its retrieval tools and runs the two-phase search in the same Pi session, where the model's progress notes, first answer, and final answer are ordinary assistant messages, so resume and two-phase search keep working together.
82
217
 
83
- Update notices are AutoRAG's, not Pi's: `autorag tui` suppresses Pi's "run `pi update`" banner (Pi is a bundled host, not a separate install) and instead checks the published `@autorag/librarian` release, showing a one-line notice in the session when a newer version exists. Set `AUTORAG_NO_UPDATE_CHECK=1` to skip the lookup; `AUTORAG_UPDATE_CHECK_URL` overrides the registry endpoint.
84
-
85
-
86
- ---
87
-
88
- ## 🤖 For AI Agents & LLMs: Setup & Skills
89
-
90
- If you are an AI coding agent or LLM (Claude Code, Cursor, Windsurf, Codex, Senpi, Pi, etc.) tasked with installing, configuring, or querying AutoRAG Agent, use our built-in skills located in the [`skills/`](skills/) directory:
91
-
92
- | Skill | Directory | When to Use |
93
- |---|---|---|
94
- | **`autorag`** | [`skills/autorag/`](skills/autorag/SKILL.md) | Model-backed querying, searching, comparing, and summarizing with an already configured AutoRAG librarian. |
95
- | **`autorag-setup`** | [`skills/autorag-setup/`](skills/autorag-setup/SKILL.md) | Installing AutoRAG, configuring the model-backed librarian, adding roots/datasources, running health checks, and registering Lite MCP when needed. |
96
- | **`autorag-lite-setup`** | [`skills/autorag-lite-setup/`](skills/autorag-lite-setup/SKILL.md) | Installing/registering `autorag-mcp`, initializing model-free config, maintaining indexes, and verifying MCP search. |
97
-
98
- ### Install the skills into your coding agent
99
-
100
- Skills are not auto-discovered — copy only the setup skill when an agent needs
101
- to bootstrap AutoRAG. **Routine AutoRAG Lite retrieval is provided by MCP
102
- tools, not by a `autorag-lite-search` skill or shell command.**
103
-
104
- ```bash
105
- # From a clone of this repository
106
- mkdir -p .claude/skills
107
- cp -R skills/autorag-lite-setup .claude/skills/
108
- ```
109
-
110
- ```bash
111
- # From a global install — the npm package ships the same skills/ folder
112
- AUTORAG_SKILLS="$(npm root -g)/@autorag/librarian/skills"
113
- # Bun global installs live at ~/.bun/install/global/node_modules/@autorag/librarian/skills
114
- mkdir -p .claude/skills
115
- cp -R "$AUTORAG_SKILLS/autorag-lite-setup" .claude/skills/
116
- ```
117
-
118
- Run the setup skill once to register the stdio server with the host. Reload the
119
- agent, then discover the actual tool names and schemas with MCP `tools/list`.
120
- The normal Lite path is `autorag.status` → `autorag.refresh` when needed →
121
- `autorag.search`; use `autorag.report` and `autorag.evidence` for the optional
122
- curation lifecycle. Copy `skills/autorag`
123
- and `skills/autorag-setup` only when the agent should also drive the
124
- model-backed librarian, and `skills/autorag-doctor` for diagnostics. Other
125
- agents read their own skill directories; copy the same setup folder there and
126
- reload the agent session so it picks up the MCP registration instructions.
127
- Do not copy or retain the removed `autorag-lite-search` skill.
128
-
129
- ### Quick Agent Workflow
130
-
131
- 1. **Install CLI:**
132
- ```bash
133
- command -v autorag >/dev/null || bun install -g @autorag/librarian
134
- ```
135
- 2. **Inspect & Preflight:**
136
- ```bash
137
- autorag status --json # check corpus freshness and index readiness
138
- autorag duplicates --json # scan for exact or near-duplicate document families
139
- ```
140
- 3. **Perform Curated Search:**
141
- ```bash
142
- autorag search "your question" --json
143
- ```
144
- 4. **Safety Guidelines for Agents:**
145
- - **Never delete, move, or modify original user documents.**
146
- - AutoRAG writes index artifacts strictly into `<workspace>/.autorag/` and `.jikji/` caches.
147
- - Never print or leak API keys, tokens, or credential values into stdout or logs.
148
-
149
- ---
150
-
151
- ## AutoRAG Lite MCP Server
152
-
153
- Register the package's stdio server with the host; the host owns the process
154
- lifecycle and sends MCP tool calls:
155
-
156
- ```bash
157
- AUTORAG_CONFIG=/absolute/path/to/.autorag/config.json autorag-mcp
158
- ```
159
-
160
- For Claude Code and Codex registration commands, use
161
- [`skills/autorag-lite-setup/SKILL.md`](skills/autorag-lite-setup/SKILL.md).
162
- The MCP contract source of truth is [`src/mcp/server.ts`](src/mcp/server.ts)
163
- (tool registration, schemas, handlers) plus [`src/mcp/index.ts`](src/mcp/index.ts)
164
- (stdio entrypoint). Discover tools and schemas with MCP `tools/list`; do not
165
- hard-code a tool count.
166
-
167
- Core Lite tools include `autorag.status`, `autorag.search`,
168
- `autorag.search.files`, `autorag.datasources.list`, `autorag.datasources.get`,
169
- `autorag.refresh`, `autorag.report`, and `autorag.evidence`. Configured
170
- integrated datasources expose additional scoped search tools. Read-only MCP
171
- mode omits mutating tools such as refresh and report.
172
-
173
- ## ⚡ AutoRAG Lite: Model-Free Retrieval Engine
174
-
175
- Need blazing fast local search without configuring an LLM or paying for API tokens? Use **AutoRAG Lite**.
176
-
177
- AutoRAG Lite provides the exact same high-performance indexing, BM25 ranking, and local MinSync vector/hybrid retrieval engine as the full librarian, but **runs 100% model-free**:
178
-
179
- - **Zero LLM Token Usage:** Run purely local BM25 and vector search offline.
180
- - **Agent Integration Ready:** Use the AutoRAG Lite MCP server to supply raw context chunks to an external model; the CLI remains a bootstrap and maintenance interface.
181
- - **Fast Local CLI:** The CLI remains available for terminal-only indexing and repair.
182
-
183
- ```bash
184
- # Initialize a model-free workspace
185
- autorag lite init --search-paths ./documents
186
-
187
- # Index local files and datasources
188
- autorag lite refresh
189
- ```
190
-
191
- Normal Lite retrieval runs through the MCP tools (`autorag.status`,
192
- `autorag.search`); the CLI remains the bootstrap and maintenance interface for
193
- indexing and repair.
194
-
195
- ---
196
-
197
- ## 🔌 Supported Datasources
198
-
199
- AutoRAG Agent connects to external tools and communication platforms using dedicated datasource skills. Data remains in each tool's native store — AutoRAG does not copy or ingest foreign databases into a centralized store:
218
+ Typing while a search runs works like steering one of Pi's own turns. **Enter** steers the running search: AutoRAG treats the text as a correction of a search that is going wrong, delivers it before the search's next model request (also between phases, where no turn is streaming), cuts in-flight retrieval short so the correction lands promptly, and always runs the verification phase so the answer reflects the correction. **Alt+Enter** queues a new question that runs after the current search answers. **Esc** stops the search instead of letting it continue into its next phase. Pi's registered `/` commands still run during a search; any other line starting with `/` (a path, for example) is a steer like any other text. A query typed after a search answers is a new search in the same session, as before.
200
219
 
201
- | Datasource | Skill Alias | Backend / Driver | Storage & Privacy Model | Search Capabilities |
202
- |---|---|---|---|---|
203
- | **Local Documents** | `local` | Native filesystem & MinSync | Workspace-local parsed mirrors (`.autorag/`) | BM25, Semantic, Hybrid |
204
- | **KakaoTalk** | `kakao` | [`lazykatok`](https://github.com/changeroa/lazykatok) CLI | Native KakaoTalk archive; zero direct DB access | BM25, Semantic, Hybrid |
205
- | **Discord** | `discord` | [`discrawl`](https://github.com/openclaw/discrawl) CLI | Native SQLite archive; token-free wiretap mode | BM25, Semantic, Hybrid |
206
- | **WhatsApp** | `whatsapp` | [`wacrawl`](https://github.com/openclaw/wacrawl) CLI | Local-first incremental archive + FTS5 | Lexical FTS5 |
207
- | **Telegram** | `telegram` | [`telecrawl`](https://github.com/openclaw/telecrawl) CLI | Local-first desktop archive + FTS5 | Lexical FTS5 |
208
- | **Slack** | `slack` | [`slacrawl`](https://github.com/openclaw/slacrawl) CLI | Local workspace/channel/thread archive + FTS5 | Lexical FTS5 |
209
- | **Notion** | `notion` | [`notcrawl`](https://github.com/openclaw/notcrawl) CLI | Local page/database/block archive + FTS5 | Lexical FTS5 |
210
- | **Email Archives** | `mailcrawl` | [`mailcrawl`](https://github.com/NomaDamas/mailcrawl) CLI | Local Gmail, IMAP, and Maildir storage | BM25, Semantic, Hybrid |
211
- | **Local Mail Export**| `mail-export` | Built-in `.mbox` / `.eml` parser | Local filesystem mailboxes | Lexical |
212
- | **Obsidian Vaults** | `obsidian` | [`qmd`](https://github.com/tobi/qmd) CLI | Direct markdown vault indexing | BM25, Semantic |
213
- | **GitHub** | `github` | GitHub REST API | In-memory fetched Issues and Pull Requests | Lexical, Scoped |
214
- | **GitHub Gists** | `github-gist` | GitHub REST API | Incremental local index of own-account public and permitted secret Gist content/metadata; token not stored | Lexical (BM25), Local Semantic, Scoped |
215
- | **Cloud Drives** | `cloud-drive` | [`rclone`](https://rclone.org) CLI | Google Drive (Tier-1), OneDrive, Dropbox, etc. | Incremental Mirror + BM25 |
216
- | **Photos & Shots** | `clawgallery` | `clawgallery` CLI | Local screenshot and photo store | Hybrid OCR/Visual Search |
217
- | **RSS / News** | `rss` | Native HTTP Poller | RSS 2.0 & Atom feeds (24h deduplication) | Lexical |
218
- | **macOS Spotlight** | `spotlight` | Native `mdfind` CLI | macOS system metadata and content index | System Native |
219
-
220
- For configuration syntax and connector details, see [docs/datasource-skills.md](docs/datasource-skills.md). Non-interactive `sync`/`index` steps get a 30-minute per-connector budget (`connector.indexTimeoutMs`) because first-run imports routinely take minutes; interactive search keeps its 60-second default.
220
+ Update notices are AutoRAG's, not Pi's: `autorag tui` suppresses Pi's "run `pi update`" banner (Pi is a bundled host, not a separate install) and instead checks the published `@autorag/librarian` release, showing a one-line notice in the session when a newer version exists. Set `AUTORAG_NO_UPDATE_CHECK=1` to skip the lookup; `AUTORAG_UPDATE_CHECK_URL` overrides the registry endpoint.
221
221
 
222
222
  ---
223
223
 
@@ -304,6 +304,26 @@ Tesseract. Set `parserOptions.ocr.cachePath` to store the Tesseract models
304
304
  elsewhere, or `KORDOC_OFFLINE=1` to block the built-in model download. An
305
305
  explicit `parserOptions.kordoc.ocr` overrides the language-based choice.
306
306
 
307
+ ### Bounding and cancelling a parse
308
+
309
+ `kordoc` (PDF, HWP/HWPX, DOCX, XLSX/XLS, images), `.pptx` and `.eml` parse in a worker
310
+ thread during a refresh, so one corrupt or hostile file cannot hang or crash the run. A
311
+ `Promise.race` deadline cannot stop a synchronous parse; terminating the worker can.
312
+
313
+ | `parserOptions` key | Default | Effect |
314
+ |---|---|---|
315
+ | `fileTimeoutMs` | `120000` | Per-file deadline. A parse still running is killed with its worker. |
316
+ | `maxHeapMb` | Node's default | V8 old-generation limit for the worker. An out-of-memory parse is caught, not a host crash. |
317
+
318
+ A timeout, a heap overrun and a worker crash each become one `parser-failed` skip for that
319
+ file; the diagnostic message says which. The rest of the corpus is still indexed. Plain-text
320
+ files and parsers configured with a function (`parserOptions.kordoc.parse`, a custom OCR
321
+ provider) parse in-process.
322
+
323
+ ```json
324
+ { "parserOptions": { "fileTimeoutMs": 60000, "maxHeapMb": 2048 } }
325
+ ```
326
+
307
327
  Photos and videos are also reachable through two other paths that are not part
308
328
  of this switch: the `clawgallery` datasource (captions and visual search over its
309
329
  own folders) and Jikji's media index (`jikji.enableMediaIndex`, file facts such as
@@ -357,80 +377,274 @@ for (const result of response.results) {
357
377
  }
358
378
  ```
359
379
 
380
+ A caller can steer a search while it runs, the way Enter steers a TUI search, and stop it:
381
+
382
+ ```typescript
383
+ const run = (async () => {
384
+ for await (const event of agent.searchDocumentsStream("When is the launch?")) {
385
+ if (event.type === "preliminary") console.log("Quick:", event.response.answer);
386
+ if (event.type === "complete") console.log("Final:", event.response.answer);
387
+ }
388
+ })();
389
+
390
+ // A correction of the running search, not a new question. false = no search to steer.
391
+ agent.steer("Use the June plan, not the April one.");
392
+ // agent.abort() stops the whole search, including every later phase.
393
+ await run;
394
+ ```
395
+
396
+ `steer()` reaches the search's next model request (also between phases), cuts in-flight retrieval and the baseline prefetch short, and always runs verification, whose prompt restates the correction. It returns `false` when no search is running, the search was stopped, or it is past its last model request; ask the text as a new question then.
397
+
398
+ A refresh can be cancelled and observed from code:
399
+
400
+ ```typescript
401
+ const controller = new AbortController();
402
+ try {
403
+ await agent.refresh(false, {
404
+ signal: controller.signal, // controller.abort() stops it
405
+ onProgress: ({ phase, processed, total, currentVirtualPath }) => {
406
+ console.log(`${phase} ${processed}/${total}`, currentVirtualPath ?? "");
407
+ },
408
+ });
409
+ } catch (error) {
410
+ if (controller.signal.aborted) console.log("refresh cancelled");
411
+ else throw error;
412
+ }
413
+ ```
414
+
415
+ `signal` is checked between files and between phases, kills an in-flight parse worker, and
416
+ terminates the MinSync, Jikji and datasource child processes (and their descendants). The
417
+ refresh then rejects with the signal's reason and is recorded as `failed`; files already
418
+ mirrored are kept and not re-parsed on the next run. `onProgress` reports `parsed`
419
+ (`processed`/`total` are files, `currentVirtualPath` is the file about to be processed) and
420
+ `datasources` (`processed`/`total` are datasource skills). During the parse phase
421
+ `.autorag/refresh-progress.json` also carries the running `sourceFiles.total` and
422
+ `parsedCounts`. Without these options a refresh behaves as before.
423
+
424
+ ---
425
+
426
+ ## CLI Command Reference
427
+
428
+ | Command | Description |
429
+ |---|---|
430
+ | `autorag init` | Initialize `~/.autorag/config.json` with search roots, document languages, and model settings |
431
+ | `autorag refresh` | Refresh parsed mirrors, MinSync CDC chunks, datasources, Jikji, and the platform file-name index (Everything on Windows, FSearch on macOS/Linux) |
432
+ | `autorag search "<query>"` | Run the librarian agent to curate structured answers |
433
+ | `autorag status` | Inspect corpus freshness, indexing status, and vector readiness |
434
+ | `autorag health` | Check model provider authentication, token validity, and API reachability |
435
+ | `autorag models list` | List chat models the pi runtime can resolve (built-ins, `models.json`, custom/extension providers) with provider auth status; never prints credential values |
436
+ | `autorag update-check` | Compare the running `autorag` against the published npm version (also runs on `autorag tui` launch) |
437
+ | `autorag tui` | Open Pi's interactive librarian TUI (`/login`, `/model`, `/resume`, …) |
438
+ | `autorag duplicates [DIR]` | Read-only scan for exact and near-duplicate document families with `dupey` |
439
+ | `autorag lite ...` | CLI bootstrap, indexing repair, terminal maintenance, and fallback interface; agents use MCP for normal Lite operation |
440
+ | `autorag memory inspect` | Render a read-only, path-opaque snapshot of retrieval memory (judged evidence, curated results, evidence chunks, insights); model-free |
441
+ | `autorag evidence <session>` | Inspect persisted evidence behind numbered results; MCP clients normally use `autorag.evidence`, and the CLI stays available for terminal maintenance |
442
+ | `autorag serve` | Start the P2P query server over SimpleX (opt-in) |
443
+ | `autorag p2p ...` | Manage peer trust, query approvals, and sharing policies |
444
+
445
+ ---
446
+
447
+ ## AutoRAG Lite MCP Server
448
+
449
+ Register the package's stdio server with the host; the host owns the process
450
+ lifecycle and sends MCP tool calls:
451
+
452
+ ```bash
453
+ AUTORAG_CONFIG=/absolute/path/to/.autorag/config.json autorag-mcp
454
+ ```
455
+
456
+ For Claude Code and Codex registration commands, use
457
+ [`skills/autorag-lite-setup/SKILL.md`](skills/autorag-lite-setup/SKILL.md).
458
+ The MCP contract source of truth is [`src/mcp/server.ts`](src/mcp/server.ts)
459
+ (tool registration, schemas, handlers) plus [`src/mcp/index.ts`](src/mcp/index.ts)
460
+ (stdio entrypoint). Discover tools and schemas with MCP `tools/list`; do not
461
+ hard-code a tool count.
462
+
463
+ Core Lite tools include `autorag.status`, `autorag.search`,
464
+ `autorag.search.files`, `autorag.datasources.list`, `autorag.datasources.get`,
465
+ `autorag.refresh`, `autorag.report`, and `autorag.evidence`. Configured
466
+ integrated datasources expose additional scoped search tools. Read-only MCP
467
+ mode omits mutating tools such as refresh and report.
468
+
469
+ ---
470
+
471
+ ## ⚡ AutoRAG Lite: Model-Free Retrieval Engine
472
+
473
+ Need blazing fast local search without configuring an LLM or paying for API tokens? Use **AutoRAG Lite**.
474
+
475
+ AutoRAG Lite provides the exact same high-performance indexing, BM25 ranking, and local MinSync vector/hybrid retrieval engine as the full librarian, but **runs 100% model-free**:
476
+
477
+ - **Zero LLM Token Usage:** Run purely local BM25 and vector search offline.
478
+ - **Agent Integration Ready:** Use the AutoRAG Lite MCP server to supply raw context chunks to an external model; the CLI remains a bootstrap and maintenance interface.
479
+ - **Fast Local CLI:** The CLI remains available for terminal-only indexing and repair.
480
+
481
+ ```bash
482
+ # Initialize a model-free workspace
483
+ autorag lite init --search-paths ./documents
484
+
485
+ # Index local files and datasources
486
+ autorag lite refresh
487
+ ```
488
+
489
+ Normal Lite retrieval runs through the MCP tools (`autorag.status`,
490
+ `autorag.search`); the CLI remains the bootstrap and maintenance interface for
491
+ indexing and repair.
492
+
493
+ ---
494
+
495
+ ## 🤖 For AI Agents & LLMs: Setup & Skills
496
+
497
+ If you are an AI coding agent or LLM (Claude Code, Cursor, Windsurf, Codex, Senpi, Pi, etc.) tasked with installing, configuring, or querying AutoRAG Agent, use our built-in skills located in the [`skills/`](skills/) directory:
498
+
499
+ | Skill | Directory | When to Use |
500
+ |---|---|---|
501
+ | **`autorag`** | [`skills/autorag/`](skills/autorag/SKILL.md) | Model-backed querying, searching, comparing, and summarizing with an already configured AutoRAG librarian. |
502
+ | **`autorag-setup`** | [`skills/autorag-setup/`](skills/autorag-setup/SKILL.md) | Installing AutoRAG, configuring the model-backed librarian, adding roots/datasources, running health checks, and registering Lite MCP when needed. |
503
+ | **`autorag-lite-setup`** | [`skills/autorag-lite-setup/`](skills/autorag-lite-setup/SKILL.md) | Installing/registering `autorag-mcp`, initializing model-free config, maintaining indexes, and verifying MCP search. |
504
+
505
+ ### Install the skills into your coding agent
506
+
507
+ Skills are not auto-discovered — copy only the setup skill when an agent needs
508
+ to bootstrap AutoRAG. **Routine AutoRAG Lite retrieval is provided by MCP
509
+ tools, not by a `autorag-lite-search` skill or shell command.**
510
+
511
+ ```bash
512
+ # From a clone of this repository
513
+ mkdir -p .claude/skills
514
+ cp -R skills/autorag-lite-setup .claude/skills/
515
+ ```
516
+
517
+ ```bash
518
+ # From a global install — the npm package ships the same skills/ folder
519
+ AUTORAG_SKILLS="$(npm root -g)/@autorag/librarian/skills"
520
+ # Bun global installs live at ~/.bun/install/global/node_modules/@autorag/librarian/skills
521
+ mkdir -p .claude/skills
522
+ cp -R "$AUTORAG_SKILLS/autorag-lite-setup" .claude/skills/
523
+ ```
524
+
525
+ Run the setup skill once to register the stdio server with the host. Reload the
526
+ agent, then discover the actual tool names and schemas with MCP `tools/list`.
527
+ The normal Lite path is `autorag.status` → `autorag.refresh` when needed →
528
+ `autorag.search`; use `autorag.report` and `autorag.evidence` for the optional
529
+ curation lifecycle. Copy `skills/autorag`
530
+ and `skills/autorag-setup` only when the agent should also drive the
531
+ model-backed librarian, and `skills/autorag-doctor` for diagnostics. Other
532
+ agents read their own skill directories; copy the same setup folder there and
533
+ reload the agent session so it picks up the MCP registration instructions.
534
+ Do not copy or retain the removed `autorag-lite-search` skill.
535
+
536
+ ### Quick Agent Workflow
537
+
538
+ 1. **Install CLI:**
539
+ ```bash
540
+ command -v autorag >/dev/null || bun install -g @autorag/librarian
541
+ ```
542
+ 2. **Inspect & Preflight:**
543
+ ```bash
544
+ autorag status --json # check corpus freshness and index readiness
545
+ autorag duplicates --json # scan for exact or near-duplicate document families
546
+ ```
547
+ 3. **Perform Curated Search:**
548
+ ```bash
549
+ autorag search "your question" --json
550
+ ```
551
+ 4. **Safety Guidelines for Agents:**
552
+ - **Never delete, move, or modify original user documents.**
553
+ - AutoRAG writes index artifacts into `<workspace>/.autorag/` and Jikji's central store (`<OS data dir>/jikji/`, override with `JIKJI_DATA_DIR`). Jikji also drops a `.jikji_agent_map.md` guide into each indexed root.
554
+ - Never print or leak API keys, tokens, or credential values into stdout or logs.
555
+
556
+ ---
557
+
558
+ ## 🔌 Supported Datasources
559
+
560
+ AutoRAG Agent connects to external tools and communication platforms using dedicated datasource skills. Data remains in each tool's native store — AutoRAG does not copy or ingest foreign databases into a centralized store:
561
+
562
+ | Datasource | Skill Alias | Backend / Driver | Storage & Privacy Model | Search Capabilities |
563
+ |---|---|---|---|---|
564
+ | **Local Documents** | `local` | Native filesystem & MinSync | Workspace-local parsed mirrors (`.autorag/`) | BM25, Semantic, Hybrid |
565
+ | **KakaoTalk** | `kakao` | [`lazykatok`](https://github.com/changeroa/lazykatok) CLI | Native KakaoTalk archive; zero direct DB access | BM25, Semantic, Hybrid |
566
+ | **Discord** | `discord` | [`discrawl`](https://github.com/openclaw/discrawl) CLI | Native SQLite archive; token-free wiretap mode | BM25, Semantic, Hybrid |
567
+ | **WhatsApp** | `whatsapp` | [`wacrawl`](https://github.com/openclaw/wacrawl) CLI | Local-first incremental archive + FTS5 | Lexical FTS5; BM25 + Semantic + Hybrid by default via [`sidecar`](docs/datasource-skills.md#hybrid-search-for-chat-crawlers-sidecar) |
568
+ | **Telegram** | `telegram` | [`telecrawl`](https://github.com/openclaw/telecrawl) CLI | Local-first desktop archive + FTS5 | Lexical FTS5; BM25 + Semantic + Hybrid by default via [`sidecar`](docs/datasource-skills.md#hybrid-search-for-chat-crawlers-sidecar) |
569
+ | **Slack** | `slack` | [`slacrawl`](https://github.com/openclaw/slacrawl) CLI | Local workspace/channel/thread archive + FTS5 | Lexical FTS5; BM25 + Semantic + Hybrid by default via [`sidecar`](docs/datasource-skills.md#hybrid-search-for-chat-crawlers-sidecar) |
570
+ | **Notion** | `notion` | [`notcrawl`](https://github.com/openclaw/notcrawl) CLI | Local page/database/block archive + FTS5 | Lexical FTS5 |
571
+ | **Email Archives** | `mailcrawl` | [`mailcrawl`](https://github.com/NomaDamas/mailcrawl) CLI | Local Gmail, IMAP, and Maildir storage | BM25, Semantic, Hybrid |
572
+ | **Local Mail Export**| `mail-export` | Built-in `.mbox` / `.eml` parser | Local filesystem mailboxes | Lexical |
573
+ | **Obsidian Vaults** | `obsidian` | [`qmd`](https://github.com/tobi/qmd) CLI | Direct markdown vault indexing | BM25, Semantic |
574
+ | **GitHub** | `github` | GitHub REST API | In-memory fetched Issues and Pull Requests | Lexical, Scoped |
575
+ | **GitHub Gists** | `github-gist` | GitHub REST API | Incremental local index of own-account public and permitted secret Gist content/metadata; token not stored | Lexical (BM25), Local Semantic, Scoped |
576
+ | **Cloud Drives** | `cloud-drive` | [`rclone`](https://rclone.org) CLI | Google Drive (Tier-1), OneDrive, Dropbox, etc. | Incremental Mirror + BM25 |
577
+ | **Photos & Shots** | `clawgallery` | `clawgallery` CLI | Local screenshot and photo store | Hybrid OCR/Visual Search |
578
+ | **RSS / News** | `rss` | Native HTTP Poller | RSS 2.0 & Atom feeds (24h deduplication) | Lexical |
579
+ | **macOS Spotlight** | `spotlight` | Native `mdfind` CLI | macOS system metadata and content index | System Native |
580
+
581
+ For configuration syntax and connector details, see [docs/datasource-skills.md](docs/datasource-skills.md). Non-interactive `sync`/`index` steps get a 30-minute per-connector budget (`connector.indexTimeoutMs`) because first-run imports routinely take minutes; interactive search keeps its 60-second default.
582
+
360
583
  ---
361
584
 
362
- ## Hosted AutoRAG Plan (Dazzi)
585
+ ## Hosted Dazzi Models Plan
363
586
 
364
- AutoRAG can run on the hosted **AutoRAG** plan as a first-class model provider named
365
- `autorag`. The provider speaks the server's OpenAI Responses API surface (`<root>/v1`),
587
+ AutoRAG can run on the hosted **Dazzi Models** plan as a first-class model provider named
588
+ `dazzi`. The provider speaks the server's OpenAI Responses API surface (`<root>/v1`),
366
589
  so streaming, tool calls, and usage are handled by Pi's built-in `openai-responses`
367
590
  implementation, and the model catalog is discovered live from the server — no model id
368
591
  is baked into AutoRAG.
369
592
 
370
- Sign in from the interactive TUI:
593
+ Sign in from the interactive TUI. Login is the only way to authenticate; there is no API-key
594
+ environment variable:
371
595
 
372
596
  ```text
373
597
  autorag tui
374
- /login # choose "AutoRAG"; the browser completes a PKCE login
598
+ /login # choose "Dazzi Models"; the browser completes a PKCE login
375
599
  ```
376
600
 
377
- Headless (no browser) with a long-lived API key:
378
-
379
- ```bash
380
- export AUTORAG_API_KEY=dz_...
381
- ```
601
+ The provider, Jev, and rerank all use the credential `/login` stores. A login flow for
602
+ machines with no browser is not available yet and is tracked in [#1913](https://github.com/Marker-Inc-Korea/AutoRAG/issues/1913).
382
603
 
383
604
  On a fresh agent home, pin the model with an explicit endpoint so it resolves
384
- offline without a catalog snapshot — this is the headless configuration:
605
+ offline without a catalog snapshot:
385
606
 
386
607
  ```json
387
608
  {
388
609
  "model": {
389
- "provider": "autorag",
610
+ "provider": "dazzi",
390
611
  "id": "anthropic/claude-haiku-5.5",
391
612
  "baseUrl": "https://api.dazziapp.com/v1",
392
- "api": "openai-responses",
393
- "apiKeyEnv": "AUTORAG_API_KEY"
613
+ "api": "openai-responses"
394
614
  }
395
615
  }
396
616
  ```
397
617
 
398
- The `provider`/`id`-only shorthand (`{ "provider": "autorag", "id": "anthropic/claude-haiku-5.5" }`)
618
+ The `provider`/`id`-only shorthand (`{ "provider": "dazzi", "id": "anthropic/claude-haiku-5.5" }`)
399
619
  only resolves once a TUI `/login` or a model refresh has persisted the catalog
400
620
  snapshot; with no snapshot there is nothing to restore offline, and resolution
401
- fails with `Unknown configured model: autorag/<id>`.
621
+ fails with `Unknown configured model: dazzi/<id>`.
402
622
 
403
623
  | Variable | Default | Meaning |
404
624
  |---|---|---|
405
625
  | `AUTORAG_BASE_URL` | `https://api.dazziapp.com` | Server **root** (not the `/v1` path); the API base is `<root>/v1`. |
406
- | `AUTORAG_API_KEY` | – | Headless API key. A stored `/login` credential takes precedence. |
407
626
 
408
627
  The catalog is persisted after a `/login` (or any model refresh), so the
409
- `provider`/`id` shorthand `model: { provider: "autorag", id }`
628
+ `provider`/`id` shorthand `model: { provider: "dazzi", id }`
410
629
  keeps resolving offline. When you are not signed in the provider still registers — it appears under
411
630
  `/login`, contributes no models, and makes no network call. See
412
- [Hosted AutoRAG provider](docs/cloud-provider.md) for the full flow.
631
+ [Hosted Dazzi Models provider](docs/cloud-provider.md) for the full flow.
413
632
 
414
- ---
633
+ The same sign-in can also serve the **Jev** judgment model and **rerank** stage, so
634
+ the whole librarian loop runs on the hosted account:
415
635
 
416
- ## CLI Command Reference
636
+ ```json
637
+ {
638
+ "jev": { "backend": "dazzi", "model": "jev-1.13" },
639
+ "rerank": { "provider": "dazzi", "model": "qwen/qwen3-reranker-8b" }
640
+ }
641
+ ```
417
642
 
418
- | Command | Description |
419
- |---|---|
420
- | `autorag init` | Initialize `~/.autorag/config.json` with search roots, document languages, and model settings |
421
- | `autorag refresh` | Refresh parsed mirrors, MinSync CDC chunks, datasources, Jikji, and the platform file-name index (Everything on Windows, FSearch on macOS/Linux) |
422
- | `autorag search "<query>"` | Run the librarian agent to curate structured answers |
423
- | `autorag status` | Inspect corpus freshness, indexing status, and vector readiness |
424
- | `autorag health` | Check model provider authentication, token validity, and API reachability |
425
- | `autorag models list` | List chat models the pi runtime can resolve (built-ins, `models.json`, custom/extension providers) with provider auth status; never prints credential values |
426
- | `autorag update-check` | Compare the running `autorag` against the published npm version (also runs on `autorag tui` launch) |
427
- | `autorag tui` | Open Pi's interactive librarian TUI (`/login`, `/model`, `/resume`, …) |
428
- | `autorag duplicates [DIR]` | Read-only scan for exact and near-duplicate document families with `dupey` |
429
- | `autorag lite ...` | CLI bootstrap, indexing repair, terminal maintenance, and fallback interface; agents use MCP for normal Lite operation |
430
- | `autorag memory inspect` | Render a read-only, path-opaque snapshot of retrieval memory (judged evidence, curated results, evidence chunks, insights); model-free |
431
- | `autorag evidence <session>` | Inspect persisted evidence behind numbered results; MCP clients normally use `autorag.evidence`, and the CLI stays available for terminal maintenance |
432
- | `autorag serve` | Start the P2P query server over SimpleX (opt-in) |
433
- | `autorag p2p ...` | Manage peer trust, query approvals, and sharing policies |
643
+ `jev.backend: "dazzi"` posts Jev's native dialect to `<root>/v1/jev`
644
+ (default model `jev-1.13`); `rerank.provider: "dazzi"` reranks against
645
+ `<root>/v1/rerank` (default model `qwen/qwen3-reranker-8b`). Both use the stored
646
+ `/login` credential, and an explicit `rerank.baseUrl` or `rerank.model` still overrides
647
+ the defaults.
434
648
 
435
649
  ---
436
650
 
@@ -438,11 +652,11 @@ keeps resolving offline. When you are not signed in the provider still registers
438
652
 
439
653
  Deep dive into AutoRAG Agent's architecture, security, and integration guides:
440
654
 
441
- - **[MinSync Setup & Embedding QA](docs/minsync-setup.md):** Automatic binary installation, CDC chunking, and EmbeddingGemma verification.
442
- - **[Local Embedding Runtime & Gateway](docs/embedding-runtime.md):** AutoRAG-owned local gateway, model prefetching, and zero-egress semantic search. Model cards: [`qwen3-embedding-0.6b`](docs/model-cards/qwen3-embedding-0.6b.md), [`embeddinggemma-300m`](docs/model-cards/embeddinggemma-300m.md).
443
- - **[Hosted AutoRAG Provider](docs/cloud-provider.md):** The `autorag` (Dazzi) model provider — PKCE `/login`, `AUTORAG_API_KEY`, `AUTORAG_BASE_URL`, live model discovery, and offline catalog snapshots.
655
+ - **[MinSync Setup & Embedding QA](docs/minsync-setup.md):** Automatic binary installation, CDC chunking, and local embedding verification.
656
+ - **[Local Embedding Runtime & Gateway](docs/embedding-runtime.md):** AutoRAG-owned local gateway, model prefetching, and zero-egress semantic search. Model card: [`qwen3-embedding-0.6b`](docs/model-cards/qwen3-embedding-0.6b.md).
657
+ - **[Hosted Dazzi Models Provider](docs/cloud-provider.md):** The hosted `dazzi` model provider — PKCE `/login`, `AUTORAG_BASE_URL`, live model discovery, and offline catalog snapshots.
444
658
  - **[Datasource Skills Reference](docs/datasource-skills.md):** Full configuration contracts, connection aliases, and connector options.
445
- - **[Jev Decisions](docs/jev-decisions.md):** Jev query pipeline, **on by default** via OpenRouter: it routes each question to a direct answer (intrinsic knowledge) or local search (everything needing more information; web search is left to the agent after the fast answer), splits multi-part questions into up to five parallel searches (`openrouter/qwen/qwen3.7-flash`), picks which registered datasources to search before the fast answer, and ends the run after the fast answer when that answer is complete. Also covers the `jev` judgment tool, backends (OpenRouter, TypeSafe, Vercel AI Gateway), and how to opt out.
659
+ - **[Jev Decisions](docs/jev-decisions.md):** Jev query pipeline, **on by default** via Dazzi Models when signed in (OpenRouter otherwise): it routes each question to a direct answer (intrinsic knowledge) or local search (everything needing more information; web search is left to the agent after the fast answer), splits multi-part questions into up to five parallel searches (`dazzi/openai/gpt-6-luna` when signed in, else `openrouter/qwen/qwen3.7-flash`), picks which registered datasources to search before the fast answer, and ends the run after the fast answer when that answer is complete. Also covers the `jev` judgment tool, backends (OpenRouter, TypeSafe, Vercel AI Gateway), and how to opt out.
446
660
  - **[Manual QA & Datasource Test Harnesses](docs/manual-qa-datasources.md):** Real-world testing guides for Discord, KakaoTalk, Slack, Notion, and email.
447
661
  - **[P2P SimpleX Sharing & Path Standard](docs/p2p-path-standard.md):** Decentralized peer query sharing with SimpleX, PII redaction, and approval queues.
448
662
  - **[Supply Chain Security & License Audits](docs/supply-chain.md):** Software bill of materials (SBOM) and dependency gate policies.
@@ -512,14 +726,17 @@ Common failures and their fix:
512
726
  | A datasource errors during refresh | `datasource-index-failed` | run that CLI's own `doctor` |
513
727
  | MinSync binary missing (search and refresh fail with `MinSync is required ...`) | — | `cargo install minsync`, or leave `minSync.autoInstall` on and re-run refresh |
514
728
  | Jikji missing | `jikji-unavailable` | check the Rust toolchain, re-run refresh |
729
+ | Jikji prepare of a large root times out (`the Jikji prepare run timed out`) | `jikji-prepare-failed` | the refresh still finishes and the other roots are indexed. There is no fixed total wall: the per-root hang guard is `jikji.timeoutMs` (60 s base) plus `jikji.prepareTimeoutMsPerFile` ms per file under the root (default: `jikji.parseTimeout`, 5 s), uncapped, so a huge root is not cut by its size and only a run stuck beyond every file hitting its parse limit is killed. Set `prepareTimeoutMsPerFile: 0` for a flat `timeoutMs` wall. `jikji.parseTimeout` (seconds) is the per-file limit, forwarded to `jikji prepare --parse-timeout`; jikji skips a file that exceeds it. A timeout kills jikji's whole process group |
515
730
  | Windows file-name search fails during refresh | `everything-index-failed` | read the ES exit code and stderr in the message, then `autorag refresh --method everything --json` |
516
- | Every search does a full local search and verification, even for small talk | `query-route-fallback` | set `OPENROUTER_API_KEY` (Jev routing and decomposition are on by default) |
731
+ | Every search does a full local search and verification, even for small talk | `query-route-fallback` | sign in to Dazzi Models with `/login`, or set `OPENROUTER_API_KEY` (Jev routing and decomposition are on by default) |
517
732
 
518
733
  Native datasource stores stay owned by their CLIs — AutoRAG never rebuilds them. Fix a broken archive with `lazykatok doctor`, `discrawl --json metadata`, `slacrawl --json doctor`, `wacrawl --json doctor`, `telecrawl --json doctor`, `notcrawl doctor`, `qmd status`, or `mailcrawl doctor`, then re-run `autorag refresh --method datasources --json`.
519
734
 
735
+ ---
736
+
520
737
  ## License
521
738
 
522
- - **AutoRAG 2.0 (AutoRAG Agent):** Released under the [MIT License](LICENSE).
739
+ - **AutoRAG 2.0 (AutoRAG Agent):** Released under the [Apache License 2.0](LICENSE).
523
740
  - **Legacy Python AutoRAG (`legacy/`):** Released under the [Apache License 2.0](legacy/LICENSE).
524
741
  - Production third-party notices and licenses are documented in [`NOTICE`](NOTICE).
525
742
  - The bundled Windows binaries keep their own licenses: Everything (MIT, plus PCRE BSD-3-Clause) in [`licenses/everything-MIT-and-PCRE-BSD.txt`](licenses/everything-MIT-and-PCRE-BSD.txt) and ES (MIT) in [`licenses/es-MIT.txt`](licenses/es-MIT.txt). Everything's source code is not public; AutoRAG redistributes the unmodified voidtools portable ZIPs.