stifler-memex-mcp 0.8.0 → 1.0.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.
Files changed (2) hide show
  1. package/README.md +82 -20
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -1,14 +1,23 @@
1
- # memex — temporal knowledge graph memory for AI coding agents
1
+ # memex: trusted engineering context for agentic software engineering
2
2
 
3
3
  <!-- mcp-name: io.github.STiFLeR7/memex -->
4
4
 
5
- > Persistent memory and codebase context for AI coding agents, served over MCP. A bitemporal knowledge graph of your repository — modules, symbols, decisions, problems — for Claude Code, Cursor, Codex, Gemini CLI, and any MCP-compatible agent.
5
+ > A protocol-neutral engineering-context layer for AI coding agents. memex
6
+ > builds a bitemporal knowledge graph of your repository (modules, symbols,
7
+ > decisions, problems, evidence, and code evolution) and exposes bounded,
8
+ > provenance-aware context through Hermes MemoryProvider or MCP.
6
9
 
7
- A daemon and MCP server that turns every commit and every file change into structured graph state: modules, symbols, decisions, problems, lockfile facts. Sessions stop starting blind. Agents stop re-discovering the same refactor every time you `/clear`.
10
+ **[memex.stifler.in](https://memex.stifler.in)**
8
11
 
9
- [![PyPI](https://img.shields.io/pypi/v/memex-mcp?v=0.3.3)](https://pypi.org/project/memex-mcp/)
12
+ A daemon and MCP server that turns commits and file changes into structured
13
+ engineering knowledge. Agents can receive relevant repository context before a
14
+ task, with freshness and provenance preserved, without making memex a source of
15
+ personal memory or raw session state.
16
+
17
+ [![Website](https://img.shields.io/badge/website-memex.stifler.in-2D6AFF)](https://memex.stifler.in)
18
+ [![PyPI](https://img.shields.io/pypi/v/memex-mcp?v=1.0.0)](https://pypi.org/project/memex-mcp/)
10
19
  [![PyPI downloads](https://img.shields.io/pypi/dm/memex-mcp)](https://pypistats.org/packages/memex-mcp)
11
- [![npm](https://img.shields.io/npm/v/stifler-memex-mcp?v=0.3.3)](https://www.npmjs.com/package/stifler-memex-mcp)
20
+ [![npm](https://img.shields.io/npm/v/stifler-memex-mcp?v=1.0.0)](https://www.npmjs.com/package/stifler-memex-mcp)
12
21
  [![npm downloads](https://img.shields.io/npm/dm/stifler-memex-mcp)](https://www.npmjs.com/package/stifler-memex-mcp)
13
22
  [![Claude Code marketplace](https://img.shields.io/badge/Claude%20Code-marketplace-7c3aed)](https://github.com/STiFLeR7/claude-plugins)
14
23
  [![memex MCP server](https://glama.ai/mcp/servers/STiFLeR7/memex/badges/score.svg)](https://glama.ai/mcp/servers/STiFLeR7/memex)
@@ -18,15 +27,37 @@ A daemon and MCP server that turns every commit and every file change into struc
18
27
  [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/STiFLeR7/memex/badge)](https://securityscorecards.dev/viewer/?uri=github.com/STiFLeR7/memex)
19
28
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
20
29
 
21
- ![memex — temporal knowledge graph MCP server for AI coding agents, built on Graphiti and Neo4j](https://raw.githubusercontent.com/STiFLeR7/memex/master/assets/memex.png)
30
+ [![Memex on AI Agents Listing](https://aiagentslisting.com/memex/badge.svg?claim=1af930b83c7adc182c0f2c52cb300afb)](https://aiagentslisting.com/mcp/memex)
31
+
32
+ ## Where memex lives
33
+
34
+ | | |
35
+ |---|---|
36
+ | Website | [memex.stifler.in](https://memex.stifler.in) |
37
+ | Source | [github.com/STiFLeR7/memex](https://github.com/STiFLeR7/memex) |
38
+ | Python package | [`memex-mcp` on PyPI](https://pypi.org/project/memex-mcp/) |
39
+ | Node package | [`stifler-memex-mcp` on npm](https://www.npmjs.com/package/stifler-memex-mcp) |
40
+ | MCP Registry | [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io/), listed as `io.github.STiFLeR7/memex` |
41
+ | Claude Code plugin | [STiFLeR7/claude-plugins](https://github.com/STiFLeR7/claude-plugins) |
42
+ | Directories | [Glama](https://glama.ai/mcp/servers/STiFLeR7/memex) · [AI Agents Listing](https://aiagentslisting.com/mcp/memex) |
43
+
44
+ Evaluation record in [BENCHMARK.md](BENCHMARK.md), release history in
45
+ [CHANGELOG.md](CHANGELOG.md), reporting process in [SECURITY.md](SECURITY.md),
46
+ and how to work on it in [CONTRIBUTING.md](CONTRIBUTING.md).
47
+
48
+ [![Watch memex v1 in 60 seconds: how memex keeps Claude Code and Codex sessions current as the code changes](https://raw.githubusercontent.com/STiFLeR7/memex/master/assets/memex-v1-video.jpg?v=1.0.0)](https://raw.githubusercontent.com/STiFLeR7/memex/master/assets/memex-v1.mp4)
49
+
50
+ ▶ **[Watch memex v1 in 60 seconds](https://raw.githubusercontent.com/STiFLeR7/memex/master/assets/memex-v1.mp4)**
22
51
 
23
52
  ```mermaid
24
53
  flowchart LR
25
54
  A[Your repository<br/>files + git] --> B[memex watcher<br/>tree-sitter + Gemini]
26
55
  B --> C[Neo4j graph<br/>bitemporal facts]
27
- C --> D[MCP server<br/>stdio / HTTP]
28
- D --> E[AI agent<br/>Claude · Cursor · Codex · Gemini CLI]
29
- E -.->|writes decisions back| C
56
+ C --> D[memex core<br/>ContextPacket selection]
57
+ D --> E[Hermes MemoryProvider<br/>automatic read-only prefetch]
58
+ D --> F[MCP fallback<br/>explicit lookup]
59
+ E --> G[AI coding agent]
60
+ F --> G
30
61
 
31
62
  style B fill:#cfe8ff,stroke:#0066cc,color:#000
32
63
  style C fill:#fff4cf,stroke:#cc9900,color:#000
@@ -59,6 +90,30 @@ npx stifler-memex-mcp watch --repo .
59
90
  npx stifler-memex-mcp serve --repo .
60
91
  ```
61
92
 
93
+ ### Hermes integration
94
+
95
+ The v0.9 Hermes integration is read-only. Hermes retains personal memory, raw
96
+ session state, and execution state. memex supplies repository engineering
97
+ context through a bounded `ContextPacket`; it does not ingest Hermes
98
+ `state.db`, transcripts, prompts, or tool results.
99
+
100
+ Add the memex provider to Hermes' profile configuration:
101
+
102
+ ```yaml
103
+ memory:
104
+ provider: memex
105
+ plugins:
106
+ memex:
107
+ repo_path: /absolute/path/to/repository
108
+ prefetch_timeout_seconds: 7
109
+ max_items: 8
110
+ max_chars: 12000
111
+ ```
112
+
113
+ If Hermes is not installed, use the same context selector through the MCP
114
+ `get_engineering_context` tool. Both paths share the protocol-neutral memex
115
+ core and fail open when retrieval is unavailable.
116
+
62
117
  | Channel | Command |
63
118
  |---|---|
64
119
  | Claude Code marketplace | `/plugin install memex-mcp@stifler-marketplace` |
@@ -85,14 +140,15 @@ initial admin key, and the `down -v` footgun to avoid.
85
140
  | Property | Value |
86
141
  |---|---|
87
142
  | Output | A Neo4j graph populated continuously from your repo |
88
- | Storage | Neo4j via [Graphiti](https://github.com/getzep/graphiti). Bitemporal — every edge has `created_at` and optional `expired_at` |
89
- | Survives | `/clear`, terminal crashes, machine restarts, teammate handoffs |
90
- | Hands off to | Claude Code, Cursor, Codex, Gemini CLI, any MCP client |
143
+ | Storage | Neo4j via [Graphiti](https://github.com/getzep/graphiti). Bitemporal: every edge has `created_at` and optional `expired_at` |
144
+ | Context | Bounded, ranked, provenance-aware `ContextPacket` |
145
+ | Integrations | Hermes MemoryProvider, MCP resources/tools, Claude Code, Cursor, Codex, Gemini CLI |
146
+ | Failure mode | Fail-open; agent execution continues without memex |
91
147
  | Granularity | Scales from 50 to 5000+ modules via hierarchical Leiden clusters |
92
148
  | Synthesis | Gemini Flash distills commits into `Decision` nodes; Pro for grounded synthesis |
93
149
  | Confidence | Computed at query time. Two-regime decay (validated half-life ~139d, unvalidated stale at 30d) |
94
150
  | Write governance | Per-node-type ACL, intent-confirmation on agent writes, explicit `corroborates` / `supersedes` semantics |
95
- | Tests | 333 passing, ~93% coverage |
151
+ | Goal 10 evidence | 8/8 valid paired runs, 0 treatment failures, 0 treatment regressions |
96
152
 
97
153
  ## The lifecycle
98
154
 
@@ -119,7 +175,7 @@ flowchart TD
119
175
 
120
176
  ## MCP tools
121
177
 
122
- 14 tools — eight read, four write, two analytic.
178
+ 14 tools: eight read, four write, two analytic.
123
179
 
124
180
  ### Read
125
181
 
@@ -186,7 +242,7 @@ flowchart LR
186
242
  | Algorithm | `graspologic.partition.hierarchical_leiden` with fixed seed |
187
243
  | Naming | TF-IDF top-3 over module docstrings + symbol names, parent-dir fallback |
188
244
  | ID pinning | Jaccard ≥ 0.5 across reruns (cluster names stay stable through renames) |
189
- | User overrides | `.memex/clusters.yaml` — any assignment can be locked |
245
+ | User overrides | `.memex/clusters.yaml`, where any assignment can be locked |
190
246
  | Context budget | `get_project_context` stays under 1500 tokens whether your repo has 50 or 5000 modules |
191
247
 
192
248
  ## Measure Your Savings
@@ -289,7 +345,7 @@ args = ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
289
345
  <details>
290
346
  <summary><b>Anthropic memory tool (memory_20250818)</b></summary>
291
347
 
292
- memex can back Claude's native memory tool — agents read from a per-session graph projection plus a writable scratch zone.
348
+ memex can back Claude's native memory tool: agents read from a per-session graph projection plus a writable scratch zone.
293
349
 
294
350
  ```bash
295
351
  memex memory-tool serve --repo . # in-process
@@ -340,7 +396,7 @@ memex/
340
396
  │ ├── memory_tool/ Anthropic memory_20250818 adapter
341
397
  │ ├── watcher/ daemon + git hooks
342
398
  │ └── cli.py init / watch / serve / review / graph / cluster
343
- ├── tests/ 333 passing, ~93% coverage
399
+ ├── tests/ unit, integration, and objective evaluation suites
344
400
  ├── docker/ Neo4j compose
345
401
  ├── npm/ npx wrapper (publishes as stifler-memex-mcp)
346
402
  └── Dockerfile introspection-only image for MCP directory sandboxes
@@ -369,11 +425,17 @@ Hill Patel ([@STiFLeR7](https://github.com/STiFLeR7))
369
425
 
370
426
  ## Core Contributors & Maintainers
371
427
 
372
- - Hill Patel ([@STiFLeR7](https://github.com/STiFLeR7)) — architect, maintainer
373
- - Nirvaan Lagishetty ([@Nirvaan05](https://github.com/Nirvaan05)) — lead contributor, maintainer
428
+ - Hill Patel ([@STiFLeR7](https://github.com/STiFLeR7)), architect and maintainer
429
+ - Nirvaan Lagishetty ([@Nirvaan05](https://github.com/Nirvaan05)), lead contributor and maintainer
374
430
 
375
431
  ## Contributing
376
432
 
377
- Open an issue or PR. `uv sync --all-extras && uv run pytest tests/` is all the setup you need to run the suite. Version bumps must update **both** `pyproject.toml` and `npm/package.json` and they must agree.
433
+ Open an issue or PR. `uv sync --all-extras` installs the development toolchain.
434
+ Run `uv run pytest -m "not integration"` for the offline suite and `uv run ruff
435
+ check .` before opening a PR. Version bumps must update `pyproject.toml`,
436
+ `npm/package.json`, `server.json`, and the team Docker image tag together.
437
+
438
+ The v0.9 release record is in [`CHANGELOG.md`](CHANGELOG.md), with the
439
+ architecture and evaluation evidence under [`docs/architecture/v0.9/`](docs/architecture/v0.9/).
378
440
 
379
441
  > *Vannevar Bush, 1945:* "Consider a future device for individual use, which is a sort of mechanized private file and library. It needs a name, and to coin one at random, **memex** will do."
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "stifler-memex-mcp",
3
- "version": "0.8.0",
3
+ "version": "1.0.0",
4
4
  "mcpName": "io.github.STiFLeR7/memex",
5
- "description": "Developer context continuity system — temporal knowledge graph for AI coding agents via MCP. Inspired by Vannevar Bush's 1945 concept of a machine that remembers everything.",
5
+ "description": "Trusted engineering context for agentic software engineering via Hermes MemoryProvider and MCP.",
6
6
  "bin": {
7
7
  "stifler-memex-mcp": "./bin/memex-mcp.js",
8
8
  "memex-mcp": "./bin/memex-mcp.js",