open-mem 0.10.0 → 0.11.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/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.11.0] - 2026-02-08
9
+
10
+ ### Added
11
+ - **Pluggable workflow modes** — JSON-based mode definitions that customize observation types, concept vocabulary, entity types, and AI prompt templates. Ships with `code` (default) and `research` modes. Configure via `OPEN_MEM_MODE` env var. New `/v1/workflow-modes` API endpoint.
12
+ - **Enhanced session compaction** — compaction hook now injects compressed recent observation narratives, facts, and key decisions with smart budget allocation (40% summaries/index, 40% observation details, 20% decisions). Graceful degradation when full observations unavailable.
13
+ - **VitePress documentation website** — 11-page docs site covering getting started, architecture, tools reference, search guide, configuration, platforms, privacy, API, troubleshooting, and changelog. Build with `bun run docs:build`.
14
+ - **Dashboard documentation** in README — "Web Dashboard" section describing all 6 pages (Timeline, Sessions, Search, Stats, Operations, Settings) with enable/access instructions.
15
+ - **"Why open-mem?" section** in README — competitive positioning highlighting native vector search, knowledge graph, 5 AI providers, revision lineage, and MIT license.
16
+ - **Feature highlights comparison table** in README — side-by-side comparison vs typical alternatives.
17
+
18
+ ### Fixed
19
+ - CI platform worker tests now use portable bun path and project root.
20
+
8
21
  ## [0.10.0] - 2026-02-08
9
22
 
10
23
  ### Added
package/README.md CHANGED
@@ -75,6 +75,19 @@ export OPEN_MEM_MODEL=google/gemini-2.5-flash-lite
75
75
 
76
76
  Without any provider configured, open-mem still works — it falls back to a basic metadata extractor that captures tool names, file paths, and output snippets.
77
77
 
78
+ ## Why open-mem?
79
+
80
+ - **Native vector search** — sqlite-vec embedded directly in SQLite, no external vector database required
81
+ - **Knowledge graph** — automatic entity extraction with relationships, graph-augmented search via traversal
82
+ - **5 AI providers + fallback chain** — Google, Anthropic, AWS Bedrock, OpenAI, OpenRouter with automatic failover
83
+ - **Advanced search** — FTS5 full-text + vector similarity + Reciprocal Rank Fusion + graph traversal + reranking
84
+ - **Revision lineage** — immutable history with audit trail; revisions never overwrite, they supersede
85
+ - **User-level memory** — cross-project memories stored in a separate user-scoped database
86
+ - **Web dashboard** — 6-page management UI with real-time SSE streaming and config control plane
87
+ - **Multi-platform** — native adapters for OpenCode, Claude Code, and Cursor
88
+ - **MIT license** — enterprise-friendly, no AGPL restrictions
89
+ - **Well-tested** — 71 test files covering core logic, adapters, and integration scenarios
90
+
78
91
  ## Key Features
79
92
 
80
93
  - 🧠 **Automatic observation capture** from tool executions and user prompts
@@ -84,8 +97,11 @@ Without any provider configured, open-mem still works — it falls back to a bas
84
97
  - 🔒 **Privacy controls** with `<private>` tag support
85
98
  - 🛠️ **Nine custom tools**: memory.find, memory.create, memory.history, memory.get, memory.transfer.export, memory.transfer.import, memory.revise, memory.remove, memory.help
86
99
  - 🌐 **MCP server mode** — expose memory tools to any MCP-compatible AI client
100
+ - 🔗 **Knowledge graph** — entity extraction with relationships, graph-augmented search
101
+ - 🔄 **Multi-platform** — native adapters for OpenCode, Claude Code, and Cursor
87
102
  - 🌳 **Git worktree support** — shared memory across all worktrees
88
103
  - 📂 **AGENTS.md generation** — auto-generated folder-level context on session end
104
+ - 📊 **Web dashboard** — 6-page management UI with real-time streaming
89
105
  - 📦 **Import/export** — portable JSON for backup and transfer between machines
90
106
  - ⚡ **Zero-config setup** — works out of the box
91
107
  - 📁 **All data stored locally** in your project directory
@@ -197,6 +213,29 @@ Configure via `OPEN_MEM_FOLDER_CONTEXT_MODE=single` or `OPEN_MEM_FOLDER_CONTEXT_
197
213
 
198
214
  The context injector includes a "Memory Economics" footer showing how much context compression saves: read cost vs. original discovery cost, with a savings percentage. This helps you understand the value of AI compression at a glance.
199
215
 
216
+ ## Web Dashboard
217
+
218
+ open-mem includes a built-in web dashboard for memory management and observability. It provides six pages:
219
+
220
+ | Page | Description |
221
+ |------|-------------|
222
+ | **Timeline** | Chronological view of all observations with type filtering |
223
+ | **Sessions** | Browse past coding sessions and their observations |
224
+ | **Search** | Full-text and semantic search across all memories |
225
+ | **Stats** | Database statistics, observation counts, and memory economics |
226
+ | **Operations** | Queue status, maintenance actions, folder context management |
227
+ | **Settings** | Config control plane with live preview, mode presets, and audit log |
228
+
229
+ ### Enable the Dashboard
230
+
231
+ ```bash
232
+ export OPEN_MEM_DASHBOARD=true
233
+ ```
234
+
235
+ Access at `http://localhost:3737` (configurable via `OPEN_MEM_DASHBOARD_PORT`). The dashboard streams real-time updates via Server-Sent Events — new observations appear as they are captured.
236
+
237
+ The [Config Control Plane](#config-control-plane) is accessible through the Settings page, allowing you to preview, apply, and roll back configuration changes without restarting.
238
+
200
239
  ## Custom Tools
201
240
 
202
241
  ### memory.find
@@ -320,9 +359,9 @@ Lifecycle behavior:
320
359
  - `notifications/initialized` is supported
321
360
  - strict mode requires initialize before `tools/list`/`tools/call`
322
361
 
323
- ## Platform Adapter Workers (Claude Code / Cursor)
362
+ ## Platform Adapters (Claude Code / Cursor)
324
363
 
325
- open-mem now includes dedicated adapter workers that ingest JSON events over stdin:
364
+ open-mem works beyond OpenCode. Dedicated adapter workers bring the same memory capabilities to Claude Code and Cursor, ingesting JSON events over stdin:
326
365
 
327
366
  ```bash
328
367
  # Claude Code adapter worker
@@ -423,6 +462,8 @@ open-mem works out of the box with zero configuration. All settings can be custo
423
462
  | `OPEN_MEM_MCP_COMPAT_MODE` | `strict` | MCP mode: `strict` or `legacy` |
424
463
  | `OPEN_MEM_MCP_PROTOCOL_VERSION` | `2024-11-05` | Preferred MCP protocol version |
425
464
  | `OPEN_MEM_MCP_SUPPORTED_PROTOCOLS` | `2024-11-05` | Comma-separated supported protocol versions |
465
+ | `OPEN_MEM_DASHBOARD` | `false` | Set to `true` to enable the web dashboard |
466
+ | `OPEN_MEM_DASHBOARD_PORT` | `3737` | Dashboard HTTP port |
426
467
 
427
468
  <details>
428
469
  <summary><strong>Programmatic Configuration Reference</strong></summary>
@@ -556,6 +597,19 @@ export OPEN_MEM_MAX_CONTEXT_TOKENS=2000
556
597
  - [Getting Started](docs/getting-started.md) — installation, configuration, and first steps
557
598
  - [Architecture](docs/architecture.md) — internal design, data flow, and source layout
558
599
 
600
+ ## Feature Highlights
601
+
602
+ | Feature | open-mem | Typical alternatives |
603
+ |---------|----------|---------------------|
604
+ | Vector search | Native (sqlite-vec) | External service (Chroma) |
605
+ | AI providers | 5 with fallback chain | 1–3 |
606
+ | Search | FTS5 + Vector + RRF + Graph | FTS5 only |
607
+ | Knowledge graph | Entities + relationships | No |
608
+ | Revision history | Immutable lineage | No |
609
+ | Dashboard | 6-page web UI with SSE | No |
610
+ | License | MIT | AGPL / proprietary |
611
+ | Data locality | Project-local `.open-mem/` | Global |
612
+
559
613
  ## Contributing
560
614
 
561
615
  See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, code style, and submission guidelines.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/http/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,qBAAqB,CAAC;IACpD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAoCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CA0e5D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/http/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,qBAAqB,CAAC;IACpD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAoCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAkf5D"}
@@ -1,8 +1,9 @@
1
+ import type { ModeConfig } from "../types";
1
2
  /**
2
3
  * Build a prompt that instructs the AI to compress raw tool output into a
3
4
  * structured observation (type, title, facts, narrative, concepts, files).
4
5
  */
5
- export declare function buildCompressionPrompt(toolName: string, toolOutput: string, sessionContext?: string): string;
6
+ export declare function buildCompressionPrompt(toolName: string, toolOutput: string, sessionContext?: string, modeConfig?: ModeConfig): string;
6
7
  /**
7
8
  * Build a prompt that instructs the AI to produce a session summary from
8
9
  * a list of observations.
@@ -46,7 +47,7 @@ export interface EntityExtractionObservation {
46
47
  * Build a prompt that instructs the AI to extract entities and relationships
47
48
  * from an observation.
48
49
  */
49
- export declare function buildEntityExtractionPrompt(obs: EntityExtractionObservation): string;
50
+ export declare function buildEntityExtractionPrompt(obs: EntityExtractionObservation, modeConfig?: ModeConfig): string;
50
51
  /**
51
52
  * Build a prompt that instructs the AI to reorder search result candidates
52
53
  * by relevance to the query.
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACrB,MAAM,CAmDR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,aAAa,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC,EACF,SAAS,EAAE,MAAM,GACf,MAAM,CAwCR;AAMD,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,yDAAyD;AACzD,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC5C,MAAM,EAAE,sBAAsB,EAC9B,UAAU,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAC1C,MAAM,CAqCR;AAUD,4DAA4D;AAC5D,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,CA+BpF;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7D,MAAM,CAuBR"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAM3C;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,UAAU,CAAC,EAAE,UAAU,GACrB,MAAM,CAoFR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,aAAa,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC,EACF,SAAS,EAAE,MAAM,GACf,MAAM,CAwCR;AAMD,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,yDAAyD;AACzD,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC5C,MAAM,EAAE,sBAAsB,EAC9B,UAAU,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAC1C,MAAM,CAqCR;AAUD,4DAA4D;AAC5D,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAC1C,GAAG,EAAE,2BAA2B,EAChC,UAAU,CAAC,EAAE,UAAU,GACrB,MAAM,CAuCR;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7D,MAAM,CAuBR"}