memorix 0.7.3 → 0.7.5
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/CHANGELOG.md +11 -0
- package/README.md +176 -329
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.7.5] — 2026-02-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **README rewrite** — Completely restructured to focus on real-world scenarios, use cases, and features. Added 5 walkthrough scenarios, comparison table with alternatives, "Works with" badges for all 7 agents. Moved detailed config to sub-README.
|
|
9
|
+
- **New `docs/SETUP.md`** — Dedicated setup guide with agent-specific config, vector search setup, data storage, and troubleshooting
|
|
10
|
+
|
|
11
|
+
## [0.7.4] — 2026-02-22
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **Hyphenated concepts not searchable** — Concepts like `project-detection` and `bug-fix` are now normalized to `project detection` and `bug fix` in the search index so Orama's tokenizer can split them into individual searchable terms. Original observation data is preserved unchanged.
|
|
15
|
+
|
|
5
16
|
## [0.7.3] — 2026-02-22
|
|
6
17
|
|
|
7
18
|
### Fixed
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<img src="assets/logo.png" alt="Memorix Logo" width="120">
|
|
3
3
|
<h1 align="center">Memorix</h1>
|
|
4
|
-
<p align="center"><strong>Cross-Agent Memory Bridge —
|
|
4
|
+
<p align="center"><strong>Cross-Agent Memory Bridge — Your AI never forgets again</strong></p>
|
|
5
5
|
<p align="center">
|
|
6
6
|
<a href="https://www.npmjs.com/package/memorix"><img src="https://img.shields.io/npm/v/memorix.svg?style=flat-square&color=cb3837" alt="npm version"></a>
|
|
7
7
|
<a href="https://www.npmjs.com/package/memorix"><img src="https://img.shields.io/npm/dm/memorix.svg?style=flat-square&color=blue" alt="npm downloads"></a>
|
|
@@ -10,25 +10,45 @@
|
|
|
10
10
|
<img src="https://img.shields.io/badge/tests-422%20passed-brightgreen?style=flat-square" alt="Tests">
|
|
11
11
|
</p>
|
|
12
12
|
<p align="center">
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
<
|
|
17
|
-
<
|
|
13
|
+
<img src="https://img.shields.io/badge/Works%20with-Cursor-orange?style=flat-square" alt="Cursor">
|
|
14
|
+
<img src="https://img.shields.io/badge/Works%20with-Windsurf-blue?style=flat-square" alt="Windsurf">
|
|
15
|
+
<img src="https://img.shields.io/badge/Works%20with-Claude%20Code-purple?style=flat-square" alt="Claude Code">
|
|
16
|
+
<img src="https://img.shields.io/badge/Works%20with-Codex-green?style=flat-square" alt="Codex">
|
|
17
|
+
<img src="https://img.shields.io/badge/Works%20with-Copilot-lightblue?style=flat-square" alt="Copilot">
|
|
18
|
+
<img src="https://img.shields.io/badge/Works%20with-Kiro-red?style=flat-square" alt="Kiro">
|
|
19
|
+
<img src="https://img.shields.io/badge/Works%20with-Antigravity-grey?style=flat-square" alt="Antigravity">
|
|
20
|
+
</p>
|
|
21
|
+
<p align="center">
|
|
22
|
+
<a href="#-stop-re-explaining-your-project">Why</a> •
|
|
23
|
+
<a href="#-get-started-in-30-seconds">Quick Start</a> •
|
|
24
|
+
<a href="#-real-world-scenarios">Scenarios</a> •
|
|
25
|
+
<a href="#-what-memorix-can-do">Features</a> •
|
|
26
|
+
<a href="#-comparison-with-alternatives">Compare</a> •
|
|
27
|
+
<a href="docs/SETUP.md">Full Setup Guide</a>
|
|
18
28
|
</p>
|
|
19
29
|
</p>
|
|
20
30
|
|
|
21
31
|
---
|
|
22
32
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
## 😤 Stop Re-Explaining Your Project
|
|
34
|
+
|
|
35
|
+
Your AI assistant forgets everything when you start a new chat. You spend 10 minutes re-explaining your architecture. **Again.** And if you switch from Cursor to Claude Code? Everything is gone. **Again.**
|
|
36
|
+
|
|
37
|
+
| Without Memorix | With Memorix |
|
|
38
|
+
|-----------------|--------------|
|
|
39
|
+
| **Session 2:** "What's our tech stack?" | **Session 2:** "I remember — Next.js with Prisma and tRPC. What should we build next?" |
|
|
40
|
+
| **Switch IDE:** All context lost | **Switch IDE:** Context follows you instantly |
|
|
41
|
+
| **New team member's AI:** Starts from zero | **New team member's AI:** Already knows the codebase |
|
|
42
|
+
| **After 50 tool calls:** Context explodes, restart needed | **After restart:** Picks up right where you left off |
|
|
43
|
+
| **MCP configs:** Copy-paste between 7 IDEs manually | **MCP configs:** One command syncs everything |
|
|
44
|
+
|
|
45
|
+
**Memorix solves all of this.** One MCP server. Seven agents. Zero context loss.
|
|
26
46
|
|
|
27
47
|
---
|
|
28
48
|
|
|
29
|
-
## ⚡
|
|
49
|
+
## ⚡ Get Started in 30 Seconds
|
|
30
50
|
|
|
31
|
-
|
|
51
|
+
Add this to your agent's MCP config file, restart — done:
|
|
32
52
|
|
|
33
53
|
```json
|
|
34
54
|
{
|
|
@@ -41,361 +61,207 @@ One config line. Seven agents. Zero context loss.
|
|
|
41
61
|
}
|
|
42
62
|
```
|
|
43
63
|
|
|
44
|
-
|
|
64
|
+
> 📖 **Where is my config file?** → [Full setup guide for all 7 agents](docs/SETUP.md)
|
|
65
|
+
> Windsurf • Cursor • Claude Code • Codex • VS Code Copilot • Antigravity • Kiro
|
|
45
66
|
|
|
46
|
-
|
|
67
|
+
That's it. No API keys. No cloud accounts. No dependencies. Just works.
|
|
47
68
|
|
|
48
69
|
---
|
|
49
70
|
|
|
50
|
-
##
|
|
51
|
-
|
|
52
|
-
| Situation | Pain |
|
|
53
|
-
|-----------|------|
|
|
54
|
-
| Architecture decisions in Cursor | Invisible to Claude Code |
|
|
55
|
-
| Bug fix knowledge in Windsurf | Doesn't transfer to Codex |
|
|
56
|
-
| MCP server configs | Manually copy-paste between agents |
|
|
57
|
-
| Agent rules & skills | Stuck in one IDE |
|
|
58
|
-
| Start a new session | Re-explain everything from scratch |
|
|
59
|
-
|
|
60
|
-
**No one bridges memory AND workspace configs across agents — until now.**
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## ✨ Features
|
|
65
|
-
|
|
66
|
-
### 🧠 Smart Memory
|
|
67
|
-
|
|
68
|
-
- **Knowledge Graph** — Entity-Relation model, [MCP Official Memory Server](https://github.com/modelcontextprotocol/servers/tree/main/src/memory) compatible
|
|
69
|
-
- **9 Observation Types** — 🎯 session-request 🔴 gotcha 🟡 problem-solution 🔵 how-it-works 🟢 what-changed 🟣 discovery 🟠 why-it-exists 🟤 decision ⚖️ trade-off
|
|
70
|
-
- **Auto-Enrichment** — Automatically extracts file paths, module names, CamelCase identifiers from your narratives
|
|
71
|
-
- **Auto-Relations** — Detects causal language ("because", "due to", "fixed by") and auto-creates typed graph relations
|
|
72
|
-
- **Memory Decay** — Exponential decay scoring with immunity rules, so old memories fade while critical ones persist forever
|
|
73
|
-
|
|
74
|
-
### 🔍 Token-Efficient Search
|
|
75
|
-
|
|
76
|
-
- **3-Layer Progressive Disclosure** — Based on [claude-mem](https://github.com/anthropics/claude-code) (~10x token savings)
|
|
77
|
-
- **L1** `memorix_search` → Compact index (~50-100 tokens/result)
|
|
78
|
-
- **L2** `memorix_timeline` → Chronological context
|
|
79
|
-
- **L3** `memorix_detail` → Full details on demand (~500-1000 tokens/result)
|
|
80
|
-
- **Hybrid Search** — Full-text (BM25) + Vector (semantic) via [Orama](https://github.com/orama/orama)
|
|
81
|
-
- **Token Budget** — `maxTokens` parameter auto-trims results to fit context windows
|
|
82
|
-
|
|
83
|
-
### 🔄 Cross-Agent Workspace Sync
|
|
71
|
+
## 🎬 Real-World Scenarios
|
|
84
72
|
|
|
85
|
-
|
|
86
|
-
- **MCP Config Migration** — Detect and migrate MCP server configs (merges — never overwrites)
|
|
87
|
-
- **Rules Sync** — Scan → Deduplicate → Conflict detection → Cross-format generation
|
|
88
|
-
- **Skills & Workflows** — Copy skill folders and workflow files across agents
|
|
89
|
-
- **Memory-Driven Skills** — `memorix_skills` auto-generates project-specific `SKILL.md` from observation patterns (gotchas, decisions, how-it-works)
|
|
90
|
-
- **Apply with Safety** — Backup `.bak` → Atomic write → Auto-rollback on failure
|
|
73
|
+
### Scenario 1: Cross-Session Memory
|
|
91
74
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
75
|
+
```
|
|
76
|
+
Monday morning — You and Cursor discuss auth architecture:
|
|
77
|
+
You: "Let's use JWT with refresh tokens, 15-minute expiry"
|
|
78
|
+
→ Memorix auto-stores this as a 🟤 decision
|
|
79
|
+
|
|
80
|
+
Tuesday — New Cursor session:
|
|
81
|
+
You: "Add the login endpoint"
|
|
82
|
+
→ AI calls memorix_search("auth") → finds Monday's decision
|
|
83
|
+
→ "Got it, I'll implement JWT with 15-min refresh tokens as we decided"
|
|
84
|
+
→ Zero re-explaining!
|
|
85
|
+
```
|
|
99
86
|
|
|
100
|
-
###
|
|
87
|
+
### Scenario 2: Cross-Agent Collaboration
|
|
101
88
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
- **Knowledge Graph** — Interactive visualization of entities and relations
|
|
105
|
-
- **Type Distribution Chart** — Canvas donut chart showing observation type breakdown
|
|
106
|
-
- **Embedding Status** — Real-time display of vector search provider status (enabled/provider/dimensions)
|
|
107
|
-
- **Retention Scores** — Exponential decay scoring with immunity status
|
|
108
|
-
- **Observation Management** — Expand/collapse details, **search with text highlighting**, delete with confirmation, data export
|
|
109
|
-
- **Batch Cleanup** — Auto-detect and bulk-delete low-quality observations
|
|
110
|
-
- **Light/Dark Theme** — Premium glassmorphism design, bilingual (EN/中文)
|
|
89
|
+
```
|
|
90
|
+
You use Windsurf for backend, Claude Code for reviews:
|
|
111
91
|
|
|
112
|
-
|
|
92
|
+
Windsurf: You fix a tricky race condition in the payment module
|
|
93
|
+
→ Memorix stores it as a 🟡 problem-solution with the fix details
|
|
113
94
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
95
|
+
Claude Code: "Review the payment module"
|
|
96
|
+
→ AI calls memorix_search("payment") → finds the race condition fix
|
|
97
|
+
→ "I see there was a recent race condition fix. Let me verify it's correct..."
|
|
98
|
+
→ Knowledge transfers seamlessly between agents!
|
|
99
|
+
```
|
|
119
100
|
|
|
120
|
-
###
|
|
101
|
+
### Scenario 3: Gotcha Prevention
|
|
121
102
|
|
|
122
103
|
```
|
|
123
|
-
|
|
124
|
-
→ Memorix
|
|
104
|
+
Week 1: You hit a painful Windows path separator bug
|
|
105
|
+
→ Memorix stores it as a 🔴 gotcha: "Use path.join(), never string concat"
|
|
125
106
|
|
|
126
|
-
|
|
127
|
-
→
|
|
128
|
-
→
|
|
107
|
+
Week 3: AI is about to write `baseDir + '/' + filename`
|
|
108
|
+
→ Session-start hook injected the gotcha into context
|
|
109
|
+
→ AI writes `path.join(baseDir, filename)` instead
|
|
110
|
+
→ Bug prevented before it happened!
|
|
129
111
|
```
|
|
130
112
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
## 🔧 Agent Configuration
|
|
113
|
+
### Scenario 4: Workspace Sync Across IDEs
|
|
134
114
|
|
|
135
|
-
### Windsurf
|
|
136
|
-
|
|
137
|
-
`~/.codeium/windsurf/mcp_config.json`:
|
|
138
|
-
```json
|
|
139
|
-
{
|
|
140
|
-
"mcpServers": {
|
|
141
|
-
"memorix": {
|
|
142
|
-
"command": "npx",
|
|
143
|
-
"args": ["-y", "memorix@latest", "serve"]
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
115
|
```
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
> }
|
|
157
|
-
> }
|
|
158
|
-
> }
|
|
159
|
-
> ```
|
|
160
|
-
|
|
161
|
-
### Cursor
|
|
162
|
-
|
|
163
|
-
`.cursor/mcp.json`:
|
|
164
|
-
```json
|
|
165
|
-
{
|
|
166
|
-
"mcpServers": {
|
|
167
|
-
"memorix": {
|
|
168
|
-
"command": "npx",
|
|
169
|
-
"args": ["-y", "memorix@latest", "serve"]
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
116
|
+
You have 12 MCP servers configured in Cursor.
|
|
117
|
+
Now you want to try Kiro.
|
|
118
|
+
|
|
119
|
+
You: "Sync my workspace to Kiro"
|
|
120
|
+
→ memorix_workspace_sync scans Cursor's MCP configs
|
|
121
|
+
→ Generates Kiro-compatible .kiro/settings/mcp.json
|
|
122
|
+
→ Also syncs your rules, skills, and workflows
|
|
123
|
+
→ Kiro is ready in seconds, not hours!
|
|
173
124
|
```
|
|
174
125
|
|
|
175
|
-
###
|
|
126
|
+
### Scenario 5: Auto-Generated Project Skills
|
|
176
127
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
128
|
+
```
|
|
129
|
+
After 2 weeks of development, you have 50+ observations:
|
|
130
|
+
- 8 gotchas about Windows path issues
|
|
131
|
+
- 5 decisions about the auth module
|
|
132
|
+
- 3 problem-solutions for database migrations
|
|
133
|
+
|
|
134
|
+
You: "Generate project skills"
|
|
135
|
+
→ memorix_skills clusters observations by entity
|
|
136
|
+
→ Auto-generates SKILL.md files:
|
|
137
|
+
- "auth-module-guide.md" — JWT setup, refresh flow, common pitfalls
|
|
138
|
+
- "database-migrations.md" — Prisma patterns, rollback strategies
|
|
139
|
+
→ Syncs skills to any agent: Cursor, Claude Code, Kiro...
|
|
140
|
+
→ New team members' AI instantly knows your project's patterns!
|
|
187
141
|
```
|
|
188
142
|
|
|
189
|
-
|
|
143
|
+
---
|
|
190
144
|
|
|
191
|
-
|
|
192
|
-
```toml
|
|
193
|
-
[mcp_servers.memorix]
|
|
194
|
-
command = "npx"
|
|
195
|
-
args = ["-y", "memorix@latest", "serve"]
|
|
196
|
-
```
|
|
145
|
+
## 🧠 What Memorix Can Do
|
|
197
146
|
|
|
198
|
-
###
|
|
147
|
+
### Smart Memory (17 MCP Tools)
|
|
199
148
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
```
|
|
149
|
+
| What You Say | What Memorix Does |
|
|
150
|
+
|-------------|-------------------|
|
|
151
|
+
| "Remember this architecture decision" | `memorix_store` — Classifies as 🟤 decision, extracts entities, creates graph relations |
|
|
152
|
+
| "What did we decide about auth?" | `memorix_search` → `memorix_detail` — 3-layer progressive disclosure, ~10x token savings |
|
|
153
|
+
| "What happened around that bug fix?" | `memorix_timeline` — Shows chronological context before/after |
|
|
154
|
+
| "Show me the knowledge graph" | `memorix_dashboard` — Opens interactive web UI with D3.js graph |
|
|
155
|
+
| "Which memories are getting stale?" | `memorix_retention` — Exponential decay scores, identifies archive candidates |
|
|
211
156
|
|
|
212
|
-
|
|
213
|
-
```json
|
|
214
|
-
{
|
|
215
|
-
"mcp": {
|
|
216
|
-
"servers": {
|
|
217
|
-
"memorix": {
|
|
218
|
-
"command": "npx",
|
|
219
|
-
"args": ["-y", "memorix@latest", "serve"]
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
```
|
|
157
|
+
### Cross-Agent Workspace Sync
|
|
225
158
|
|
|
226
|
-
|
|
159
|
+
| What You Say | What Memorix Does |
|
|
160
|
+
|-------------|-------------------|
|
|
161
|
+
| "Sync my MCP servers to Kiro" | `memorix_workspace_sync` — Migrates configs, merges (never overwrites) |
|
|
162
|
+
| "Check my agent rules" | `memorix_rules_sync` — Scans 7 agents, deduplicates, detects conflicts |
|
|
163
|
+
| "Generate rules for Cursor" | `memorix_rules_sync` — Cross-format conversion (`.mdc` ↔ `CLAUDE.md` ↔ `.kiro/steering/`) |
|
|
164
|
+
| "Generate project skills" | `memorix_skills` — Creates SKILL.md from observation patterns |
|
|
165
|
+
| "Inject the auth skill" | `memorix_skills` — Returns skill content directly into agent context |
|
|
227
166
|
|
|
228
|
-
|
|
229
|
-
```json
|
|
230
|
-
{
|
|
231
|
-
"mcpServers": {
|
|
232
|
-
"memorix": {
|
|
233
|
-
"command": "npx",
|
|
234
|
-
"args": ["-y", "memorix@latest", "serve"]
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
```
|
|
167
|
+
### Knowledge Graph (MCP Official Compatible)
|
|
239
168
|
|
|
240
|
-
|
|
169
|
+
| Tool | What It Does |
|
|
170
|
+
|------|-------------|
|
|
171
|
+
| `create_entities` | Build your project's knowledge graph |
|
|
172
|
+
| `create_relations` | Connect entities with typed edges (causes, fixes, depends_on) |
|
|
173
|
+
| `add_observations` | Attach observations to entities |
|
|
174
|
+
| `search_nodes` / `open_nodes` | Query the graph |
|
|
175
|
+
| `read_graph` | Export full graph for visualization |
|
|
241
176
|
|
|
242
|
-
|
|
243
|
-
```json
|
|
244
|
-
{
|
|
245
|
-
"mcpServers": {
|
|
246
|
-
"memorix": {
|
|
247
|
-
"command": "npx",
|
|
248
|
-
"args": ["-y", "memorix@latest", "serve"]
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
```
|
|
177
|
+
> **Drop-in compatible** with [MCP Official Memory Server](https://github.com/modelcontextprotocol/servers/tree/main/src/memory) — same API, more features.
|
|
253
178
|
|
|
254
|
-
|
|
179
|
+
### 9 Observation Types
|
|
255
180
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
### Memorix Extensions
|
|
259
|
-
|
|
260
|
-
| Tool | Purpose | Token Cost |
|
|
261
|
-
|------|---------|------------|
|
|
262
|
-
| `memorix_store` | Store observation with auto-enrichment | — |
|
|
263
|
-
| `memorix_search` | L1: Compact index search | ~50-100/result |
|
|
264
|
-
| `memorix_timeline` | L2: Chronological context | ~100-200/group |
|
|
265
|
-
| `memorix_detail` | L3: Full observation details | ~500-1000/result |
|
|
266
|
-
| `memorix_retention` | Memory decay & retention status | — |
|
|
267
|
-
| `memorix_dashboard` | Launch visual web dashboard in browser | — |
|
|
268
|
-
| `memorix_rules_sync` | Scan/deduplicate/generate rules across agents | — |
|
|
269
|
-
| `memorix_workspace_sync` | Migrate MCP configs, workflows, skills | — |
|
|
270
|
-
|
|
271
|
-
### MCP Official Compatible (Drop-in Replacement)
|
|
272
|
-
|
|
273
|
-
| Tool | Purpose |
|
|
274
|
-
|------|---------|
|
|
275
|
-
| `create_entities` | Create knowledge graph entities |
|
|
276
|
-
| `create_relations` | Create relations between entities |
|
|
277
|
-
| `add_observations` | Add observations to entities |
|
|
278
|
-
| `delete_entities` | Delete entities (cascades relations) |
|
|
279
|
-
| `delete_observations` | Delete specific observations |
|
|
280
|
-
| `delete_relations` | Delete relations |
|
|
281
|
-
| `search_nodes` | Search knowledge graph |
|
|
282
|
-
| `open_nodes` | Get entities by name |
|
|
283
|
-
| `read_graph` | Read entire graph |
|
|
181
|
+
Every memory is classified for intelligent retrieval:
|
|
284
182
|
|
|
285
|
-
|
|
183
|
+
| Icon | Type | When To Use |
|
|
184
|
+
|------|------|-------------|
|
|
185
|
+
| 🎯 | `session-request` | Original task/goal for this session |
|
|
186
|
+
| 🔴 | `gotcha` | Critical pitfall — "Never do X because Y" |
|
|
187
|
+
| 🟡 | `problem-solution` | Bug fix with root cause and solution |
|
|
188
|
+
| 🔵 | `how-it-works` | Technical explanation of a system |
|
|
189
|
+
| 🟢 | `what-changed` | Code/config change record |
|
|
190
|
+
| 🟣 | `discovery` | New insight or finding |
|
|
191
|
+
| 🟠 | `why-it-exists` | Rationale behind a design choice |
|
|
192
|
+
| 🟤 | `decision` | Architecture/design decision |
|
|
193
|
+
| ⚖️ | `trade-off` | Compromise with pros/cons |
|
|
286
194
|
|
|
287
|
-
|
|
195
|
+
### Visual Dashboard
|
|
288
196
|
|
|
289
|
-
|
|
197
|
+
Run `memorix_dashboard` to open a web UI at `http://localhost:3210`:
|
|
290
198
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
│
|
|
298
|
-
Agent ◀──memorix_search──┘ L1: Compact Index (~50-100 tokens)
|
|
299
|
-
Agent ◀──memorix_timeline─ L2: Timeline Context
|
|
300
|
-
Agent ◀──memorix_detail─── L3: Full Details (~500-1000 tokens)
|
|
301
|
-
```
|
|
199
|
+
- **Interactive Knowledge Graph** — D3.js force-directed visualization of entities and relations
|
|
200
|
+
- **Observation Browser** — Filter by type, search with highlighting, expand/collapse details
|
|
201
|
+
- **Retention Panel** — See which memories are active, stale, or candidates for archival
|
|
202
|
+
- **Project Switcher** — View any project's data without switching IDEs
|
|
203
|
+
- **Batch Cleanup** — Auto-detect and bulk-delete low-quality observations
|
|
204
|
+
- **Light/Dark Theme** — Premium glassmorphism design, bilingual (EN/中文)
|
|
302
205
|
|
|
303
|
-
###
|
|
206
|
+
### Auto-Memory Hooks
|
|
304
207
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
| ID | Time | T | Title | Tokens |
|
|
310
|
-
|-----|---------|-----|--------------------------|--------|
|
|
311
|
-
| #42 | 2:14 PM | 🟡 | Fixed JWT refresh timeout | ~155 |
|
|
312
|
-
| #38 | 1:30 PM | 🔵 | How JWT refresh works | ~220 |
|
|
313
|
-
|
|
314
|
-
🔎 Agent calls memorix_detail([42])
|
|
315
|
-
|
|
316
|
-
📄 L3 Response (full content):
|
|
317
|
-
# Observation #42 — Fixed JWT refresh timeout
|
|
318
|
-
Type: 🟡 problem-solution | Entity: auth-module
|
|
319
|
-
Narrative: The JWT refresh token was timing out after 15 minutes
|
|
320
|
-
because the expiry was hardcoded. Fixed by reading from env...
|
|
321
|
-
Facts: ["Default timeout: 60s", "Fix: use REFRESH_TTL env var"]
|
|
322
|
-
Files: ["src/auth/jwt.ts", "src/config.ts"]
|
|
208
|
+
Memorix can **automatically capture** decisions, errors, and gotchas from your coding sessions:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
memorix hooks install # One-command setup
|
|
323
212
|
```
|
|
324
213
|
|
|
325
|
-
|
|
214
|
+
- **Implicit Memory** — Detects patterns like "I decided to...", "The bug was caused by...", "Never use X"
|
|
215
|
+
- **Session Start Injection** — Loads recent high-value memories into agent context automatically
|
|
216
|
+
- **Multi-Language** — English + Chinese keyword matching
|
|
217
|
+
- **Smart Filtering** — 30s cooldown, skips trivial commands (ls, cat, pwd)
|
|
326
218
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
│ └───────────────────────────────────────────────────────┘ │
|
|
349
|
-
│ │
|
|
350
|
-
│ ┌───────────────────────────────────────────────────────┐ │
|
|
351
|
-
│ │ Hooks System: Normalizer → Pattern Detector → Store │ │
|
|
352
|
-
│ │ (Auto-captures decisions, bugs, gotchas from agents) │ │
|
|
353
|
-
│ └───────────────────────────────────────────────────────┘ │
|
|
354
|
-
└───────────────────────────────────────────────────────────────────┘
|
|
355
|
-
```
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 📊 Comparison with Alternatives
|
|
222
|
+
|
|
223
|
+
| | [Mem0](https://github.com/mem0ai/mem0) | [mcp-memory-service](https://github.com/doobidoo/mcp-memory-service) | [claude-mem](https://github.com/anthropics/claude-code) | **Memorix** |
|
|
224
|
+
|---|---|---|---|---|
|
|
225
|
+
| **Agents supported** | SDK-based | 13+ (MCP) | Claude Code only | **7 IDEs (MCP)** |
|
|
226
|
+
| **Cross-agent sync** | No | No | No | **Yes (configs, rules, skills, workflows)** |
|
|
227
|
+
| **Rules sync** | No | No | No | **Yes (7 formats)** |
|
|
228
|
+
| **Skills engine** | No | No | No | **Yes (auto-generated from memory)** |
|
|
229
|
+
| **Knowledge graph** | No | Yes | No | **Yes (MCP Official compatible)** |
|
|
230
|
+
| **Hybrid search** | No | Yes | No | **Yes (BM25 + vector)** |
|
|
231
|
+
| **Token-efficient** | No | No | Yes (3-layer) | **Yes (3-layer progressive disclosure)** |
|
|
232
|
+
| **Auto-memory hooks** | No | No | Yes | **Yes (multi-language)** |
|
|
233
|
+
| **Memory decay** | No | Yes | No | **Yes (exponential + immunity)** |
|
|
234
|
+
| **Visual dashboard** | Cloud UI | Yes | No | **Yes (web UI + D3.js graph)** |
|
|
235
|
+
| **Privacy** | Cloud | Local | Local | **100% Local** |
|
|
236
|
+
| **Cost** | Per-call API | $0 | $0 | **$0** |
|
|
237
|
+
| **Install** | `pip install` | `pip install` | Built into Claude | **`npx memorix serve`** |
|
|
238
|
+
|
|
239
|
+
**Memorix is the only tool that bridges memory AND workspace across agents.**
|
|
356
240
|
|
|
357
241
|
---
|
|
358
242
|
|
|
359
243
|
## 🔮 Optional: Vector Search
|
|
360
244
|
|
|
361
|
-
Memorix
|
|
362
|
-
|
|
363
|
-
| Priority | Provider | How to Enable | Notes |
|
|
364
|
-
|----------|----------|---------------|-------|
|
|
365
|
-
| 1st | `fastembed` | `npm install -g fastembed` | Fastest, native ONNX bindings |
|
|
366
|
-
| 2nd | `transformers.js` | `npm install -g @huggingface/transformers` | Pure JS/WASM, cross-platform |
|
|
367
|
-
| Fallback | Full-text (BM25) | Always available | Already very effective for code |
|
|
245
|
+
Out of the box, Memorix uses BM25 full-text search (already great for code). Add semantic search with one command:
|
|
368
246
|
|
|
369
247
|
```bash
|
|
370
|
-
# Option A: Native speed (recommended
|
|
248
|
+
# Option A: Native speed (recommended)
|
|
371
249
|
npm install -g fastembed
|
|
372
250
|
|
|
373
|
-
# Option B: Universal compatibility
|
|
251
|
+
# Option B: Universal compatibility
|
|
374
252
|
npm install -g @huggingface/transformers
|
|
375
253
|
```
|
|
376
254
|
|
|
377
|
-
|
|
378
|
-
- **With any provider** — Queries like "authentication" also match "login flow" via semantic similarity
|
|
379
|
-
- Both run **locally** — zero API calls, zero privacy risk, zero cost
|
|
380
|
-
- The dashboard shows which provider is active in real-time
|
|
255
|
+
With vector search, queries like "authentication" also match memories about "login flow" via semantic similarity. Both run **100% locally** — zero API calls, zero cost.
|
|
381
256
|
|
|
382
257
|
---
|
|
383
258
|
|
|
384
|
-
##
|
|
385
|
-
|
|
386
|
-
All data is stored locally per project:
|
|
259
|
+
## 🔒 Project Isolation
|
|
387
260
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
├── entities.jsonl # Knowledge graph nodes (MCP compatible)
|
|
393
|
-
└── relations.jsonl # Knowledge graph edges (MCP compatible)
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
- `projectId` is auto-detected from Git remote URL (e.g., `user/repo`)
|
|
397
|
-
- Data is shared across all agents (same directory)
|
|
398
|
-
- No cloud, no API keys, no external services
|
|
261
|
+
- **Auto-detected** — Project identity from `git remote` URL, zero config needed
|
|
262
|
+
- **Per-project storage** — `~/.memorix/data/<owner--repo>/` per project
|
|
263
|
+
- **Scoped search** — Defaults to current project; `scope: "global"` to search all
|
|
264
|
+
- **Zero cross-contamination** — Project A's decisions never leak into project B
|
|
399
265
|
|
|
400
266
|
---
|
|
401
267
|
|
|
@@ -407,31 +273,12 @@ cd memorix
|
|
|
407
273
|
npm install
|
|
408
274
|
|
|
409
275
|
npm run dev # tsup watch mode
|
|
410
|
-
npm test # vitest (
|
|
276
|
+
npm test # vitest (422 tests)
|
|
411
277
|
npm run lint # TypeScript type check
|
|
412
278
|
npm run build # Production build
|
|
413
279
|
```
|
|
414
280
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
```
|
|
418
|
-
src/
|
|
419
|
-
├── server.ts # MCP Server entry (17 tools)
|
|
420
|
-
├── types.ts # All type definitions
|
|
421
|
-
├── memory/ # Graph, observations, retention, entity extraction
|
|
422
|
-
├── store/ # Orama search engine + disk persistence
|
|
423
|
-
├── compact/ # 3-layer Progressive Disclosure engine
|
|
424
|
-
├── embedding/ # Vector providers (fastembed → transformers.js → fallback)
|
|
425
|
-
├── skills/ # Memory-driven project skills engine (list → generate → inject)
|
|
426
|
-
├── hooks/ # Auto-memory hooks (normalizer + pattern detector)
|
|
427
|
-
├── workspace/ # Cross-agent MCP/workflow/skills sync
|
|
428
|
-
├── rules/ # Cross-agent rules sync (7 adapters)
|
|
429
|
-
├── dashboard/ # Visual web dashboard (knowledge graph, stats)
|
|
430
|
-
├── project/ # Git-based project detection
|
|
431
|
-
└── cli/ # CLI commands (serve, hook, sync, dashboard)
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
> 📚 Full documentation available in [`docs/`](./docs/) — architecture, modules, API reference, design decisions, and more.
|
|
281
|
+
> 📚 **Documentation:** [Architecture](docs/ARCHITECTURE.md) • [API Reference](docs/API_REFERENCE.md) • [Modules](docs/MODULES.md) • [Design Decisions](docs/DESIGN_DECISIONS.md) • [Setup Guide](docs/SETUP.md) • [Known Issues](docs/KNOWN_ISSUES_AND_ROADMAP.md)
|
|
435
282
|
|
|
436
283
|
---
|
|
437
284
|
|
package/dist/cli/index.js
CHANGED
|
@@ -1007,7 +1007,7 @@ async function storeObservation(input) {
|
|
|
1007
1007
|
narrative: input.narrative,
|
|
1008
1008
|
facts: (input.facts ?? []).join("\n"),
|
|
1009
1009
|
filesModified: enrichedFiles.join("\n"),
|
|
1010
|
-
concepts: enrichedConcepts.join(", "),
|
|
1010
|
+
concepts: enrichedConcepts.map((c) => c.replace(/-/g, " ")).join(", "),
|
|
1011
1011
|
tokens,
|
|
1012
1012
|
createdAt: now,
|
|
1013
1013
|
projectId: input.projectId,
|
|
@@ -1052,7 +1052,7 @@ async function reindexObservations() {
|
|
|
1052
1052
|
narrative: obs.narrative,
|
|
1053
1053
|
facts: obs.facts.join("\n"),
|
|
1054
1054
|
filesModified: obs.filesModified.join("\n"),
|
|
1055
|
-
concepts: obs.concepts.join(", "),
|
|
1055
|
+
concepts: obs.concepts.map((c) => c.replace(/-/g, " ")).join(", "),
|
|
1056
1056
|
tokens: obs.tokens,
|
|
1057
1057
|
createdAt: obs.createdAt,
|
|
1058
1058
|
projectId: obs.projectId,
|