@gmickel/gno 0.7.0 → 0.8.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 (209) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +90 -50
  3. package/THIRD_PARTY_NOTICES.md +22 -0
  4. package/assets/screenshots/webui-ask-answer.png +0 -0
  5. package/assets/screenshots/webui-collections.png +0 -0
  6. package/assets/screenshots/webui-editor.png +0 -0
  7. package/assets/screenshots/webui-home.png +0 -0
  8. package/assets/skill/SKILL.md +12 -12
  9. package/assets/skill/cli-reference.md +59 -57
  10. package/assets/skill/examples.md +8 -7
  11. package/assets/skill/mcp-reference.md +8 -4
  12. package/package.json +32 -25
  13. package/src/app/constants.ts +43 -42
  14. package/src/cli/colors.ts +1 -1
  15. package/src/cli/commands/ask.ts +44 -43
  16. package/src/cli/commands/cleanup.ts +9 -8
  17. package/src/cli/commands/collection/add.ts +12 -12
  18. package/src/cli/commands/collection/index.ts +4 -4
  19. package/src/cli/commands/collection/list.ts +26 -25
  20. package/src/cli/commands/collection/remove.ts +10 -10
  21. package/src/cli/commands/collection/rename.ts +10 -10
  22. package/src/cli/commands/context/add.ts +1 -1
  23. package/src/cli/commands/context/check.ts +17 -17
  24. package/src/cli/commands/context/index.ts +4 -4
  25. package/src/cli/commands/context/list.ts +11 -11
  26. package/src/cli/commands/context/rm.ts +1 -1
  27. package/src/cli/commands/doctor.ts +86 -84
  28. package/src/cli/commands/embed.ts +30 -28
  29. package/src/cli/commands/get.ts +27 -26
  30. package/src/cli/commands/index-cmd.ts +9 -9
  31. package/src/cli/commands/index.ts +16 -16
  32. package/src/cli/commands/init.ts +13 -12
  33. package/src/cli/commands/ls.ts +20 -19
  34. package/src/cli/commands/mcp/config.ts +30 -28
  35. package/src/cli/commands/mcp/index.ts +4 -4
  36. package/src/cli/commands/mcp/install.ts +17 -17
  37. package/src/cli/commands/mcp/paths.ts +133 -133
  38. package/src/cli/commands/mcp/status.ts +21 -21
  39. package/src/cli/commands/mcp/uninstall.ts +13 -13
  40. package/src/cli/commands/mcp.ts +2 -2
  41. package/src/cli/commands/models/clear.ts +12 -11
  42. package/src/cli/commands/models/index.ts +5 -5
  43. package/src/cli/commands/models/list.ts +31 -30
  44. package/src/cli/commands/models/path.ts +1 -1
  45. package/src/cli/commands/models/pull.ts +19 -18
  46. package/src/cli/commands/models/use.ts +4 -4
  47. package/src/cli/commands/multi-get.ts +38 -36
  48. package/src/cli/commands/query.ts +21 -20
  49. package/src/cli/commands/ref-parser.ts +10 -10
  50. package/src/cli/commands/reset.ts +40 -39
  51. package/src/cli/commands/search.ts +14 -13
  52. package/src/cli/commands/serve.ts +4 -4
  53. package/src/cli/commands/shared.ts +11 -10
  54. package/src/cli/commands/skill/index.ts +5 -5
  55. package/src/cli/commands/skill/install.ts +18 -17
  56. package/src/cli/commands/skill/paths-cmd.ts +11 -10
  57. package/src/cli/commands/skill/paths.ts +23 -23
  58. package/src/cli/commands/skill/show.ts +13 -12
  59. package/src/cli/commands/skill/uninstall.ts +16 -15
  60. package/src/cli/commands/status.ts +25 -24
  61. package/src/cli/commands/update.ts +3 -3
  62. package/src/cli/commands/vsearch.ts +17 -16
  63. package/src/cli/context.ts +5 -5
  64. package/src/cli/errors.ts +3 -3
  65. package/src/cli/format/search-results.ts +37 -37
  66. package/src/cli/options.ts +43 -43
  67. package/src/cli/program.ts +455 -459
  68. package/src/cli/progress.ts +1 -1
  69. package/src/cli/run.ts +24 -23
  70. package/src/collection/add.ts +9 -8
  71. package/src/collection/index.ts +3 -3
  72. package/src/collection/remove.ts +7 -6
  73. package/src/collection/types.ts +6 -6
  74. package/src/config/defaults.ts +1 -1
  75. package/src/config/index.ts +5 -5
  76. package/src/config/loader.ts +19 -18
  77. package/src/config/paths.ts +9 -8
  78. package/src/config/saver.ts +14 -13
  79. package/src/config/types.ts +53 -52
  80. package/src/converters/adapters/markitdownTs/adapter.ts +21 -19
  81. package/src/converters/adapters/officeparser/adapter.ts +18 -16
  82. package/src/converters/canonicalize.ts +12 -12
  83. package/src/converters/errors.ts +26 -22
  84. package/src/converters/index.ts +8 -8
  85. package/src/converters/mime.ts +25 -25
  86. package/src/converters/native/markdown.ts +10 -9
  87. package/src/converters/native/plaintext.ts +8 -7
  88. package/src/converters/path.ts +2 -2
  89. package/src/converters/pipeline.ts +11 -10
  90. package/src/converters/registry.ts +8 -8
  91. package/src/converters/types.ts +14 -14
  92. package/src/converters/versions.ts +4 -4
  93. package/src/index.ts +4 -4
  94. package/src/ingestion/chunker.ts +10 -9
  95. package/src/ingestion/index.ts +6 -6
  96. package/src/ingestion/language.ts +62 -62
  97. package/src/ingestion/sync.ts +50 -49
  98. package/src/ingestion/types.ts +10 -10
  99. package/src/ingestion/walker.ts +14 -13
  100. package/src/llm/cache.ts +51 -49
  101. package/src/llm/errors.ts +40 -36
  102. package/src/llm/index.ts +9 -9
  103. package/src/llm/lockfile.ts +6 -6
  104. package/src/llm/nodeLlamaCpp/adapter.ts +13 -12
  105. package/src/llm/nodeLlamaCpp/embedding.ts +9 -8
  106. package/src/llm/nodeLlamaCpp/generation.ts +7 -6
  107. package/src/llm/nodeLlamaCpp/lifecycle.ts +11 -10
  108. package/src/llm/nodeLlamaCpp/rerank.ts +6 -5
  109. package/src/llm/policy.ts +5 -5
  110. package/src/llm/registry.ts +6 -5
  111. package/src/llm/types.ts +2 -2
  112. package/src/mcp/resources/index.ts +15 -13
  113. package/src/mcp/server.ts +25 -23
  114. package/src/mcp/tools/get.ts +25 -23
  115. package/src/mcp/tools/index.ts +32 -29
  116. package/src/mcp/tools/multi-get.ts +34 -32
  117. package/src/mcp/tools/query.ts +29 -27
  118. package/src/mcp/tools/search.ts +14 -12
  119. package/src/mcp/tools/status.ts +12 -11
  120. package/src/mcp/tools/vsearch.ts +26 -24
  121. package/src/pipeline/answer.ts +9 -9
  122. package/src/pipeline/chunk-lookup.ts +1 -1
  123. package/src/pipeline/contextual.ts +4 -4
  124. package/src/pipeline/expansion.ts +23 -21
  125. package/src/pipeline/explain.ts +21 -21
  126. package/src/pipeline/fusion.ts +9 -9
  127. package/src/pipeline/hybrid.ts +41 -42
  128. package/src/pipeline/index.ts +10 -10
  129. package/src/pipeline/query-language.ts +39 -39
  130. package/src/pipeline/rerank.ts +8 -7
  131. package/src/pipeline/search.ts +22 -22
  132. package/src/pipeline/types.ts +8 -8
  133. package/src/pipeline/vsearch.ts +21 -24
  134. package/src/serve/CLAUDE.md +21 -15
  135. package/src/serve/config-sync.ts +9 -8
  136. package/src/serve/context.ts +19 -18
  137. package/src/serve/index.ts +1 -1
  138. package/src/serve/jobs.ts +7 -7
  139. package/src/serve/public/app.tsx +79 -25
  140. package/src/serve/public/components/AddCollectionDialog.tsx +382 -0
  141. package/src/serve/public/components/CaptureButton.tsx +60 -0
  142. package/src/serve/public/components/CaptureModal.tsx +365 -0
  143. package/src/serve/public/components/IndexingProgress.tsx +333 -0
  144. package/src/serve/public/components/ShortcutHelpModal.tsx +106 -0
  145. package/src/serve/public/components/ai-elements/code-block.tsx +42 -32
  146. package/src/serve/public/components/ai-elements/conversation.tsx +16 -14
  147. package/src/serve/public/components/ai-elements/inline-citation.tsx +33 -32
  148. package/src/serve/public/components/ai-elements/loader.tsx +5 -4
  149. package/src/serve/public/components/ai-elements/message.tsx +39 -37
  150. package/src/serve/public/components/ai-elements/prompt-input.tsx +97 -95
  151. package/src/serve/public/components/ai-elements/sources.tsx +12 -10
  152. package/src/serve/public/components/ai-elements/suggestion.tsx +10 -9
  153. package/src/serve/public/components/editor/CodeMirrorEditor.tsx +142 -0
  154. package/src/serve/public/components/editor/MarkdownPreview.tsx +311 -0
  155. package/src/serve/public/components/editor/index.ts +6 -0
  156. package/src/serve/public/components/preset-selector.tsx +29 -28
  157. package/src/serve/public/components/ui/badge.tsx +13 -12
  158. package/src/serve/public/components/ui/button-group.tsx +13 -12
  159. package/src/serve/public/components/ui/button.tsx +23 -22
  160. package/src/serve/public/components/ui/card.tsx +16 -16
  161. package/src/serve/public/components/ui/carousel.tsx +36 -35
  162. package/src/serve/public/components/ui/collapsible.tsx +1 -1
  163. package/src/serve/public/components/ui/command.tsx +17 -15
  164. package/src/serve/public/components/ui/dialog.tsx +13 -12
  165. package/src/serve/public/components/ui/dropdown-menu.tsx +13 -12
  166. package/src/serve/public/components/ui/hover-card.tsx +6 -5
  167. package/src/serve/public/components/ui/input-group.tsx +45 -43
  168. package/src/serve/public/components/ui/input.tsx +6 -6
  169. package/src/serve/public/components/ui/progress.tsx +5 -4
  170. package/src/serve/public/components/ui/scroll-area.tsx +11 -10
  171. package/src/serve/public/components/ui/select.tsx +19 -18
  172. package/src/serve/public/components/ui/separator.tsx +6 -5
  173. package/src/serve/public/components/ui/table.tsx +18 -18
  174. package/src/serve/public/components/ui/textarea.tsx +4 -4
  175. package/src/serve/public/components/ui/tooltip.tsx +5 -4
  176. package/src/serve/public/globals.css +27 -4
  177. package/src/serve/public/hooks/use-api.ts +8 -8
  178. package/src/serve/public/hooks/useCaptureModal.tsx +83 -0
  179. package/src/serve/public/hooks/useKeyboardShortcuts.ts +85 -0
  180. package/src/serve/public/index.html +4 -4
  181. package/src/serve/public/lib/utils.ts +6 -0
  182. package/src/serve/public/pages/Ask.tsx +27 -26
  183. package/src/serve/public/pages/Browse.tsx +28 -27
  184. package/src/serve/public/pages/Collections.tsx +439 -0
  185. package/src/serve/public/pages/Dashboard.tsx +166 -40
  186. package/src/serve/public/pages/DocView.tsx +258 -73
  187. package/src/serve/public/pages/DocumentEditor.tsx +510 -0
  188. package/src/serve/public/pages/Search.tsx +80 -58
  189. package/src/serve/routes/api.ts +272 -155
  190. package/src/serve/security.ts +4 -4
  191. package/src/serve/server.ts +66 -48
  192. package/src/store/index.ts +5 -5
  193. package/src/store/migrations/001-initial.ts +24 -23
  194. package/src/store/migrations/002-documents-fts.ts +7 -6
  195. package/src/store/migrations/index.ts +4 -4
  196. package/src/store/migrations/runner.ts +17 -15
  197. package/src/store/sqlite/adapter.ts +123 -121
  198. package/src/store/sqlite/fts5-snowball.ts +24 -23
  199. package/src/store/sqlite/index.ts +1 -1
  200. package/src/store/sqlite/setup.ts +12 -12
  201. package/src/store/sqlite/types.ts +4 -4
  202. package/src/store/types.ts +19 -19
  203. package/src/store/vector/index.ts +3 -3
  204. package/src/store/vector/sqlite-vec.ts +23 -20
  205. package/src/store/vector/stats.ts +10 -8
  206. package/src/store/vector/types.ts +2 -2
  207. package/vendor/fts5-snowball/README.md +6 -6
  208. package/assets/screenshots/webui-ask-answer.jpg +0 -0
  209. package/assets/screenshots/webui-home.jpg +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Gordon Mickel
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -99,12 +99,12 @@ gno skill install --target all # Both Claude + Codex
99
99
 
100
100
  ## Search Modes
101
101
 
102
- | Command | Mode | Best For |
103
- |:--------|:-----|:---------|
104
- | `gno search` | Document-level BM25 | Exact phrases, code identifiers |
105
- | `gno vsearch` | Contextual Vector | Natural language, concepts |
106
- | `gno query` | Hybrid | Best accuracy (BM25 + vector + reranking) |
107
- | `gno ask --answer` | RAG | Direct answers with citations |
102
+ | Command | Mode | Best For |
103
+ | :----------------- | :------------------ | :---------------------------------------- |
104
+ | `gno search` | Document-level BM25 | Exact phrases, code identifiers |
105
+ | `gno vsearch` | Contextual Vector | Natural language, concepts |
106
+ | `gno query` | Hybrid | Best accuracy (BM25 + vector + reranking) |
107
+ | `gno ask --answer` | RAG | Direct answers with citations |
108
108
 
109
109
  **BM25** indexes full documents (not chunks) with Snowball stemming—"running" matches "run".
110
110
  **Vector** embeds chunks with document titles for context awareness.
@@ -122,22 +122,53 @@ Output formats: `--json`, `--files`, `--csv`, `--md`, `--xml`
122
122
 
123
123
  ## Web UI
124
124
 
125
- Visual dashboard for search, browsing, and AI answers—right in your browser.
125
+ Visual dashboard for search, browsing, editing, and AI answers—right in your browser.
126
126
 
127
127
  ```bash
128
128
  gno serve # Start on port 3000
129
129
  gno serve --port 8080 # Custom port
130
130
  ```
131
131
 
132
- ![GNO Web UI](./assets/screenshots/webui-home.jpg)
132
+ ![GNO Web UI](./assets/screenshots/webui-home.png)
133
133
 
134
134
  Open `http://localhost:3000` to:
135
135
 
136
136
  - **Search** — BM25, vector, or hybrid modes with visual results
137
137
  - **Browse** — Paginated document list, filter by collection
138
+ - **Edit** — Create, edit, and delete documents with live preview
138
139
  - **Ask** — AI-powered Q&A with citations
140
+ - **Manage Collections** — Add, remove, and re-index collections
139
141
  - **Switch presets** — Change models live without restart
140
142
 
143
+ ### Document Editing
144
+
145
+ ![GNO Document Editor](./assets/screenshots/webui-editor.png)
146
+
147
+ Full-featured markdown editor with:
148
+
149
+ | Feature | Description |
150
+ | :---------------------- | :----------------------------------- |
151
+ | **Split View** | Side-by-side editor and live preview |
152
+ | **Auto-save** | 2-second debounced saves |
153
+ | **Syntax Highlighting** | CodeMirror 6 with markdown support |
154
+ | **Keyboard Shortcuts** | ⌘S save, ⌘B bold, ⌘I italic, ⌘K link |
155
+ | **Quick Capture** | ⌘N creates new note from anywhere |
156
+
157
+ ### Collections Management
158
+
159
+ ![GNO Collections](./assets/screenshots/webui-collections.png)
160
+
161
+ - Add collections with folder path input
162
+ - View document count, chunk count, embedding status
163
+ - Re-index individual collections
164
+ - Remove collections (documents preserved)
165
+
166
+ ### AI Answers
167
+
168
+ ![GNO AI Answers](./assets/screenshots/webui-ask-answer.png)
169
+
170
+ Ask questions in natural language—GNO searches your documents and synthesizes answers with inline citations linking to sources.
171
+
141
172
  Everything runs locally. No cloud, no accounts, no data leaving your machine.
142
173
 
143
174
  > **Detailed docs**: [Web UI Guide](https://gno.sh/docs/WEB-UI/)
@@ -163,17 +194,24 @@ curl -X POST http://localhost:3000/api/ask \
163
194
  curl http://localhost:3000/api/status
164
195
  ```
165
196
 
166
- | Endpoint | Method | Description |
167
- |:---------|:-------|:------------|
168
- | `/api/query` | POST | Hybrid search (recommended) |
169
- | `/api/search` | POST | BM25 keyword search |
170
- | `/api/ask` | POST | AI-powered Q&A |
171
- | `/api/docs` | GET | List documents |
172
- | `/api/doc` | GET | Get document content |
173
- | `/api/status` | GET | Index statistics |
174
- | `/api/presets` | GET/POST | Model preset management |
175
- | `/api/models/pull` | POST | Download models |
176
- | `/api/models/status` | GET | Download progress |
197
+ | Endpoint | Method | Description |
198
+ | :------------------------- | :----- | :-------------------------- |
199
+ | `/api/query` | POST | Hybrid search (recommended) |
200
+ | `/api/search` | POST | BM25 keyword search |
201
+ | `/api/ask` | POST | AI-powered Q&A |
202
+ | `/api/docs` | GET | List documents |
203
+ | `/api/docs` | POST | Create document |
204
+ | `/api/docs/:id` | PUT | Update document content |
205
+ | `/api/docs/:id/deactivate` | POST | Remove from index |
206
+ | `/api/doc` | GET | Get document content |
207
+ | `/api/collections` | POST | Add collection |
208
+ | `/api/collections/:name` | DELETE | Remove collection |
209
+ | `/api/sync` | POST | Trigger re-index |
210
+ | `/api/status` | GET | Index statistics |
211
+ | `/api/presets` | GET | List model presets |
212
+ | `/api/presets` | POST | Switch preset |
213
+ | `/api/models/pull` | POST | Download models |
214
+ | `/api/models/status` | GET | Download progress |
177
215
 
178
216
  No authentication. No rate limits. Build custom tools, automate workflows, integrate with any language.
179
217
 
@@ -189,14 +227,14 @@ No authentication. No rate limits. Build custom tools, automate workflows, integ
189
227
 
190
228
  GNO exposes 6 tools via [Model Context Protocol](https://modelcontextprotocol.io):
191
229
 
192
- | Tool | Description |
193
- |:-----|:------------|
194
- | `gno_search` | BM25 keyword search |
195
- | `gno_vsearch` | Vector semantic search |
196
- | `gno_query` | Hybrid search (recommended) |
197
- | `gno_get` | Retrieve document by ID |
198
- | `gno_multi_get` | Batch document retrieval |
199
- | `gno_status` | Index health check |
230
+ | Tool | Description |
231
+ | :-------------- | :-------------------------- |
232
+ | `gno_search` | BM25 keyword search |
233
+ | `gno_vsearch` | Vector semantic search |
234
+ | `gno_query` | Hybrid search (recommended) |
235
+ | `gno_get` | Retrieve document by ID |
236
+ | `gno_multi_get` | Batch document retrieval |
237
+ | `gno_status` | Index health check |
200
238
 
201
239
  **Design**: MCP tools are retrieval-only. Your AI assistant (Claude, GPT-4) synthesizes answers from retrieved context—best retrieval (GNO) + best reasoning (your LLM).
202
240
 
@@ -210,7 +248,7 @@ gno skill install --scope user
210
248
 
211
249
  ![GNO Skill in Claude Code](./assets/screenshots/claudecodeskill.jpg)
212
250
 
213
- Then ask your agent: *"Search my notes for the auth discussion"*
251
+ Then ask your agent: _"Search my notes for the auth discussion"_
214
252
 
215
253
  > **Detailed docs**: [MCP Integration](https://gno.sh/docs/MCP/) · [Use Cases](https://gno.sh/docs/USE-CASES/)
216
254
 
@@ -253,18 +291,20 @@ graph TD
253
291
 
254
292
  ## Features
255
293
 
256
- | Feature | Description |
257
- |:--------|:------------|
258
- | **Hybrid Search** | BM25 + vector + RRF fusion + cross-encoder reranking |
259
- | **Web UI** | Visual dashboard for search, browse, and AI Q&A |
260
- | **REST API** | HTTP API for custom tools and integrations |
261
- | **Multi-Format** | Markdown, PDF, DOCX, XLSX, PPTX, plain text |
262
- | **Local LLM** | AI answers via llama.cpp—no API keys |
263
- | **Privacy First** | 100% offline, zero telemetry, your data stays yours |
264
- | **MCP Server** | Works with Claude Desktop, Cursor, Zed, + 8 more |
265
- | **Collections** | Organize sources with patterns, excludes, contexts |
266
- | **Multilingual** | 30+ languages, auto-detection, cross-lingual search |
267
- | **Incremental** | SHA-256 tracking—only changed files re-indexed |
294
+ | Feature | Description |
295
+ | :------------------ | :---------------------------------------------------- |
296
+ | **Hybrid Search** | BM25 + vector + RRF fusion + cross-encoder reranking |
297
+ | **Document Editor** | Create, edit, delete docs with live markdown preview |
298
+ | **Web UI** | Visual dashboard for search, browse, edit, and AI Q&A |
299
+ | **REST API** | HTTP API for custom tools and integrations |
300
+ | **Multi-Format** | Markdown, PDF, DOCX, XLSX, PPTX, plain text |
301
+ | **Local LLM** | AI answers via llama.cpp—no API keys |
302
+ | **Privacy First** | 100% offline, zero telemetry, your data stays yours |
303
+ | **MCP Server** | Works with Claude Desktop, Cursor, Zed, + 8 more |
304
+ | **Collections** | Organize sources with patterns, excludes, contexts |
305
+ | **Multilingual** | 30+ languages, auto-detection, cross-lingual search |
306
+ | **Incremental** | SHA-256 tracking—only changed files re-indexed |
307
+ | **Keyboard First** | ⌘N capture, ⌘K search, ⌘/ shortcuts, ⌘S save |
268
308
 
269
309
  ---
270
310
 
@@ -272,19 +312,19 @@ graph TD
272
312
 
273
313
  Models auto-download on first use to `~/.cache/gno/models/`.
274
314
 
275
- | Model | Purpose | Size |
276
- |:------|:--------|:-----|
277
- | bge-m3 | Embeddings (1024-dim, multilingual) | ~500MB |
278
- | Qwen3-Reranker-0.6B | Cross-encoder reranking (32K context) | ~700MB |
279
- | Qwen/SmolLM | Query expansion + AI answers | ~600MB-1.2GB |
315
+ | Model | Purpose | Size |
316
+ | :------------------ | :------------------------------------ | :----------- |
317
+ | bge-m3 | Embeddings (1024-dim, multilingual) | ~500MB |
318
+ | Qwen3-Reranker-0.6B | Cross-encoder reranking (32K context) | ~700MB |
319
+ | Qwen/SmolLM | Query expansion + AI answers | ~600MB-1.2GB |
280
320
 
281
321
  ### Model Presets
282
322
 
283
- | Preset | Disk | Best For |
284
- |:-------|:-----|:---------|
285
- | `slim` | ~1GB | Fast, lower quality |
286
- | `balanced` | ~2GB | Good balance (default) |
287
- | `quality` | ~2.5GB | Best answers |
323
+ | Preset | Disk | Best For |
324
+ | :--------- | :----- | :--------------------- |
325
+ | `slim` | ~1GB | Fast, lower quality |
326
+ | `balanced` | ~2GB | Good balance (default) |
327
+ | `quality` | ~2.5GB | Best answers |
288
328
 
289
329
  ```bash
290
330
  gno models use balanced
@@ -0,0 +1,22 @@
1
+ # Third-Party Notices
2
+
3
+ This project includes the following third-party components:
4
+
5
+ ## fts5-snowball
6
+
7
+ - **Source**: vendored under `vendor/fts5-snowball/`
8
+ - **License**: BSD-3-Clause
9
+ - **Copyright**: (c) 2016 Abilio Marques
10
+ - **Project URL**: https://github.com/abiliojr/fts5-snowball
11
+
12
+ See `vendor/fts5-snowball/LICENSE` for the full license text.
13
+
14
+ ## Snowball Stemmer Library
15
+
16
+ Bundled within fts5-snowball.
17
+
18
+ - **License**: BSD-3-Clause
19
+ - **Copyright**: (c) 2001-2025 Dr Martin Porter and Richard Boulton
20
+ - **Project URL**: https://github.com/snowballstem/snowball
21
+
22
+ See `vendor/fts5-snowball/LICENSE` for the full license text.
@@ -41,21 +41,21 @@ gno search "your query"
41
41
 
42
42
  ### Indexing
43
43
 
44
- | Command | Description |
45
- |---------|-------------|
46
- | `gno init` | Initialize GNO in current directory |
47
- | `gno collection add <path> --name <name>` | Add folder to index |
48
- | `gno index` | Full index (ingest + embed) |
49
- | `gno update` | Sync files without embedding |
44
+ | Command | Description |
45
+ | ----------------------------------------- | ----------------------------------- |
46
+ | `gno init` | Initialize GNO in current directory |
47
+ | `gno collection add <path> --name <name>` | Add folder to index |
48
+ | `gno index` | Full index (ingest + embed) |
49
+ | `gno update` | Sync files without embedding |
50
50
 
51
51
  ### Searching
52
52
 
53
- | Command | Description |
54
- |---------|-------------|
55
- | `gno search <query>` | BM25 keyword search |
56
- | `gno vsearch <query>` | Vector semantic search |
57
- | `gno query <query>` | Hybrid search (BM25 + vector + rerank) |
58
- | `gno ask <question>` | AI-powered Q&A with citations |
53
+ | Command | Description |
54
+ | --------------------- | -------------------------------------- |
55
+ | `gno search <query>` | BM25 keyword search |
56
+ | `gno vsearch <query>` | Vector semantic search |
57
+ | `gno query <query>` | Hybrid search (BM25 + vector + rerank) |
58
+ | `gno ask <question>` | AI-powered Q&A with citations |
59
59
 
60
60
  ### Common Options
61
61
 
@@ -6,14 +6,14 @@ Complete command reference for GNO.
6
6
 
7
7
  All commands accept:
8
8
 
9
- | Flag | Description |
10
- |------|-------------|
11
- | `--index <name>` | Use alternate index (default: "default") |
12
- | `--config <path>` | Override config file path |
13
- | `--no-color` | Disable colored output |
14
- | `--verbose` | Enable verbose logging |
15
- | `--yes` | Non-interactive mode |
16
- | `--json` | JSON output (where supported) |
9
+ | Flag | Description |
10
+ | ----------------- | ---------------------------------------- |
11
+ | `--index <name>` | Use alternate index (default: "default") |
12
+ | `--config <path>` | Override config file path |
13
+ | `--no-color` | Disable colored output |
14
+ | `--verbose` | Enable verbose logging |
15
+ | `--yes` | Non-interactive mode |
16
+ | `--json` | JSON output (where supported) |
17
17
 
18
18
  ## Initialization
19
19
 
@@ -23,14 +23,14 @@ All commands accept:
23
23
  gno init [<path>] [options]
24
24
  ```
25
25
 
26
- | Option | Description |
27
- |--------|-------------|
28
- | `--name <name>` | Collection name |
29
- | `--pattern <glob>` | File pattern (default: `**/*`) |
30
- | `--include <exts>` | Extension allowlist (e.g., `.md,.pdf`) |
31
- | `--exclude <paths>` | Exclude patterns (default: `.git,node_modules`) |
32
- | `--tokenizer <type>` | FTS tokenizer: unicode61, porter, trigram |
33
- | `--language <code>` | BCP-47 language hint |
26
+ | Option | Description |
27
+ | -------------------- | ----------------------------------------------- |
28
+ | `--name <name>` | Collection name |
29
+ | `--pattern <glob>` | File pattern (default: `**/*`) |
30
+ | `--include <exts>` | Extension allowlist (e.g., `.md,.pdf`) |
31
+ | `--exclude <paths>` | Exclude patterns (default: `.git,node_modules`) |
32
+ | `--tokenizer <type>` | FTS tokenizer: unicode61, porter, trigram |
33
+ | `--language <code>` | BCP-47 language hint |
34
34
 
35
35
  ## Collections
36
36
 
@@ -78,12 +78,12 @@ Full index (update + embed).
78
78
  gno index [options]
79
79
  ```
80
80
 
81
- | Option | Description |
82
- |--------|-------------|
81
+ | Option | Description |
82
+ | --------------------- | -------------------------- |
83
83
  | `--collection <name>` | Scope to single collection |
84
- | `--no-embed` | Skip embedding |
85
- | `--models-pull` | Download models if missing |
86
- | `--git-pull` | Git pull before indexing |
84
+ | `--no-embed` | Skip embedding |
85
+ | `--models-pull` | Download models if missing |
86
+ | `--git-pull` | Git pull before indexing |
87
87
 
88
88
  ### gno embed
89
89
 
@@ -103,14 +103,14 @@ BM25 keyword search.
103
103
  gno search <query> [options]
104
104
  ```
105
105
 
106
- | Option | Default | Description |
107
- |--------|---------|-------------|
108
- | `-n` | 5 | Max results |
109
- | `--min-score` | 0 | Minimum score (0-1) |
110
- | `-c, --collection` | all | Filter to collection |
111
- | `--full` | false | Full content (not snippets) |
112
- | `--line-numbers` | false | Include line numbers |
113
- | `--lang` | auto | Language filter |
106
+ | Option | Default | Description |
107
+ | ------------------ | ------- | --------------------------- |
108
+ | `-n` | 5 | Max results |
109
+ | `--min-score` | 0 | Minimum score (0-1) |
110
+ | `-c, --collection` | all | Filter to collection |
111
+ | `--full` | false | Full content (not snippets) |
112
+ | `--line-numbers` | false | Include line numbers |
113
+ | `--lang` | auto | Language filter |
114
114
 
115
115
  Output formats: `--json`, `--files`, `--csv`, `--md`, `--xml`
116
116
 
@@ -132,19 +132,19 @@ gno query <query> [options]
132
132
 
133
133
  **Search modes** (pick one):
134
134
 
135
- | Flag | Time | Description |
136
- |------|------|-------------|
137
- | `--fast` | ~0.7s | Skip expansion and reranking |
138
- | (default) | ~2-3s | Skip expansion, with reranking |
139
- | `--thorough` | ~5-8s | Full pipeline with expansion |
135
+ | Flag | Time | Description |
136
+ | ------------ | ----- | ------------------------------ |
137
+ | `--fast` | ~0.7s | Skip expansion and reranking |
138
+ | (default) | ~2-3s | Skip expansion, with reranking |
139
+ | `--thorough` | ~5-8s | Full pipeline with expansion |
140
140
 
141
141
  Additional options:
142
142
 
143
- | Option | Description |
144
- |--------|-------------|
145
- | `--no-expand` | Disable query expansion |
146
- | `--no-rerank` | Disable reranking |
147
- | `--explain` | Print retrieval details to stderr |
143
+ | Option | Description |
144
+ | ------------- | --------------------------------- |
145
+ | `--no-expand` | Disable query expansion |
146
+ | `--no-rerank` | Disable reranking |
147
+ | `--explain` | Print retrieval details to stderr |
148
148
 
149
149
  ### gno ask
150
150
 
@@ -154,14 +154,14 @@ AI-powered Q&A with citations.
154
154
  gno ask <question> [options]
155
155
  ```
156
156
 
157
- | Option | Description |
158
- |--------|-------------|
159
- | `--fast` | Skip expansion and reranking (fastest) |
160
- | `--thorough` | Enable query expansion (better recall) |
161
- | `--answer` | Generate grounded answer |
162
- | `--no-answer` | Retrieval only |
163
- | `--max-answer-tokens <n>` | Cap answer length |
164
- | `--show-sources` | Show all sources |
157
+ | Option | Description |
158
+ | ------------------------- | -------------------------------------- |
159
+ | `--fast` | Skip expansion and reranking (fastest) |
160
+ | `--thorough` | Enable query expansion (better recall) |
161
+ | `--answer` | Generate grounded answer |
162
+ | `--no-answer` | Retrieval only |
163
+ | `--max-answer-tokens <n>` | Cap answer length |
164
+ | `--show-sources` | Show all sources |
165
165
 
166
166
  ## Document Retrieval
167
167
 
@@ -174,6 +174,7 @@ gno get <ref> [--from <line>] [-l <lines>] [--line-numbers] [--source]
174
174
  ```
175
175
 
176
176
  Ref formats:
177
+
177
178
  - `gno://collection/path` — Full URI
178
179
  - `collection/path` — Relative path
179
180
  - `#docid` — Document ID
@@ -204,6 +205,7 @@ gno context add <scope> "<text>"
204
205
  ```
205
206
 
206
207
  Scope formats:
208
+
207
209
  - `/` — Global
208
210
  - `collection:` — Collection prefix
209
211
  - `gno://collection/path` — Path prefix
@@ -292,12 +294,12 @@ Install GNO as MCP server in client configurations.
292
294
  gno mcp install [options]
293
295
  ```
294
296
 
295
- | Option | Default | Description |
296
- |--------|---------|-------------|
297
+ | Option | Default | Description |
298
+ | -------------- | -------------- | ------------------------------------------------ |
297
299
  | `-t, --target` | claude-desktop | Target: `claude-desktop`, `claude-code`, `codex` |
298
- | `-s, --scope` | user | Scope: `user`, `project` |
299
- | `-f, --force` | false | Overwrite existing config |
300
- | `--dry-run` | false | Preview changes |
300
+ | `-s, --scope` | user | Scope: `user`, `project` |
301
+ | `-f, --force` | false | Overwrite existing config |
302
+ | `--dry-run` | false | Preview changes |
301
303
 
302
304
  Examples:
303
305
 
@@ -330,8 +332,8 @@ gno mcp status [--json]
330
332
 
331
333
  ## Exit Codes
332
334
 
333
- | Code | Description |
334
- |------|-------------|
335
- | 0 | Success |
336
- | 1 | Validation error (bad args) |
337
- | 2 | Runtime error (IO, DB, model) |
335
+ | Code | Description |
336
+ | ---- | ----------------------------- |
337
+ | 0 | Success |
338
+ | 1 | Validation error (bad args) |
339
+ | 2 | Runtime error (IO, DB, model) |
@@ -195,15 +195,16 @@ gno models pull
195
195
 
196
196
  ### Search Modes
197
197
 
198
- | Command | Time | Use When |
199
- |---------|------|----------|
200
- | `gno search` | instant | Exact keyword matching |
201
- | `gno vsearch` | ~0.5s | Finding similar concepts |
202
- | `gno query --fast` | ~0.7s | Quick lookups |
203
- | `gno query` | ~2-3s | Default, balanced |
204
- | `gno query --thorough` | ~5-8s | Best recall, complex queries |
198
+ | Command | Time | Use When |
199
+ | ---------------------- | ------- | ---------------------------- |
200
+ | `gno search` | instant | Exact keyword matching |
201
+ | `gno vsearch` | ~0.5s | Finding similar concepts |
202
+ | `gno query --fast` | ~0.7s | Quick lookups |
203
+ | `gno query` | ~2-3s | Default, balanced |
204
+ | `gno query --thorough` | ~5-8s | Best recall, complex queries |
205
205
 
206
206
  **Agent retry strategy**: Use default mode first. If no results:
207
+
207
208
  1. Rephrase the query (free, often helps)
208
209
  2. Try `--thorough` for better recall
209
210
 
@@ -20,6 +20,7 @@ Add to `claude_desktop_config.json`:
20
20
  ```
21
21
 
22
22
  Config location:
23
+
23
24
  - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
24
25
  - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
25
26
  - Linux: `~/.config/Claude/claude_desktop_config.json`
@@ -66,15 +67,16 @@ Hybrid search (best quality).
66
67
 
67
68
  **Search modes** (via parameters):
68
69
 
69
- | Mode | Parameters | Time |
70
- |------|------------|------|
71
- | Fast | `fast: true` | ~0.7s |
72
- | Default | (none) | ~2-3s |
70
+ | Mode | Parameters | Time |
71
+ | -------- | ---------------- | ----- |
72
+ | Fast | `fast: true` | ~0.7s |
73
+ | Default | (none) | ~2-3s |
73
74
  | Thorough | `thorough: true` | ~5-8s |
74
75
 
75
76
  Default skips expansion, with reranking. Use `thorough: true` for best recall.
76
77
 
77
78
  **Agent retry strategy**: Use default mode first. If no relevant results:
79
+
78
80
  1. Rephrase the query (free, often effective)
79
81
  2. Then try `thorough: true` for better recall
80
82
 
@@ -129,6 +131,7 @@ gno://{collection}/{path}
129
131
  ```
130
132
 
131
133
  Examples:
134
+
132
135
  - `gno://work/contracts/nda.docx`
133
136
  - `gno://notes/2025/01/meeting.md`
134
137
 
@@ -166,6 +169,7 @@ Errors return:
166
169
  ## Graceful Degradation
167
170
 
168
171
  `gno.query` degrades gracefully:
172
+
169
173
  - No vectors → BM25 only
170
174
  - No expansion model → skips expansion
171
175
  - No rerank model → skips reranking