imprnt 0.1.3 → 0.1.4-edge.88

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 (4) hide show
  1. package/README.md +52 -12
  2. package/dist/cli.js +387 -65
  3. package/dist/imp.js +387 -65
  4. package/package.json +1 -1
package/README.md CHANGED
@@ -5,19 +5,19 @@
5
5
  [![CI](https://github.com/aleksandr-bogdanov/imprnt/actions/workflows/ci.yml/badge.svg?event=pull_request)](https://github.com/aleksandr-bogdanov/imprnt/actions/workflows/ci.yml)
6
6
  [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
7
  [![node >= 18](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org)
8
+ [![npm](https://img.shields.io/npm/v/imprnt.svg)](https://www.npmjs.com/package/imprnt)
8
9
 
9
10
  Your assistant starts every chat blank. You re-explain your projects, your people, and your
10
11
  decisions every time, and whatever it learns dies with the session. imprnt fixes that. You talk,
11
12
  your assistant files what matters into plain text files on your disk, and weeks later it answers
12
13
  from your real history. You can read every note with your own eyes, and no company can switch
13
- them off.
14
+ them off. Sibling to [Whenful](https://whenful.com): Whenful answers *when* do I do my tasks,
15
+ imprnt holds *what* I know.
14
16
 
15
- > "You can think of the model as the brain, the harness as the body, and the tools it uses working
16
- > in a runtime."
17
- > - Jensen Huang, NVIDIA (GTC Taipei keynote, June 2026)
17
+ <picture><source media="(prefers-color-scheme: dark)" srcset=".github/assets/recall-dark.svg"><img src=".github/assets/recall-light.svg" alt="imprnt recall: ranked results from a local BM25 search" width="830"></picture>
18
18
 
19
- imprnt is the tool layer Huang is pointing at, holding the part that lasts. Sibling to
20
- [Whenful](https://whenful.com): Whenful answers *when* do I do my tasks, imprnt holds *what* I know.
19
+ That is the whole read path. Term frequencies and a bit of arithmetic over a folder, with no model
20
+ in the loop.
21
21
 
22
22
  ## See it work
23
23
 
@@ -41,6 +41,8 @@ plain, cheap, local code.
41
41
 
42
42
  ## Why plain files win
43
43
 
44
+ <picture><source media="(prefers-color-scheme: dark)" srcset=".github/assets/lanes-dark.svg"><img src=".github/assets/lanes-light.svg" alt="The write path runs once per source and uses the model. The read path runs thousands of times and uses grep plus BM25." width="830"></picture>
45
+
44
46
  A vector database or a hidden memory feature could hold your knowledge too. Plain files make your
45
47
  assistant cheap, honest, and yours:
46
48
 
@@ -59,6 +61,44 @@ assistant cheap, honest, and yours:
59
61
  - **Yours, in the strongest sense.** Plain text on your disk. It opens in any editor, graphs in
60
62
  [Obsidian](https://obsidian.md), and cannot 404, bloat, or hold your context hostage.
61
63
 
64
+ ## The numbers, including the one we lose
65
+
66
+ LoCoMo is the benchmark this category is rated on, 1,540 questions about conversations that ran
67
+ for months. On the same answering model Letta published with, imprnt scores 58.6 against their
68
+ 74.0. We lose that comparison by about fifteen points, and the confidence intervals do not
69
+ overlap.
70
+
71
+ Running it turned up something worth more than the score. Take one fixed set of imprnt's answers,
72
+ change only the LLM judge, and the result moves 9 points: 68.4 with Claude grading, 77.6 with
73
+ gpt-4.1. That single swap is wider than the entire published spread in the category (mem0 68.44,
74
+ Letta 74.0, Zep 75.14). A LoCoMo number without a named judge is close to meaningless, ours
75
+ included.
76
+
77
+ On the paper's own scorer, token F1 across all five categories, imprnt gets 64.2%. The human
78
+ baseline on the same questions is 87.9%, and the paper's own GPT-4-turbo baseline is 32.1%.
79
+
80
+ imprnt also ships a retrieval eval over the two example vaults: the right note comes back first
81
+ for 89.7% of questions and appears in the top five for 97.4%, across 39 hand-written questions.
82
+ Small corpus, and we wrote the questions, so run it yourself with `bun run eval`.
83
+
84
+ Every run, interval, and reproduction step is written up in
85
+ [`docs/benchmark-2026-08.md`](docs/benchmark-2026-08.md). The tool-by-tool read lives at
86
+ [imprnt.dev/comparison](https://imprnt.dev/comparison/).
87
+
88
+ Prior art, by name: Letta/MemGPT, mem0, and Zep run memory as a service with their own store and
89
+ their own retrieval. Khoj indexes your files with embeddings. Obsidian gives you the plain-file
90
+ vault without an agent contract on top. PAI wires an assistant into a fixed personal structure.
91
+ imprnt keeps both halves: plain markdown you own, and an agent contract that files into it and reads it back with grep and BM25.
92
+
93
+ ## Known limits
94
+
95
+ BM25 is lexical. It ranks on the words a note actually contains, so imprnt bridges vocabulary at
96
+ ingest: the model assigns tags, proposes aliases, and records synonyms once per note, and every
97
+ later search rides on that one pass. Embeddings pay that cost per query instead. The bridge has
98
+ holes. Ask "what do I do for work" when the note says "freelance designer" and nothing connects
99
+ the two, and you can miss. The vault is single-user by design. That is the trade for a read path
100
+ that is free, local, and identical every time you run it.
101
+
62
102
  ## The robot does the work. You stay the boss.
63
103
 
64
104
  The current crop of AI tools wants the wheel. Resident agents (OpenClaw and friends) read your
@@ -123,14 +163,10 @@ asking ("add the anti-slop plugin"), each a separate `imprnt-plugin-*` package:
123
163
 
124
164
  | Package | What it gives your assistant |
125
165
  |---------|------------------------------|
126
- | `imprnt-plugin-character` | A voice and standards to write in. "Scribe" is the default you copy and personalize. |
127
166
  | `imprnt-plugin-anti-slop` | Rules that keep its prose from reading like AI. |
128
- | `imprnt-plugin-whenful` | A local mirror of your [Whenful](https://whenful.com) tasks, shown inline at read. |
129
- | `imprnt-plugin-kleinanzeigen` | A watcher for your Kleinanzeigen inbox: regex triage of buyer messages, drafts, a phone digest. You press send. |
130
- | `imprnt-plugin-session-host` | A warm browser holding your logged-in sessions, providing the authed-session capability. You enroll each site once. Not yet on npm: install from a repo checkout with `imprnt plugin add session-host --from <dir>`. |
131
- | `imprnt-plugin-timemachine` | Snapshots your work before each change so you can recover what the agent breaks. |
167
+ | `imprnt-plugin-character` | A voice and standards to write in. "Scribe" is the default you copy and personalize. |
132
168
  | `imprnt-plugin-statusline` | A customizable status line: model, branch, context, cost, rate limits, clock. |
133
- | `imprnt-plugin-telegram` | Your vault from your phone: text a bot, the answer comes from your notes. |
169
+ | `imprnt-plugin-timemachine` | Snapshots your work before each change so you can recover what the agent breaks. |
134
170
 
135
171
  Adding one copies it into your project and wires it into `CLAUDE.local.md`, the per-machine file
136
172
  your assistant loads each session. A fresh setup loads zero plugins until you add them. The full
@@ -180,3 +216,7 @@ only, never needed by people who use it through their assistant). Clone, `bun in
180
216
  ## License
181
217
 
182
218
  MIT (c) 2026 Aleksandr Bogdanov
219
+
220
+ ---
221
+
222
+ <img src=".github/mark.svg" height="15" alt=""> built by [bogdanov.wtf](https://bogdanov.wtf)