@gmickel/gno 1.13.0 → 1.14.0

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.
package/README.md CHANGED
@@ -92,7 +92,12 @@ gno daemon --detach # headless continuous indexing (background; --status / --st
92
92
 
93
93
  ## What's New
94
94
 
95
- > Latest release: see [CHANGELOG.md](./CHANGELOG.md)
95
+ <!-- public-truth:current-version -->
96
+
97
+ > Current release: **v1.14.0** — see [CHANGELOG.md](./CHANGELOG.md)
98
+
99
+ <!-- /public-truth -->
100
+
96
101
  > Full release history: [CHANGELOG.md](./CHANGELOG.md)
97
102
 
98
103
  - **Retrieval-proven activation**: `gno status`, `gno doctor`, REST, and the
@@ -109,7 +114,9 @@ gno daemon --detach # headless continuous indexing (background; --status / --st
109
114
  - **Publish to [gno.sh](https://gno.sh/publish)**: new `gno publish export` CLI and Web UI action produce a self-contained artifact you upload to the hosted reader — public, secret, invite-only, or locally encrypted before upload
110
115
  - **Retrieval Quality Upgrade**: stronger BM25 lexical handling, code-aware chunking, terminal result hyperlinks, and per-collection model overrides
111
116
  - **Code Embedding Benchmarks**: new benchmark workflow across canonical, real-GNO, and pinned OSS slices for comparing alternate embedding models
112
- - **Default Embed Model**: built-in presets now use `Qwen3-Embedding-0.6B-GGUF` after it beat `bge-m3` on both code and multilingual prose benchmark lanes
117
+ <!-- public-truth:default-embed-model -->
118
+ - **Default Embed Model**: all four built-in presets use `Qwen3-Embedding-0.6B-GGUF`; see the dated, fixture-scoped evidence below
119
+ <!-- /public-truth -->
113
120
  - **Regression Fixes**: tightened phrase/negation/hyphen/underscore BM25 behavior, cleaned non-TTY hyperlink output, improved `gno doctor` chunking and embedding fingerprint visibility, and fixed the embedding autoresearch harness
114
121
 
115
122
  ### Upgrading Existing Collections
@@ -201,7 +208,11 @@ Manage the detached process with `gno daemon --status` and `gno daemon --stop`.
201
208
 
202
209
  ### Install GNO
203
210
 
204
- Requires [Bun](https://bun.sh/) >= 1.3.0.
211
+ <!-- public-truth:runtime -->
212
+
213
+ Requires [Bun](https://bun.sh/) >=1.3.0.
214
+
215
+ <!-- /public-truth -->
205
216
 
206
217
  ```bash
207
218
  bun install -g @gmickel/gno
@@ -225,10 +236,15 @@ when its structured activation state is degraded. `gno doctor` exits 2 when any
225
236
  configured folder fails the lexical proof; semantic models may still be pending
226
237
  without blocking BM25 search.
227
238
 
228
- **Windows**: current validated target is `windows-x64`, with a packaged
239
+ <!-- public-truth:supported-platforms -->
240
+
241
+ GNO supports macOS, Linux, and Windows. The current validated Windows target is
242
+ `windows-x64`, with a packaged
229
243
  desktop beta zip now published on GitHub Releases. See
230
244
  [docs/WINDOWS.md](./docs/WINDOWS.md) for support scope and validation notes.
231
245
 
246
+ <!-- /public-truth -->
247
+
232
248
  Keep an index fresh continuously without opening the Web UI:
233
249
 
234
250
  ```bash
@@ -532,7 +548,9 @@ Connect GNO to Claude Desktop, Cursor, Raycast, and more:
532
548
 
533
549
  ![GNO MCP](./assets/screenshots/mcp.jpg)
534
550
 
535
- GNO exposes tools via [Model Context Protocol](https://modelcontextprotocol.io):
551
+ GNO exposes 17 tools by default via [Model Context Protocol](https://modelcontextprotocol.io),
552
+ including the core retrieval tools below. Starting MCP with `--enable-write`
553
+ adds 11 opt-in mutation tools, for 28 total.
536
554
 
537
555
  | Tool | Description |
538
556
  | :-------------- | :------------------------------------ |
@@ -547,7 +565,9 @@ GNO exposes tools via [Model Context Protocol](https://modelcontextprotocol.io):
547
565
  | `gno_graph` | Get knowledge graph (nodes and edges) |
548
566
  | `gno_status` | Index health check |
549
567
 
550
- **Design**: MCP tools are retrieval-only. Your AI assistant (Claude, GPT-4) synthesizes answers from retrieved context. Best retrieval (GNO) + best reasoning (your LLM).
568
+ **Design**: Default MCP mode is read-only: retrieval, graph, status, and job
569
+ inspection. Your AI assistant synthesizes answers from retrieved context. Write
570
+ tools are available only through the explicit `--enable-write` opt-in.
551
571
 
552
572
  [MCP setup guide →](https://gno.sh/docs/MCP/)
553
573
 
@@ -644,7 +664,10 @@ Interactive visualization of document connections. Wiki links, markdown links, a
644
664
 
645
665
  Ask questions in natural language. GNO searches your documents and synthesizes answers with inline citations linking to sources.
646
666
 
647
- Everything runs locally. No cloud, no accounts, no data leaving your machine.
667
+ The Web UI and local-model path run on your machine with no account or
668
+ telemetry. Network access occurs when GNO downloads models, when you configure
669
+ an HTTP model backend, or when you explicitly upload an exported artifact to
670
+ gno.sh.
648
671
 
649
672
  > **Detailed docs**: [Web UI Guide](https://gno.sh/docs/WEB-UI/)
650
673
 
@@ -802,13 +825,13 @@ graph TD
802
825
  | **REST API** | HTTP API for custom tools and integrations |
803
826
  | **Multi-Format** | Markdown, PDF, DOCX, XLSX, PPTX, plain text |
804
827
  | **Local LLM** | AI answers via llama.cpp, no API keys |
805
- | **Remote Inference** | Offload to GPU servers via HTTP (llama-server, Ollama, LocalAI) |
806
- | **Privacy First** | 100% offline, zero telemetry, your data stays yours |
807
- | **MCP Server** | Works with Claude Desktop, Cursor, Zed, + 8 more |
828
+ | **Remote Inference** | Optional HTTP endpoints for embedding, reranking, expansion, and generation |
829
+ | **Privacy First** | Local by default; no telemetry; network use is explicit or model provisioning |
830
+ | **MCP Server** | 10 automatic client targets; 17 read-only tools, 28 with writes enabled |
808
831
  | **Collections** | Organize sources with patterns, excludes, contexts |
809
832
  | **Tag Filtering** | Frontmatter tags with hierarchical paths, filter via `--tags-any`/`--tags-all` |
810
833
  | **Note Linking** | Wiki links, backlinks, related notes, cross-collection navigation |
811
- | **Multilingual** | 30+ languages, auto-detection, cross-lingual search |
834
+ | **Multilingual** | Query classification, 7-language document detection, multilingual embeddings |
812
835
  | **Incremental** | SHA-256 tracking, only changed files re-indexed |
813
836
  | **Keyboard First** | ⌘N capture, ⌘K search, ⌘/ shortcuts, ⌘S save |
814
837
 
@@ -818,20 +841,20 @@ graph TD
818
841
 
819
842
  Models auto-download on first use to `~/.cache/gno/models/`. GNO validates cached GGUF files before loading and removes intercepted HTML/non-GGUF cache entries with a clear recovery error. For deterministic startup, set `GNO_NO_AUTO_DOWNLOAD=1` and use `gno models pull` explicitly. Alternatively, offload to a GPU server on your network using HTTP backends.
820
843
 
821
- | Model | Purpose | Size |
822
- | :--------------------- | :------------------------------------ | :----------- |
823
- | Qwen3-Embedding-0.6B | Embeddings (multilingual) | ~640MB |
824
- | Qwen3-Reranker-0.6B | Cross-encoder reranking (32K context) | ~700MB |
825
- | Qwen3 / Qwen2.5 family | Query expansion + AI answers | ~600MB-2.5GB |
844
+ | Model | Purpose |
845
+ | :--------------------- | :----------------------------------------------- |
846
+ | Qwen3-Embedding-0.6B | Embeddings |
847
+ | Qwen3-Reranker-0.6B | Best-chunk-per-document cross-encoder reranking |
848
+ | Qwen3 / Qwen2.5 family | Query expansion and standalone answer generation |
826
849
 
827
850
  ### Model Presets
828
851
 
829
- | Preset | Disk | Best For |
830
- | :----------- | :----- | :------------------------------------------------------ |
831
- | `slim-tuned` | ~1GB | Current default, tuned retrieval in a compact footprint |
832
- | `slim` | ~1GB | Fast, good quality |
833
- | `balanced` | ~2GB | Slightly larger model |
834
- | `quality` | ~2.5GB | Best answers |
852
+ | Preset | Best For |
853
+ | :----------- | :------------------------------------------- |
854
+ | `slim-tuned` | Current default; tuned query expansion |
855
+ | `slim` | Untuned slim query expansion |
856
+ | `balanced` | Qwen2.5 3B expansion and answers |
857
+ | `quality` | Qwen3 4B expansion and standalone AI answers |
835
858
 
836
859
  ```bash
837
860
  gno models use slim-tuned
@@ -849,7 +872,9 @@ GNO now has a published promoted retrieval model for the default slim path:
849
872
 
850
873
  Use it when you want the tuned retrieval expansion path immediately, without running local fine-tuning yourself.
851
874
 
852
- For private/internal products, use the same workflow but keep the final GGUF private and point `gen:` at a `file:` URI instead of publishing to Hugging Face.
875
+ For private/internal products, use the same workflow but keep the final GGUF
876
+ private and point `expand:` at a `file:` URI instead of publishing it to
877
+ Hugging Face. The `gen:` role remains the standalone answer model.
853
878
 
854
879
  See:
855
880
 
@@ -873,7 +898,10 @@ models:
873
898
  gen: "http://192.168.1.100:8083/v1/chat/completions#qwen3-4b"
874
899
  ```
875
900
 
876
- Works with llama-server, Ollama, LocalAI, vLLM, or any OpenAI-compatible server.
901
+ The HTTP adapter expects the OpenAI-compatible endpoint shapes documented in
902
+ [Configuration](./docs/CONFIGURATION.md). Remote servers receive the query,
903
+ chunk, or answer context sent to their configured model role; they are outside
904
+ GNO's local trust boundary.
877
905
 
878
906
  > **Configuration**: [Model Setup](https://gno.sh/docs/CONFIGURATION/)
879
907
 
@@ -989,16 +1017,28 @@ bun run bench:general-embeddings --candidate bge-m3-incumbent --write
989
1017
  bun run bench:general-embeddings --candidate qwen3-embedding-0.6b --write
990
1018
  ```
991
1019
 
992
- Current signal on the public multilingual FastAPI-docs fixture:
1020
+ <!-- public-truth:general-embedding-benchmark -->
1021
+
1022
+ The immutable April 2026 FastAPI-docs run used 15 documents in five corpus
1023
+ languages (`en`, `de`, `fr`, `es`, `zh`) and 13 queries:
993
1024
 
994
- - `bge-m3`: vector nDCG@10 `0.3508`, hybrid nDCG@10 `0.6756`
995
- - `Qwen3-Embedding-0.6B-GGUF`: vector nDCG@10 `0.9891`, hybrid nDCG@10 `0.9891`
1025
+ - [bge-m3 incumbent](./evals/fixtures/general-embedding-benchmark/2026-04-06-bge-m3-incumbent.md): vector nDCG@10 `0.3503`, hybrid nDCG@10 `0.642`
1026
+ - [Qwen3 Embedding 0.6B](./evals/fixtures/general-embedding-benchmark/2026-04-06-qwen3-embedding-0-6b.md): vector nDCG@10 `0.8594`, hybrid nDCG@10 `0.947`
1027
+ <!-- /public-truth -->
996
1028
 
997
- Interpretation:
1029
+ A separate [July 2026 Nemotron screen](./research/embeddings/2026-07-21-nemotron-3-embed-1b.md)
1030
+ reran the same 13-query multilingual lane after runtime/profile changes. It
1031
+ measured Qwen at `0.9891` vector / `0.9891` hybrid nDCG@10 and Nemotron 3 Embed
1032
+ 1B at `0.9023` / `0.9461`. Nemotron used a temporary PyTorch HTTP adapter;
1033
+ Qwen used GNO's production GGUF path. Their timings are not comparable, and no
1034
+ official production GGUF was validated for Nemotron.
998
1035
 
999
- - Qwen is now the strongest general multilingual embedding model we have tested
1000
- - built-in presets now use Qwen by default
1001
- - existing users may need to run `gno embed` again after upgrading so current collections catch up
1036
+ These small fixture results support keeping Qwen as the built-in default; they
1037
+ do not establish general language superiority. Query-language classification
1038
+ supports a broader set than the indexed-document detector (`en`, `de`, `fr`,
1039
+ `it`, `zh`, `ja`, `ko`), and the committed fixture covers only five languages.
1040
+ The BM25-only multilingual eval remains a legacy sanity lane; dedicated lexical
1041
+ CJK benchmarking is pending.
1002
1042
 
1003
1043
  ---
1004
1044
 
@@ -6,7 +6,9 @@ allowed-tools: Bash(gno:*) Read
6
6
 
7
7
  # GNO - Local Knowledge Engine
8
8
 
9
- Fast local semantic search. Index once, search instantly. No cloud, no API keys.
9
+ Fast local semantic search. Index once, search instantly. Local inference needs
10
+ no API key; configured HTTP backends and explicit gno.sh publishing are separate
11
+ network boundaries.
10
12
 
11
13
  ## When to Use This Skill
12
14
 
@@ -453,7 +453,8 @@ gno models list [--json|--md]
453
453
  gno models use <preset>
454
454
  ```
455
455
 
456
- Presets: `slim` (~1GB), `balanced` (~2GB), `quality` (~2.5GB)
456
+ Built-ins: `slim-tuned` (default), `slim`, `balanced`, `quality`. Actual
457
+ download/cache use depends on the selected artifacts and existing shared cache.
457
458
 
458
459
  ### gno models pull
459
460
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmickel/gno",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "Local semantic search for your documents. Index Markdown, PDF, and Office files with hybrid BM25 + vector search.",
5
5
  "keywords": [
6
6
  "embeddings",
@@ -118,6 +118,7 @@
118
118
  "research:finetune:mlx:fuse": "bun research/finetune/scripts/fuse-mlx.ts",
119
119
  "research:finetune:mlx:smoke": "bun research/finetune/scripts/smoke-mlx.ts",
120
120
  "reset": "bun run src/index.ts reset --confirm",
121
+ "docs:truth": "bun run scripts/public-truth.ts",
121
122
  "docs:verify": "bun run scripts/docs-verify.ts",
122
123
  "website:install": "cd website && bundle install",
123
124
  "website:dev": "cd website && make serve",