imprnt 0.1.4-edge.74 → 0.1.4-edge.89
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/CLAUDE.md +14 -1
- package/README.md +46 -6
- package/dist/cli.js +313 -81
- package/dist/imp.js +313 -81
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -94,7 +94,20 @@ vault/
|
|
|
94
94
|
|
|
95
95
|
**holdings/ vs reference: the cut is CHANGING STATE, not the word "tool."** Anything you follow over time is a holding: a premium, a dose, a balance, a status, a renewal. A paid subscription with a cost/renewal (a transit pass) is a holding even if you'd call it a "service." Static stuff with no state to track is **not** a holding: a free CLI, your dotfiles, tech-stack preferences are pure reference → file them in their domain (`work/`, `health/`). This cut is what keeps `holdings/` a real tracked-entity type instead of drifting back into a `things/` junk drawer.
|
|
96
96
|
|
|
97
|
-
**Domains are user-defined.** One person's set is `identity/ health/ finances/ work/ life/`. A consultant's would add `clients/`, a researcher's `topics/`. imprnt ships the mechanism + sensible defaults, not a fixed domain set
|
|
97
|
+
**Domains are user-defined, and the vault declares them.** One person's set is `identity/ health/ finances/ work/ life/`. A consultant's would add `clients/`, a researcher's `topics/`. imprnt ships the mechanism + sensible defaults, not a fixed domain set — `vault/_folders.md` is where a vault says which of its folders hold **entities**, which hold **domains**, which hold **forms**, and which hold a **mount**. No file means the shipped defaults, so nothing changes until you want it to.
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
## Entities
|
|
101
|
+
people, orgs, holdings
|
|
102
|
+
|
|
103
|
+
## Domains
|
|
104
|
+
identity, health, finances, work, life, clients
|
|
105
|
+
|
|
106
|
+
## Mounts
|
|
107
|
+
household
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
A **mount** is the fourth role and the one the defaults have no name for: a folder holding a tree that is complete on its own and maintained elsewhere — a shared repo checked out inside `vault/`, an imported corpus. Its notes are not part of this vault's entity graph, so `check` does not ask them to link one. Without that, every note under a folder the defaults never heard of is reported disconnected forever with nothing the owner can do, and permanent noise in `_needs-review.md` is worse than no check at all. An absent section keeps its default; an empty one is a deliberate "none". `type:` in frontmatter (below) records *what each note is* even when it sits in a domain folder, so nothing is lost by filing topically.
|
|
98
111
|
|
|
99
112
|
## Frontmatter contract
|
|
100
113
|
|
package/README.md
CHANGED
|
@@ -5,19 +5,19 @@
|
|
|
5
5
|
[](https://github.com/aleksandr-bogdanov/imprnt/actions/workflows/ci.yml)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://nodejs.org)
|
|
8
|
+
[](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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|