@korrlabs/mnemospi 4.0.0 → 4.2.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/README.md CHANGED
@@ -11,6 +11,8 @@
11
11
  </p>
12
12
 
13
13
  <p align="center">
14
+ <a href="https://pypi.org/project/mnemos-memory-server/"><img src="https://img.shields.io/pypi/v/mnemos-memory-server?label=pypi&color=3776ab" alt="PyPI"></a>
15
+ <a href="https://www.npmjs.com/package/pi-mnemos"><img src="https://img.shields.io/npm/v/pi-mnemos?label=npm&color=cb3837" alt="npm"></a>
14
16
  <a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776ab" alt="Python"></a>
15
17
  <a href="pyproject.toml"><img src="https://img.shields.io/badge/license-Apache_2.0-blue" alt="License: Apache-2.0"></a>
16
18
  <a href="https://github.com/Korrnals/mnemos/releases"><img src="https://img.shields.io/github/v/release/Korrnals/mnemos?label=version&color=blueviolet" alt="Version"></a>
@@ -21,166 +23,101 @@
21
23
  </p>
22
24
 
23
25
  <p align="center">
24
- <a href="#-features">Features</a> ·
25
26
  <a href="#-quick-start">Quick start</a> ·
27
+ <a href="#-features">Features</a> ·
26
28
  <a href="#-what-mnemos-is">What it is</a> ·
29
+ <a href="#-connect-any-harness">Connect a harness</a> ·
27
30
  <a href="#%EF%B8%8F-architecture">Architecture</a> ·
28
- <a href="#%EF%B8%8F-three-surfaces-one-core">Surfaces</a> ·
29
31
  <a href="#-documentation">Docs</a>
30
32
  </p>
31
33
 
32
34
  ---
33
35
 
34
- ## Features
35
-
36
- One local server — and a connected agent harness gets the full memory stack.
37
-
38
- | Area | What you get |
39
- |------|--------------|
40
- | **Universal connectivity** | MCP server (26 tools, stdio) + REST API — any MCP-capable harness connects in one line ([tools](docs/en/user/mcp-tools.md) · [HTTP](docs/en/user/http-api.md)) |
41
- | **Ready integrations** | zcode, the `~/.agents` standard (Claude / Codex / Continue / Qwen and more), pi — via [`mnemos integration`](docs/en/user/integration-guide.md): deploy targets, one-line MCP presets, multi-harness doctor |
42
- | **Skill pack** | 14+ memory skills deployed into your harnesses |
43
- | **Flexible memory** | Hybrid search (full-text + vector, rank fusion), [tag contract](docs/en/user/tag-contract.md), per-agent / per-project memory, [context-filter](docs/en/user/context-filter.md) profiles, CCR compression — 70–90% token savings, originals kept |
44
- | **Context assembly** | `assemble_context`: search → compress → filter → secret scan → cache align → token budget, per-block provenance |
45
- | **Context bridge** | `on_context_rewrite` — when the harness compacts history, the lossless original stays available on demand |
46
- | **Lifecycle hooks** | `pre_llm_call` context injection, `on_session_start`, `post_tool_call` auto-compression of tool outputs |
47
- | **Publication v3.0.0** | Entries visible immediately after save, background refinement with seamless swap, quarantine with neutral retraction |
48
- | **Self-protection** | Injection / secret detectors on input and publication, every output scanned, full per-entry audit |
49
- | **Auto-pipeline** | Background processor: clustering, deduplication, quality gate, publication |
36
+ AI agents forget everything when a session ends. Mnemos gives them a place to lay it down —
37
+ structured, searchable, governed by contract — so what they learn does not vanish with the
38
+ closing of a window.
50
39
 
51
- Autonomy for an arbitrary harness, LLM-driven enrichment, and package
52
- publishing (PyPI / npm) are partial — the full, honest map lives in
53
- [docs/en/features.md](docs/en/features.md).
40
+ - **Local-first.** One process on your machine. SQLite + a bundled embedding model; nothing leaves the host, no API keys, works offline.
41
+ - **One server, any harness.** VS Code Copilot, Claude Code, Cursor, OpenCode, Codex, Windsurf, ZCode, pi, Hermes — the same MCP wire, one line each.
42
+ - **The agent learns to *use* it.** Not just tools: always-on instructions, a skill pack, and a memory-first prompt mode, deployed into your harness in one command.
54
43
 
55
44
  ---
56
45
 
57
46
  ## 🚀 Quick start
58
47
 
59
- Four steps to a working memory store, wired into VS Code Copilot.
60
-
61
- ### 1 · Install
48
+ Three commands from an empty machine to an agent that remembers and knows when to look.
62
49
 
63
- ```bash
64
- curl -fsSL https://raw.githubusercontent.com/Korrnals/mnemos/main/scripts/install.sh | bash
65
- ```
66
-
67
- The installer does everything for you — no Python or venv knowledge required:
68
-
69
- - creates an isolated environment at `~/.mnemos/venv`;
70
- - drops a `mnemos` launcher into `~/.local/bin`, so the CLI just works in any shell (**no venv activation needed**);
71
- - offers to wire up VS Code MCP integration right there (or run it later — see step 3).
72
-
73
- > Prefer a non-interactive run? Add `--mcp` / `--no-mcp` to decide up front, e.g.
74
- > `… | bash -s -- --mcp`.
75
-
76
- ### 2 · Write &amp; recall
50
+ ### 1 · Install the server
77
51
 
78
52
  ```bash
79
- mnemos add "First memory — Mnemos remembers across sessions" \
80
- --tags project:mnemos,agent:tech-writer,mnemos:learning
81
-
82
- mnemos search "remembers across sessions"
53
+ pip install mnemos-memory-server
83
54
  ```
84
55
 
85
- That's the whole loop: **write, find, never lose it.** Every entry carries a
86
- [tag contract](docs/en/user/tag-contract.md) (`project:` / `agent:` / `mnemos:`) so memories stay organised.
87
-
88
- ### 3 · Connect VS Code (MCP)
89
-
90
- If you answered **yes** during install, you're already done — just reload your VS Code window.
91
- To set it up manually, or on another machine:
92
-
93
- ```bash
94
- curl -fsSL https://raw.githubusercontent.com/Korrnals/mnemos/main/scripts/mcp-setup.sh | bash
95
- ```
56
+ One package, everything included: the memory server, the `mnemos` CLI, the REST API, and the
57
+ MCP server your agent harness talks to. The embedding model ships inside search works fully
58
+ offline, no API keys, nothing downloaded.
96
59
 
97
- Then **reload the VS Code window** (`Ctrl+Shift+P Reload Window`). The `mnemos_*` tools appear in
98
- Copilot's tool picker, and your agents can call `mnemos_add` / `mnemos_search` directly.
60
+ > ⚠️ Mind the name: `pip install mnemos` (without `-memory-server`) is an unrelated project.
99
61
 
100
- ### 4 · Deploy behavioral instructions
62
+ ### 2 · Connect your harness — and teach it to use memory
101
63
 
102
64
  ```bash
103
65
  mnemos integration setup
104
66
  ```
105
67
 
106
- This deploys memory-usage instructions, skills, and a prompt mode to your
107
- agent harness (Copilot `~/.copilot/`, generic Copilot, Cursor, and Hermes Agent
108
- `~/.hermes/`), plus two universal targets: `zcode` (native `~/.zcode/` skills +
109
- MCP config) and `agents` (the AGENTS.md standard `~/.agents/` read natively
110
- by ZCode, Claude Code, Codex, Cursor and friends). Agents will now *know when
111
- and how* to use Mnemos memory — not just have the tools available. Use
112
- `--home <dir>` to install into another environment's home (e.g. a container).
68
+ One pass: detects the agent harnesses on your machine, registers the Mnemos MCP server in each
69
+ supported one (VS Code Copilot, Cursor, ZCode, OpenCode, pi, Hermes, and everything reading the
70
+ `~/.agents` standard — Claude Code, Codex and friends), and deploys the **behavioral pack**
71
+ always-on instructions and memory skills, so the agent recalls at session start, checkpoints
72
+ before its context gets compacted, and treats memory as a priority instead of forgetting the
73
+ tools exist.
113
74
 
114
- Add `--wire-agents --all` to also grant `mnemos/*` tools to Copilot agent
115
- frontmatter in the same pass. See the
116
- [integration guide](docs/en/user/integration-guide.md#agent-mcp-wiring)
117
- for wiring flags and the [context filter guide](docs/en/user/context-filter.md)
118
- for the five-stage noise stripper that runs automatically on every `mnemos_add`.
75
+ Running a harness that reads nothing standard? One paste block per harness:
76
+ [Connect Mnemos to any harness](integrations/mcp-presets.md).
119
77
 
120
- <details>
121
- <summary><strong>🛠️ Other ways to install</strong> — from source, released wheel, or container one-liner</summary>
122
-
123
- <br>
78
+ ### 3 · Verify — then try it
124
79
 
125
- **From source** (for development):
126
-
127
- ```bash
128
- git clone https://github.com/Korrnals/mnemos.git
129
- cd mnemos
130
- uv venv && source .venv/bin/activate
131
- uv pip install -e ".[dev]"
132
- ```
133
-
134
- **Released wheel** (pin a specific version):
135
-
136
- <!-- version:pip -->
137
80
  ```bash
138
- pip install https://github.com/Korrnals/mnemos/releases/download/v4.0.0/mnemos_memory_server-4.0.0-py3-none-any.whl
81
+ mnemos doctor
139
82
  ```
140
- <!-- /version:pip -->
141
83
 
142
- **Container one-liner** pulls the image, creates volumes, starts on port 8787:
84
+ PASS / WARN / FAIL per check: store, config, MCP transport, harness registration (`--fix`
85
+ repairs the common warnings). Then give it a memory:
143
86
 
144
87
  ```bash
145
- export MNEMOS_API__TOTP_MASTER_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(32))")
146
- curl -fsSL https://raw.githubusercontent.com/Korrnals/mnemos/main/scripts/install.sh | bash -s -- --container
88
+ mnemos add "First memory — Mnemos remembers across sessions" \
89
+ --tags project:mnemos,agent:me,mnemos:learning
90
+ mnemos search "remembers across sessions"
147
91
  ```
148
92
 
149
- See the full [container deployment guide](docs/en/admin/runbooks/container-deployment.md).
150
-
151
- </details>
152
-
153
- <details>
154
- <summary><strong>🐳 Run the pre-built image directly (GHCR)</strong></summary>
93
+ That is the whole loop: **write, find, never lose it — and the agent knows when to look.**
155
94
 
156
- <br>
95
+ > 📘 **Want every detail?** The extended guide covers all install variants (`uv tool`, `pipx`,
96
+ > CLI-only, external LLM extras, installer script, container), per-harness connection
97
+ > walkthroughs, configuration, and troubleshooting:
98
+ > **[Getting Started — the complete first run](docs/en/user/getting-started.md)**.
157
99
 
158
- Published to `ghcr.io/korrnals/mnemos` on every release tag.
100
+ ---
159
101
 
160
- ```bash
161
- # Generate a TOTP master key (required — the container binds 0.0.0.0)
162
- export MNEMOS_API__TOTP_MASTER_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(32))")
163
-
164
- podman run -d --name mnemos \
165
- -p 8787:8787 \
166
- -v mnemos-data:/data \
167
- -v mnemos-vault:/vault \
168
- -e MNEMOS_API__TOTP_MASTER_KEY="${MNEMOS_API__TOTP_MASTER_KEY}" \
169
- <!-- version:image -->
170
- ghcr.io/korrnals/mnemos:4.0.0
171
- <!-- /version:image -->
172
-
173
- curl -s http://localhost:8787/health | jq
174
- ```
102
+ ## ✨ Features
175
103
 
176
- <!-- version:tags -->
177
- Tags: `:4.0.0` (pinned) · `:latest` (rolling). Works with `docker` too — swap `podman` for `docker`.
178
- <!-- /version:tags -->
104
+ One local server — and a connected agent harness gets the full memory stack.
179
105
 
180
- </details>
106
+ | Area | What you get |
107
+ |------|--------------|
108
+ | **Universal connectivity** | MCP server (26 tools, stdio) + REST API — any MCP-capable harness connects in one line ([tools](docs/en/user/mcp-tools.md) · [HTTP](docs/en/user/http-api.md)) |
109
+ | **Ready integrations** | VS Code Copilot, Claude Code, Cursor, Codex, Windsurf, OpenCode, ZCode, pi, Hermes Agent — one-line MCP presets for all of them, [native deploy targets](docs/en/user/integration-guide.md) for most, multi-harness doctor (`mnemos doctor`) |
110
+ | **Skill pack** | 14+ memory skills deployed into your harnesses |
111
+ | **Flexible memory** | Hybrid search (full-text + vector, rank fusion) over the bundled offline model `mnema-embed-v1`, [tag contract](docs/en/user/tag-contract.md), per-agent / per-project memory, [context-filter](docs/en/user/context-filter.md) profiles, CCR compression — 70–90% token savings, originals kept |
112
+ | **Context assembly** | `assemble_context`: search → compress → filter → secret scan → cache align → token budget, per-block provenance |
113
+ | **Context bridge** | `on_context_rewrite` — when the harness compacts history, the lossless original stays available on demand |
114
+ | **Lifecycle hooks** | `pre_llm_call` context injection, `on_session_start`, `post_tool_call` auto-compression of tool outputs |
115
+ | **Publication v3.0.0** | Entries visible immediately after save, background refinement with seamless swap, quarantine with neutral retraction |
116
+ | **Self-protection** | Injection / secret detectors on input and publication, every output scanned, full per-entry audit |
117
+ | **Auto-pipeline** | Background processor: clustering, deduplication, quality gate, publication. Entries awaiting refinement sit at `pipeline_state=pending` until the processor runs — in CLI-only deployments (no daemon) start it with `mnemos processor start`; `mnemos doctor` reports the pending-queue depth |
181
118
 
182
- > 📘 For a guided first run covering the MCP and HTTP servers, see
183
- > [getting-started.md](docs/en/user/getting-started.md).
119
+ Autonomy for an arbitrary harness and LLM-driven enrichment are partial the
120
+ full, honest map lives in [docs/en/features.md](docs/en/features.md).
184
121
 
185
122
  ---
186
123
 
@@ -197,14 +134,55 @@ control surfaces, and a storage layer you can read with your own eyes.
197
134
  | ⚙️ | **Policy engine** | Schedule and trigger automation over the memory store |
198
135
  | 🧹 | **Context filter** | Five-stage noise stripper for logs / stdout before anything hits a model |
199
136
  | 🗜️ | **Reversible compression (CCR)** | Compress large content with zero data loss — originals cached in SQLite, retrievable via hash marker |
200
- | 🧷 | **CacheAligner (P1-5)** | Relocate dynamic content (timestamps, UUIDs, session ids, tokens) to the tail so provider KV caches (Anthropic `cache_control`, OpenAI prefix caching) hit across requests |
201
- | 🪶 | **Output token reduction (P1-7)** | Optional `verbosity` / `effort` params on `mnemos_add` / `mnemos_search` / `mnemos_recall_context` steer the caller's output style — backward compatible, defaults are a no-op |
137
+ | 🧷 | **CacheAligner** | Relocate dynamic content (timestamps, UUIDs, session ids, tokens) to the tail so provider KV caches (Anthropic `cache_control`, OpenAI prefix caching) hit across requests |
138
+ | 🪶 | **Output token reduction** | Optional `verbosity` / `effort` params on `mnemos_add` / `mnemos_search` / `mnemos_recall_context` steer the caller's output style — backward compatible, defaults are a no-op |
202
139
  | 📂 | **Path-scoped rules** | Ingest project rules and apply them by file path |
203
140
  | 🗂️ | **Obsidian vault** | A markdown mirror humans can browse, edit, and grep |
204
141
 
205
142
  SQLite for metadata, a local numpy + SQLite vector index for recall, and an Obsidian-compatible vault
206
143
  for the humans in the loop.
207
144
 
145
+ **Where this is going.** The shipped, measured rung is *stores and finds*. The next rungs —
146
+ *collapse with checks* (session → project → cross-project synthesis: automatic by default, but never
147
+ unconditional in authority — every derivative traces back to its sources, nothing pins without an
148
+ operator) and, later, *builds understanding* — open only as pre-registered experiments prove them
149
+ ([ADR-0025](docs/project/adr/0025-memory-meta-level-lanes.md)). The invariant on that road is
150
+ **zero silent losses**: a fact is either retained, or its loss is visible. And the shape of the
151
+ ambition is a *nervous system, not a conductor* — memory that surfaces the right thing at the right
152
+ moment, never one that conducts the agent.
153
+
154
+ ---
155
+
156
+ ## 🤝 Connect any harness
157
+
158
+ Mnemos works with every MCP-capable agent harness. Three integration levels —
159
+ pick the strongest one your harness supports:
160
+
161
+ | Harness | Native deploy target | One-line MCP preset | Adapter template |
162
+ |---------|----------------------|---------------------|------------------|
163
+ | VS Code Copilot | `copilot` (+ prompts via `generic-copilot`) | [mcp-setup.sh](scripts/mcp-setup.sh) | ✓ |
164
+ | Claude Code | via `agents` | [preset](integrations/mcp-presets.md#claude-code) | ✓ |
165
+ | Cursor | `cursor` | [preset](integrations/mcp-presets.md#cursor) | ✓ |
166
+ | Codex | via `agents` | [preset](integrations/mcp-presets.md#codex) | ✓ |
167
+ | Windsurf | — | [preset](integrations/mcp-presets.md#windsurf) | ✓ |
168
+ | OpenCode | — | [preset](integrations/mcp-presets.md#opencode) | ✓ |
169
+ | ZCode | `zcode` | — | ✓ |
170
+ | Any AGENTS.md-standard harness | `agents` | — | ✓ |
171
+ | pi | `pi` (bridge extension, also on npm as [`pi-mnemos`](https://www.npmjs.com/package/pi-mnemos)) | [preset](integrations/mcp-presets.md#pi) | ✓ |
172
+ | [Hermes Agent](https://hermes-agent.nousresearch.com/) | `hermes` (native in-process `MemoryProvider` plugin) | — | — |
173
+
174
+ - **Native targets** — `mnemos integration setup --target <name>` deploys the behavioral pack and
175
+ registers the MCP server in one pass ([integration guide](docs/en/user/integration-guide.md)).
176
+ - **One-line presets** — [`integrations/mcp-presets.md`](integrations/mcp-presets.md): every harness
177
+ above, copy-paste ready.
178
+ - **Adapter template** — [`integrations/adapter-template.md`](integrations/adapter-template.md):
179
+ Connect / Expose / Configure + acceptance checklist for any harness that speaks MCP stdio.
180
+ - **Hermes Agent** runs Mnemos in-process: `pip install mnemos-memory-server` in the Hermes environment,
181
+ then `mnemos integration setup --target hermes` ([details](docs/en/user/integration-guide.md#hermes-agent)).
182
+
183
+ The shared contract is the [tag schema](docs/en/user/tag-contract.md) — `project:<slug>`, `agent:<slug>`,
184
+ and at least one `mnemos:<subtype>` — that every memory entry must carry.
185
+
208
186
  ---
209
187
 
210
188
  ## 🏗️ Architecture
@@ -217,7 +195,7 @@ for the humans in the loop.
217
195
  ```mermaid
218
196
  flowchart TB
219
197
  subgraph CLIENTS["Clients"]
220
- C1(["VS Code · Copilot\nstdio MCP"])
198
+ C1(["Agent harness\nstdio MCP"])
221
199
  C2(["CLI — mnemos …"])
222
200
  C3(["HTTP API client"])
223
201
  end
@@ -283,27 +261,12 @@ The same `MemoryManager` powers all three interfaces. Pick the one that fits you
283
261
 
284
262
  | Surface | Use it when… | Reference |
285
263
  |---------|--------------|-----------|
264
+ | **MCP** — `mnemos mcp-server` | You are an agent harness — the path every connected agent takes | [mcp-tools.md](docs/en/user/mcp-tools.md) |
286
265
  | **CLI** — `mnemos …` | You live in a shell, want fast ad-hoc add / search, or are scripting cron jobs | [cli-reference.md](docs/en/user/cli-reference.md) |
287
266
  | **HTTP** — `mnemos serve` | You have a non-MCP client — a web dashboard, a mobile app, a CI runner | [http-api.md](docs/en/user/http-api.md) |
288
- | **MCP** — `mnemos mcp-server` | You are VS Code Copilot or any MCP-aware agent — the path Copilot agents take | [mcp-tools.md](docs/en/user/mcp-tools.md) |
289
-
290
- The MCP surface also exposes the **A2A Sessions API** (M16) — a persistent backend for multi-step agent
291
- conversations. Five endpoints (`POST /v1/sessions`, append-turn, range-load, …) let agents survive restarts
292
- without losing context. See [a2a-sessions.md](docs/en/architecture/a2a-sessions.md).
293
-
294
- ---
295
267
 
296
- ## 📖 The lore
297
-
298
- > In Hesiod's *Theogony*, **Mnemosyne** (Μνημοσύνη) is the Titaness of memory — she who, by Zeus, gave
299
- > birth to the nine Muses and through them made the world's remembering possible. Her name is the root of
300
- > *mnemonic*, and she is what every singer, poet, and philosopher prays to before they begin.
301
-
302
- This software carries her name because it is built for the same task: **to make remembering possible for
303
- the things that think.** AI agents, unmoored from any single conversation, lose everything that came
304
- before. Mnemos gives them a place to lay it down — structured, searchable, governed by contract — so that
305
- what they learn does not vanish with the closing of a session. The Muses, after all, were not for the
306
- gods' benefit. They were for the songs.
268
+ The HTTP surface also exposes the **A2A Sessions API** — a persistent backend for multi-step agent
269
+ conversations that survive restarts. See [a2a-sessions.md](docs/en/architecture/a2a-sessions.md).
307
270
 
308
271
  ---
309
272
 
@@ -312,73 +275,40 @@ gods' benefit. They were for the songs.
312
275
  | Page | What it covers |
313
276
  |------|----------------|
314
277
  | [docs/README.md](docs/README.md) | Documentation landing — language picker (EN / RU) |
315
- | [getting-started.md](docs/en/user/getting-started.md) | First run: install → first memory → first search → MCP / HTTP |
278
+ | [getting-started.md](docs/en/user/getting-started.md) | First run: install → first memory → first search → connect your harness |
279
+ | [mcp-presets.md](integrations/mcp-presets.md) | Connect Mnemos to any harness — one-line MCP presets (VS Code, Claude Code, Cursor, OpenCode, Codex, Windsurf, pi, Hermes) |
280
+ | [integration-guide.md](docs/en/user/integration-guide.md) | The behavioral pack: instructions, skills, prompt mode, deploy targets, agent wiring, Hermes plugin |
281
+ | [features.md](docs/en/features.md) | What works out of the box, what is partial, what is planned |
316
282
  | [architecture/overview.md](docs/en/architecture/overview.md) | System shape, data model, state machines, security boundaries |
317
283
  | [cli-reference.md](docs/en/user/cli-reference.md) | Every `mnemos` subcommand with flags, defaults, examples |
318
- | [mcp-tools.md](docs/en/user/mcp-tools.md) | Every `mnemos_*` tool exposed to VS Code Copilot |
319
- | [http-api.md](docs/en/user/http-api.md) | Every HTTP endpoint (memory CRUD + A2A Sessions, M16) |
320
- | [a2a-sessions.md](docs/en/architecture/a2a-sessions.md) | Agent-to-agent conversation contract (M16) |
284
+ | [mcp-tools.md](docs/en/user/mcp-tools.md) | Every `mnemos_*` tool exposed to agent harnesses |
285
+ | [http-api.md](docs/en/user/http-api.md) | Every HTTP endpoint (memory CRUD, workflow, hooks, A2A Sessions) |
321
286
  | [tag-contract.md](docs/en/user/tag-contract.md) | The `project:` / `agent:` / `mnemos:` schema enforced on every memory |
322
- | [security.md](docs/en/admin/security.md) | Threat model, SSRF guard, FTS5 escape, HF Hub pinning |
323
- | [runbooks/](docs/en/admin/runbooks/) | Install, migrate, backup / restore, dependency updates |
324
- | [container-deployment.md](docs/en/admin/runbooks/container-deployment.md) | Build, push, compose, podman, Kubernetes, quadlet |
287
+ | [security.md](docs/en/admin/security.md) | Threat model, SSRF guard, FTS5 escape, auth model |
288
+ | [runbooks/](docs/en/admin/runbooks/) | Install, migrate, backup / restore, dependency updates, container deployment |
325
289
  | [adr/](docs/project/adr/) | Architectural decision records — the *why* behind the design |
326
- | [milestones.md](docs/project/milestones.md) | Milestone ledger with status legend |
327
- | [reports/](docs/project/reports/) | Phase completion reports — final report per completed roadmap phase |
328
290
  | [CHANGELOG.md](CHANGELOG.md) | Release notes — Keep a Changelog format |
291
+ | [CONTRIBUTING.md](CONTRIBUTING.md) | Development setup, git workflow, quality gate |
329
292
 
330
293
  ---
331
294
 
332
- ## 🤝 Integrations
333
-
334
- Mnemos works with every MCP-capable agent harness. Three integration levels —
335
- pick the strongest one your harness supports:
295
+ ## 📖 The lore
336
296
 
337
- | Harness | Native deploy target | One-line MCP preset | Adapter template |
338
- |---------|----------------------|---------------------|------------------|
339
- | VS Code Copilot | `copilot` (+ prompts via `generic-copilot`) | [mcp-setup.sh](scripts/mcp-setup.sh) | |
340
- | Claude Code | via `agents` | [preset](integrations/mcp-presets.md#claude-code) | ✓ |
341
- | Cursor | `cursor` | [preset](integrations/mcp-presets.md#cursor) | ✓ |
342
- | Codex | via `agents` | [preset](integrations/mcp-presets.md#codex) | ✓ |
343
- | Windsurf | — | [preset](integrations/mcp-presets.md#windsurf) | ✓ |
344
- | ZCode | `zcode` | — | ✓ |
345
- | Any AGENTS.md-standard harness | `agents` | — | ✓ |
346
- | [Hermes Agent](https://hermes-agent.nousresearch.com/) | `hermes` (native `MemoryProvider` plugin) | — | — |
347
-
348
- - **[Hermes Agent](https://hermes-agent.nousresearch.com/)** — native `MemoryProvider` plugin
349
- (`integrations/hermes/`): automatic prefetch, sync-turn, built-in memory mirroring.
350
- Since plugin **3.0.0** (ADR-0017 D1) the plugin runs **in-process** — it needs `pip install mnemos-memory-server`
351
- in the Hermes Python environment, and the legacy `base_url` / `api_key` / `totp_secret` config keys are gone.
352
- See the [integration guide](docs/en/user/integration-guide.md#hermes-agent).
353
- - **Native targets** — `mnemos integration setup --target <name>` deploys the
354
- behavioral pack and registers the MCP server in one pass. See the
355
- [integration guide](docs/en/user/integration-guide.md).
356
- - **One-line MCP presets** — [`integrations/mcp-presets.md`](integrations/mcp-presets.md):
357
- connect Cursor, Claude Code, Codex, or Windsurf by pasting one line.
358
- - **Adapter template** — [`integrations/adapter-template.md`](integrations/adapter-template.md):
359
- Connect / Expose / Configure + acceptance checklist for any harness that
360
- speaks MCP stdio.
297
+ > In Hesiod's *Theogony*, **Mnemosyne** (Μνημοσύνη) is the Titaness of memory she who, by Zeus, gave
298
+ > birth to the nine Muses and through them made the world's remembering possible. Her name is the root of
299
+ > *mnemonic*, and she is what every singer, poet, and philosopher prays to before they begin.
361
300
 
362
- The shared contract is the [tag schema](docs/en/user/tag-contract.md) `project:<slug>`, `agent:<slug>`,
363
- and at least one `mnemos:<subtype>` that every memory entry must carry.
301
+ This software carries her name because it is built for the same task: **to make remembering possible for
302
+ the things that think.** AI agents, unmoored from any single conversation, lose everything that came
303
+ before. Mnemos gives them a place to lay it down — structured, searchable, governed by contract — so that
304
+ what they learn does not vanish with the closing of a session. The Muses, after all, were not for the
305
+ gods' benefit. They were for the songs.
364
306
 
365
307
  ---
366
308
 
367
- ## ⚖️ Source &amp; license
309
+ ## ⚖️ License &amp; contributing
368
310
 
369
- - **Source** this repository, [github.com/Korrnals/mnemos](https://github.com/Korrnals/mnemos).
370
- - **License** — Apache-2.0 (see [LICENSE](LICENSE)).
311
+ Apache-2.0see [LICENSE](LICENSE) and [NOTICE](NOTICE). Source: [github.com/Korrnals/mnemos](https://github.com/Korrnals/mnemos).
371
312
 
372
- ## 🌱 Contributing
373
-
374
- PRs welcome. Read [PLAN.md](PLAN.md) for the roadmap and follow the conventions in the [docs/](docs/) set.
375
-
376
- Git workflow: `feat/*` → `dev-<stage>` → `release/X.Y.Z` → `main`; `main` accepts only `release/*` and
377
- `hotfix/*` PRs. Conventional Commits required. Run `make verify` before opening a PR.
378
-
379
- ---
380
-
381
- <p align="center">
382
- <sub><strong>Reproduce the green state:</strong> <code>make verify</code> runs the full quality gate
383
- — ruff + mypy --strict + bandit + pip-audit + 867 tests. If it's green, the change is good to ship.</sub>
384
- </p>
313
+ Contributions are welcome — [CONTRIBUTING.md](CONTRIBUTING.md) has the development setup, the branch
314
+ and commit conventions, and the quality gate a change must pass.
package/README.ru.md CHANGED
@@ -7,10 +7,12 @@
7
7
 
8
8
  <p align="center">
9
9
  <strong>Сервер памяти и знаний для AI-агентов</strong><br>
10
- <em>назван в честь титаниды памяти, создан для AI-агентов, которым нужна память</em>
10
+ <em>назван в честь титаниды памяти, создан для агентов, которым нужно помнить</em>
11
11
  </p>
12
12
 
13
13
  <p align="center">
14
+ <a href="https://pypi.org/project/mnemos-memory-server/"><img src="https://img.shields.io/pypi/v/mnemos-memory-server?label=pypi&color=3776ab" alt="PyPI"></a>
15
+ <a href="https://www.npmjs.com/package/pi-mnemos"><img src="https://img.shields.io/npm/v/pi-mnemos?label=npm&color=cb3837" alt="npm"></a>
14
16
  <a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776ab" alt="Python"></a>
15
17
  <a href="pyproject.toml"><img src="https://img.shields.io/badge/license-Apache_2.0-blue" alt="License: Apache-2.0"></a>
16
18
  <a href="https://github.com/Korrnals/mnemos/releases"><img src="https://img.shields.io/github/v/release/Korrnals/mnemos?label=version&color=blueviolet" alt="Version"></a>
@@ -21,160 +23,101 @@
21
23
  </p>
22
24
 
23
25
  <p align="center">
24
- <a href="#-возможности">Возможности</a> ·
25
26
  <a href="#-быстрый-старт">Быстрый старт</a> ·
27
+ <a href="#-возможности">Возможности</a> ·
26
28
  <a href="#-что-такое-mnemos">Что это</a> ·
29
+ <a href="#-подключение-любого-харнеса">Подключить харнес</a> ·
27
30
  <a href="#%EF%B8%8F-архитектура">Архитектура</a> ·
28
- <a href="#%EF%B8%8F-три-поверхности-одно-ядро">Поверхности</a> ·
29
31
  <a href="#-документация">Документация</a>
30
32
  </p>
31
33
 
32
34
  ---
33
35
 
34
- ## Возможности
36
+ AI-агенты забывают всё, когда сессия заканчивается. Mnemos даёт им место, куда это можно
37
+ положить — структурированно, с поиском, по контракту — чтобы то, что агент узнал, не исчезало
38
+ с закрытием окна.
35
39
 
36
- Один локальный сервер и подключённый агентский харнес получает полный стек памяти.
37
-
38
- | Область | Что даёт |
39
- |---------|----------|
40
- | **Универсальное подключение** | MCP-сервер (26 инструментов, stdio) + REST API — любой харнесс с поддержкой MCP подключается одной строкой ([инструменты](docs/ru/user/mcp-tools.md) · [HTTP](docs/ru/user/http-api.md)) |
41
- | **Готовые интеграции** | zcode, стандарт `~/.agents` (Claude / Codex / Continue / Qwen и др.), pi — через [`mnemos integration`](docs/ru/user/integration-guide.md): таргеты развёртывания, однострочные MCP-пресеты, доктор мульти-харнесов |
42
- | **Пакет скиллов** | 14+ скиллов памяти деплоятся в харнесы |
43
- | **Гибкая память** | Гибридный поиск (полнотекстовый + векторный, слияние ранжирования), [теги-контракт](docs/ru/user/tag-contract.md), память по агентам и проектам, профили [контекстного фильтра](docs/ru/user/context-filter.md), сжатие CCR — экономия 70–90% токенов, оригиналы сохраняются |
44
- | **Сборка контекста** | `assemble_context`: поиск → сжатие → фильтр → скан секретов → выравнивание кэша → бюджет токенов, провенанс каждого блока |
45
- | **Мост контекста** | `on_context_rewrite` — при сжатии истории харнессом оригинал без потерь доступен по требованию |
46
- | **Хуки жизненного цикла** | `pre_llm_call` (впрыск контекста перед запросом модели), `on_session_start`, `post_tool_call` (авто-сжатие выводов инструментов) |
47
- | **Публикация v3.0.0** | Запись видна сразу после сохранения, фоновая дообработка с бесшовной подменой, карантин с нейтральной ретракцией |
48
- | **Автозащита** | Детекторы инъекций / секретов на входе и публикации, скан каждой выдачи, полный аудит с привязкой к записи |
49
- | **Автоконвейер** | Фоновый обработчик: кластеризация, дедупликация, гейт качества, публикация |
50
-
51
- Автономность для произвольного харнесса, LLM-дообогащение и публикация пакетов
52
- (PyPI / npm) — частично; полная честная карта: [docs/ru/features.md](docs/ru/features.md).
40
+ - **Локальность прежде всего.** Один процесс на вашей машине. SQLite + встроенная модель эмбеддингов; ничего не покидает хост, без API-ключей, работает офлайн.
41
+ - **Один сервер, любой харнес.** VS Code Copilot, Claude Code, Cursor, OpenCode, Codex, Windsurf, ZCode, pi, Hermes — один и тот же MCP-провод, одна строка на каждого.
42
+ - **Агент учится этим *пользоваться*.** Не только инструменты: always-on инструкции, пакет скиллов и режим промпта «память прежде всего», разворачиваемые в ваш харнес одной командой.
53
43
 
54
44
  ---
55
45
 
56
46
  ## 🚀 Быстрый старт
57
47
 
58
- Четыре шага до рабочего хранилища памяти, подключённого к VS Code Copilot.
48
+ Три команды от пустой машины до агента, который помнит и знает, когда заглянуть.
59
49
 
60
- ### 1 · Установка
50
+ ### 1 · Установите сервер
61
51
 
62
52
  ```bash
63
- curl -fsSL https://raw.githubusercontent.com/Korrnals/mnemos/main/scripts/install.sh | bash
53
+ pip install mnemos-memory-server
64
54
  ```
65
55
 
66
- Установщик делает всё за вас знание Python или venv не требуется:
67
-
68
- - создаёт изолированное окружение в `~/.mnemos/venv`;
69
- - кладёт лаунчер `mnemos` в `~/.local/bin`, чтобы CLI работал в любом шелле (**активировать venv не нужно**);
70
- - тут же предлагает настроить интеграцию VS Code MCP (или сделайте это позже — см. шаг 3).
56
+ Всё в одном пакете: сервер памяти, CLI `mnemos`, REST API и MCP-сервер, с которым разговаривает
57
+ ваш агентский харнес. Модель эмбеддингов встроена — поиск работает полностью офлайн,
58
+ без API-ключей и без загрузок.
71
59
 
72
- > Нужен неинтерактивный запуск? Добавьте `--mcp` / `--no-mcp`, чтобы выбрать заранее, например
73
- > `… | bash -s -- --mcp`.
60
+ > ⚠️ Не перепутайте имя: `pip install mnemos` (без `-memory-server`) посторонний проект.
74
61
 
75
- ### 2 · Запись и поиск
76
-
77
- ```bash
78
- mnemos add "Первая запись — Mnemos помнит между сессиями" \
79
- --tags project:mnemos,agent:tech-writer,mnemos:learning
80
-
81
- mnemos search "помнит между сессиями"
82
- ```
83
-
84
- Это весь цикл: **записал, нашёл, не потерял.** Каждая запись несёт
85
- [контракт тегов](docs/ru/user/tag-contract.md) (`project:` / `agent:` / `mnemos:`), чтобы память оставалась упорядоченной.
86
-
87
- ### 3 · Подключение к VS Code (MCP)
88
-
89
- Если во время установки вы ответили **да** — всё готово, просто перезагрузите окно VS Code.
90
- Чтобы настроить вручную или на другой машине:
91
-
92
- ```bash
93
- curl -fsSL https://raw.githubusercontent.com/Korrnals/mnemos/main/scripts/mcp-setup.sh | bash
94
- ```
95
-
96
- Затем **перезагрузите окно VS Code** (`Ctrl+Shift+P → Reload Window`). Инструменты `mnemos_*` появятся
97
- в палитре инструментов Copilot, и агенты смогут вызывать `mnemos_add` / `mnemos_search` напрямую.
98
-
99
- ### 4 · Установка поведенческих инструкций
62
+ ### 2 · Подключите харнес — и научите его пользоваться памятью
100
63
 
101
64
  ```bash
102
65
  mnemos integration setup
103
66
  ```
104
67
 
105
- Развёртывает инструкции использования памяти, скилы и режим промпта в ваш
106
- агентский харнес (Copilot `~/.copilot/`, обычный Copilot, Cursor). Агенты теперь
107
- *знают когда и как* использовать память Mnemos а не просто имеют инструменты.
108
-
109
- Добавьте `--wire-agents --all`, чтобы в том же проходе выдать инструменты
110
- `mnemos/*` во фронтматтер Copilot-агентов. См. [руководство по интеграции](docs/ru/user/integration-guide.md#подключение-mcp-инструментов-к-агентам)
111
- по флагам wiring и [руководство по контекстному фильтру](docs/ru/user/context-filter.md)
112
- — пятиступенчатый очиститель шума, который запускается автоматически при каждом `mnemos_add`.
113
-
114
- <details>
115
- <summary><strong>🛠️ Другие способы установки</strong> — из исходников, готовый wheel или контейнер</summary>
116
-
117
- <br>
118
-
119
- **Из исходников** (для разработки):
68
+ Один проход: находит агентские харнесы на вашей машине, регистрирует MCP-сервер Mnemos в каждом
69
+ поддерживаемом харнесе (VS Code Copilot, Cursor, ZCode, OpenCode, pi, Hermes и всё, что читает
70
+ стандарт `~/.agents`, Claude Code, Codex и друзья) и разворачивает **поведенческий пакет**
71
+ always-on инструкции и скиллы памяти, чтобы агент вспоминал в начале сессии, делал чекпоинт
72
+ до того, как его контекст сожмут, и относился к памяти как к приоритету, а не забывал,
73
+ что инструменты существуют.
120
74
 
121
- ```bash
122
- git clone https://github.com/Korrnals/mnemos.git
123
- cd mnemos
124
- uv venv && source .venv/bin/activate
125
- uv pip install -e ".[dev]"
126
- ```
75
+ Харнес, который не читает ничего стандартного? Один блок для копипаста на каждый:
76
+ [Подключите Mnemos к любому харнесу](integrations/mcp-presets.md).
127
77
 
128
- **Готовый wheel** (зафиксировать конкретную версию):
78
+ ### 3 · Проверьте — и попробуйте
129
79
 
130
- <!-- version:pip -->
131
80
  ```bash
132
- pip install https://github.com/Korrnals/mnemos/releases/download/v4.0.0/mnemos_memory_server-4.0.0-py3-none-any.whl
81
+ mnemos doctor
133
82
  ```
134
- <!-- /version:pip -->
135
83
 
136
- **Контейнер одной командой** скачивает образ, создаёт тома, запускает на порту 8787:
84
+ PASS / WARN / FAIL по каждой проверке: хранилище, конфиг, MCP-транспорт, регистрация харнесов
85
+ (`--fix` чинит типовые предупреждения). Затем дайте ему память:
137
86
 
138
87
  ```bash
139
- export MNEMOS_API__TOTP_MASTER_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(32))")
140
- curl -fsSL https://raw.githubusercontent.com/Korrnals/mnemos/main/scripts/install.sh | bash -s -- --container
88
+ mnemos add "Первая запись — Mnemos помнит между сессиями" \
89
+ --tags project:mnemos,agent:me,mnemos:learning
90
+ mnemos search "помнит между сессиями"
141
91
  ```
142
92
 
143
- Полное руководство[container-deployment.md](docs/ru/admin/runbooks/container-deployment.md).
144
-
145
- </details>
146
-
147
- <details>
148
- <summary><strong>🐳 Запуск готового образа напрямую (GHCR)</strong></summary>
93
+ Это весь цикл: **записал, нашёл, не потерял и агент знает, когда заглянуть в память.**
149
94
 
150
- <br>
95
+ > 📘 **Хотите каждую деталь?** Расширенный гид покрывает все варианты установки (`uv tool`, `pipx`,
96
+ > только CLI, внешние LLM-экстры, скрипт-установщик, контейнер), пошаговое подключение каждого
97
+ > харнеса, конфигурацию и разбор неполадок:
98
+ > **[Начало работы — полное руководство](docs/ru/user/getting-started.md)**.
151
99
 
152
- Образ публикуется в `ghcr.io/korrnals/mnemos` при каждом release-теге.
100
+ ---
153
101
 
154
- ```bash
155
- # Сгенерируйте TOTP-ключ (обязательно — контейнер слушает 0.0.0.0)
156
- export MNEMOS_API__TOTP_MASTER_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(32))")
157
-
158
- podman run -d --name mnemos \
159
- -p 8787:8787 \
160
- -v mnemos-data:/data \
161
- -v mnemos-vault:/vault \
162
- -e MNEMOS_API__TOTP_MASTER_KEY="${MNEMOS_API__TOTP_MASTER_KEY}" \
163
- <!-- version:image -->
164
- ghcr.io/korrnals/mnemos:4.0.0
165
- <!-- /version:image -->
166
-
167
- curl -s http://localhost:8787/health | jq
168
- ```
102
+ ## ✨ Возможности
169
103
 
170
- <!-- version:tags -->
171
- Теги: `:4.0.0` (фиксированная) · `:latest` (rolling). Работает и с `docker` — замените `podman` на `docker`.
172
- <!-- /version:tags -->
104
+ Один локальный сервер — и подключённый агентский харнес получает полный стек памяти.
173
105
 
174
- </details>
106
+ | Область | Что даёт |
107
+ |---------|----------|
108
+ | **Универсальное подключение** | MCP-сервер (26 инструментов, stdio) + REST API — любой харнесс с поддержкой MCP подключается одной строкой ([инструменты](docs/ru/user/mcp-tools.md) · [HTTP](docs/ru/user/http-api.md)) |
109
+ | **Готовые интеграции** | VS Code Copilot, Claude Code, Cursor, Codex, Windsurf, OpenCode, ZCode, pi, Hermes Agent — однострочные MCP-пресеты для всех, [нативные таргеты развёртывания](docs/ru/user/integration-guide.md) для большинства, мульти-харнесный доктор (`mnemos doctor`) |
110
+ | **Пакет скиллов** | 14+ скиллов памяти разворачиваются в ваши харнесы |
111
+ | **Гибкая память** | Гибридный поиск (полнотекстовый + векторный, слияние рангов) поверх встроенной офлайн-модели `mnema-embed-v1`, [контракт тегов](docs/ru/user/tag-contract.md), память по агентам и проектам, профили [контекстного фильтра](docs/ru/user/context-filter.md), сжатие CCR — экономия 70–90% токенов, оригиналы сохраняются |
112
+ | **Сборка контекста** | `assemble_context`: поиск → сжатие → фильтр → скан секретов → выравнивание кэша → бюджет токенов, провенанс каждого блока |
113
+ | **Мост контекста** | `on_context_rewrite` — когда харнес сжимает историю, оригинал без потерь доступен по требованию |
114
+ | **Хуки жизненного цикла** | `pre_llm_call` — впрыск контекста, `on_session_start`, `post_tool_call` — авто-сжатие вывода инструментов |
115
+ | **Публикация v3.0.0** | Запись видна сразу после сохранения, фоновая дообработка с бесшовной подменой, карантин с нейтральной ретракцией |
116
+ | **Автозащита** | Детекторы инъекций / секретов на входе и на публикации, скан каждого вывода, полный аудит по каждой записи |
117
+ | **Автоконвейер** | Фоновый процессор: кластеризация, дедупликация, гейт качества, публикация |
175
118
 
176
- > 📘 Пошаговое руководство первого запуска с MCP- и HTTP-серверами —
177
- > [getting-started.md](docs/ru/user/getting-started.md).
119
+ Автономность для произвольного харнесса и LLM-дообогащение частично; полная
120
+ честная карта: [docs/ru/features.md](docs/ru/features.md).
178
121
 
179
122
  ---
180
123
 
@@ -185,19 +128,61 @@ curl -s http://localhost:8787/health | jq
185
128
 
186
129
  | | Возможность | Что это даёт |
187
130
  |---|------------|-------------------|
188
- | 🔎 | **Гибридный поиск** | Векторная близость + полнотекстовый FTS5 по каждой записи |
131
+ | 🔎 | **Гибридный поиск** | Векторная близость + SQLite FTS5 полнотекст по каждой записи |
189
132
  | 🧪 | **Конвейер знаний** | Жизненный цикл `raw → processing → processed → published` с конечным автоматом |
190
133
  | 🧠 | **Recall на агента** | Сфокусированная поверхность recall в контексте проекта каждого агента |
191
134
  | ⚙️ | **Движок политик** | Планирование и триггеры автоматизации над хранилищем памяти |
192
- | 🧹 | **Контекстный фильтр** | Пятиступенчатая очистка логов / stdout перед отправкой модели |
135
+ | 🧹 | **Контекстный фильтр** | Пятиступенчатая очистка шума из логов / stdout до того, как что-то попадёт в модель |
193
136
  | 🗜️ | **Обратимое сжатие (CCR)** | Сжатие большого контента без потери данных — оригиналы кэшируются в SQLite, извлекаются по хеш-маркеру |
194
- | 🧷 | **CacheAligner (P1-5)** | Перенос динамического контента (таймстампы, UUID, session id, токены) в хвост, чтобы KV-кэши провайдеров (Anthropic `cache_control`, OpenAI prefix caching) попадали между запросами |
195
- | 🪶 | **Сокращение токенов вывода (P1-7)** | Опциональные параметры `verbosity` / `effort` на `mnemos_add` / `mnemos_search` / `mnemos_recall_context` управляют стилем вывода вызывающей стороны — обратная совместимость, значения по умолчанию — no-op |
137
+ | 🧷 | **CacheAligner** | Перенос динамического контента (таймстампы, UUID, session id, токены) в хвост, чтобы KV-кэши провайдеров (Anthropic `cache_control`, OpenAI prefix caching) попадали между запросами |
138
+ | 🪶 | **Сокращение токенов вывода** | Опциональные параметры `verbosity` / `effort` на `mnemos_add` / `mnemos_search` / `mnemos_recall_context` управляют стилем вывода вызывающей стороны — обратно совместимо, значения по умолчанию — no-op |
196
139
  | 📂 | **Path-scoped rules** | Ингест правил проекта и применение их по пути файла |
197
- | 🗂️ | **Obsidian vault** | Markdown-зеркало, которое люди могут смотреть, править и grep'ать |
140
+ | 🗂️ | **Obsidian vault** | Markdown-зеркало, которое люди могут листать, править и грепать |
198
141
 
199
142
  SQLite для метаданных, локальный векторный индекс на numpy + SQLite для recall и Obsidian-совместимый
200
- vault для людей в процессе.
143
+ vault для людей в контуре.
144
+
145
+ **Куда это движется.** Отгруженная и измеренная ступень — *хранит и находит*. Следующие ступени —
146
+ *свёртка с чеками* (синтез сессия → проект → кросс-проект: автоматическая по умолчанию, но никогда
147
+ безусловная по авторитету — каждый итог возводим к исходникам, ничто не пиннится без оператора) и
148
+ позже *строит понимание* — открываются только по мере подтверждения предрегистрированными
149
+ экспериментами ([ADR-0025](docs/project/adr/0025-memory-meta-level-lanes.md)). Инвариант этого
150
+ пути — **ноль тихих потерь**: факт либо сохранён, либо потеря видна. А форма амбиции — *нервная
151
+ система, а не дирижёр*: память, которая поднимает нужное в нужный момент, но никогда не дирижирует
152
+ агентом.
153
+
154
+ ---
155
+
156
+ ## 🤝 Подключение любого харнеса
157
+
158
+ Mnemos работает с любым агентским харнесом с поддержкой MCP. Три уровня интеграции —
159
+ выбирайте самый сильный из доступных для вашего харнеса:
160
+
161
+ | Харнесс | Нативная цель | Однострочный MCP-пресет | Шаблон адаптера |
162
+ |---------|---------------|-------------------------|-----------------|
163
+ | VS Code Copilot | `copilot` (+ промпты через `generic-copilot`) | [mcp-setup.sh](scripts/mcp-setup.sh) | ✓ |
164
+ | Claude Code | через `agents` | [пресет](integrations/mcp-presets.md#claude-code) | ✓ |
165
+ | Cursor | `cursor` | [пресет](integrations/mcp-presets.md#cursor) | ✓ |
166
+ | Codex | через `agents` | [пресет](integrations/mcp-presets.md#codex) | ✓ |
167
+ | Windsurf | — | [пресет](integrations/mcp-presets.md#windsurf) | ✓ |
168
+ | OpenCode | — | [пресет](integrations/mcp-presets.md#opencode) | ✓ |
169
+ | ZCode | `zcode` | — | ✓ |
170
+ | Любой харнесс стандарта AGENTS.md | `agents` | — | ✓ |
171
+ | pi | `pi` (бридж-расширение, также на npm как [`pi-mnemos`](https://www.npmjs.com/package/pi-mnemos)) | [пресет](integrations/mcp-presets.md#pi) | ✓ |
172
+ | [Hermes Agent](https://hermes-agent.nousresearch.com/) | `hermes` (нативный in-process плагин `MemoryProvider`) | — | — |
173
+
174
+ - **Нативные таргеты** — `mnemos integration setup --target <имя>` разворачивает поведенческий пакет
175
+ и регистрирует MCP-сервер за один проход ([руководство по интеграции](docs/ru/user/integration-guide.md)).
176
+ - **Однострочные пресеты** — [`integrations/mcp-presets.md`](integrations/mcp-presets.md): каждый
177
+ харнес из таблицы выше, готово к копипасту.
178
+ - **Шаблон адаптера** — [`integrations/adapter-template.md`](integrations/adapter-template.md):
179
+ Connect / Expose / Configure + чеклист приёмки для любого харнеса, говорящего по MCP stdio.
180
+ - **Hermes Agent** запускает Mnemos in-process: `pip install mnemos-memory-server` в Python-окружении
181
+ Hermes, затем `mnemos integration setup --target hermes`
182
+ ([подробнее](docs/ru/user/integration-guide.md#hermes-agent)).
183
+
184
+ Общий контракт — [схема тегов](docs/ru/user/tag-contract.md) — `project:<slug>`, `agent:<slug>`
185
+ и хотя бы один `mnemos:<subtype>` — обязательна для каждой записи памяти.
201
186
 
202
187
  ---
203
188
 
@@ -210,13 +195,13 @@ vault для людей в процессе.
210
195
 
211
196
  ```mermaid
212
197
  flowchart TB
213
- subgraph CLIENTS["Клиенты"]
214
- C1(["VS Code · Copilot\nstdio MCP"])
198
+ subgraph CLIENTS["Clients"]
199
+ C1(["Agent harness\nstdio MCP"])
215
200
  C2(["CLI — mnemos …"])
216
- C3(["HTTP API клиент"])
201
+ C3(["HTTP API client"])
217
202
  end
218
203
 
219
- subgraph IFACE["Слой интерфейсов"]
204
+ subgraph IFACE["Interface Layer"]
220
205
  MCP["mcp_server.py"]
221
206
  FAPI["api/main.py · FastAPI"]
222
207
  TYPER["cli/main.py · Typer"]
@@ -224,19 +209,19 @@ flowchart TB
224
209
 
225
210
  MGR(["MemoryManager\nmanager.py"])
226
211
 
227
- subgraph PROC["Подсистемы обработки"]
212
+ subgraph PROC["Processing Subsystems"]
228
213
  CF["Context Filter\nfilter/"]
229
214
  PP["Knowledge Pipeline\npipeline/"]
230
215
  RE["Recall Engine\nrecall/"]
231
216
  PE["Policy Engine\npolicy/"]
232
217
  end
233
218
 
234
- subgraph BG["Фоновые сервисы"]
219
+ subgraph BG["Background Services"]
235
220
  WA["Watchers\nwatchers/"]
236
221
  AC["Auto-collect\nauto_collect.py"]
237
222
  end
238
223
 
239
- subgraph STORE["Слой хранения"]
224
+ subgraph STORE["Storage Layer"]
240
225
  SQ[("SQLite\nFTS5 · traces · projects")]
241
226
  VS[("Vector Store\nnumpy + SQLite")]
242
227
  VLT[("Obsidian Vault\nmarkdown mirror")]
@@ -266,38 +251,23 @@ flowchart TB
266
251
 
267
252
  </details>
268
253
 
269
- Более глубокий разбор — модель данных, конечные автоматы, границы безопасности, эксплуатационные аспекты —
270
- в [architecture/overview.md](docs/ru/architecture/overview.md).
254
+ Более глубокий разбор — модель данных, конечные автоматы, границы безопасности, эксплуатационные
255
+ аспекты — в [architecture/overview.md](docs/ru/architecture/overview.md).
271
256
 
272
257
  ---
273
258
 
274
259
  ## 🎛️ Три поверхности, одно ядро
275
260
 
276
- Один и тот же `MemoryManager` управляет всеми тремя интерфейсами. Выберите подходящий клиенту.
261
+ Один и тот же `MemoryManager` питает все три интерфейса. Выберите тот, что подходит вашему клиенту.
277
262
 
278
263
  | Поверхность | Когда использовать… | Документация |
279
264
  |---------|--------------|-----------|
280
- | **CLI** — `mnemos …` | Вы работаете в шелле, нужен быстрый ad-hoc add / search или скрипты cron | [cli-reference.md](docs/ru/user/cli-reference.md) |
265
+ | **MCP** — `mnemos mcp-server` | Вы агентский харнес; путь, по которому идёт каждый подключённый агент | [mcp-tools.md](docs/ru/user/mcp-tools.md) |
266
+ | **CLI** — `mnemos …` | Вы живёте в шелле, нужен быстрый ad-hoc add / search или скрипты для cron | [cli-reference.md](docs/ru/user/cli-reference.md) |
281
267
  | **HTTP** — `mnemos serve` | У вас не-MCP клиент — веб-дашборд, мобильное приложение, CI runner | [http-api.md](docs/ru/user/http-api.md) |
282
- | **MCP** — `mnemos mcp-server` | Вы VS Code Copilot или любой MCP-aware агент — путь Copilot-агентов | [mcp-tools.md](docs/ru/user/mcp-tools.md) |
283
-
284
- MCP-поверхность также предоставляет **A2A Sessions API** (M16) — постоянный бэкенд для многошаговых
285
- разговоров агентов. Пять endpoints (`POST /v1/sessions`, append-turn, range-load, …) позволяют агентам
286
- переживать рестарты без потери контекста. См. [a2a-sessions.md](docs/ru/architecture/a2a-sessions.md).
287
-
288
- ---
289
-
290
- ## 📖 Лор
291
268
 
292
- > В «Теогонии» Гесиода **Мнемосина** (Μνημοσύνη)титанида памяти. Она, от Зевса, родила девять муз и
293
- > через них сделала возможным воспоминание мира. Её имя — корень слова *мнемонический*, и к ней обращается
294
- > каждый певец, поэт и философ, прежде чем начать.
295
-
296
- Это программное обеспечение носит её имя, потому что создано для той же задачи: **сделать воспоминание
297
- возможным для тех, кто мыслит.** AI-агенты, оторванные от единственного разговора, теряют всё, что было
298
- до. Mnemos даёт им место, где можно это сохранить — структурированно, с поиском, по контракту — чтобы то,
299
- что они узнали, не исчезало с закрытием сессии. Музы, в конце концов, были не для богов. Они были для
300
- песен.
269
+ HTTP-поверхность также открывает **A2A Sessions API**постоянный бэкенд для многошаговых
270
+ разговоров агентов, которые переживают рестарты. См. [a2a-sessions.md](docs/ru/architecture/a2a-sessions.md).
301
271
 
302
272
  ---
303
273
 
@@ -306,73 +276,40 @@ MCP-поверхность также предоставляет **A2A Sessions
306
276
  | Страница | Содержание |
307
277
  |------|----------------|
308
278
  | [docs/README.md](docs/README.md) | Главная страница документации — выбор языка (EN / RU) |
309
- | [getting-started.md](docs/ru/user/getting-started.md) | Первый запуск: установка → первая запись → первый поиск → MCP / HTTP |
310
- | [architecture/overview.md](docs/ru/architecture/overview.md) | Архитектура, модель данных, конечные автоматы, границы безопасности |
279
+ | [getting-started.md](docs/ru/user/getting-started.md) | Первый запуск: установка → первая запись → первый поиск → подключение харнеса |
280
+ | [mcp-presets.md](integrations/mcp-presets.md) | Подключение Mnemos к любому харнесу однострочные MCP-пресеты (VS Code, Claude Code, Cursor, OpenCode, Codex, Windsurf, pi, Hermes) |
281
+ | [integration-guide.md](docs/ru/user/integration-guide.md) | Поведенческий пакет: инструкции, скиллы, режим промпта, таргеты развёртывания, wiring агентов, плагин Hermes |
282
+ | [features.md](docs/ru/features.md) | Что работает из коробки, что частично, что в планах |
283
+ | [architecture/overview.md](docs/ru/architecture/overview.md) | Устройство системы, модель данных, конечные автоматы, границы безопасности |
311
284
  | [cli-reference.md](docs/ru/user/cli-reference.md) | Все подкоманды `mnemos` с флагами, значениями по умолчанию, примерами |
312
- | [mcp-tools.md](docs/ru/user/mcp-tools.md) | Все инструменты `mnemos_*` для VS Code Copilot |
313
- | [http-api.md](docs/ru/user/http-api.md) | Все HTTP endpoints (CRUD памяти + A2A Sessions, M16) |
314
- | [a2a-sessions.md](docs/ru/architecture/a2a-sessions.md) | Контракт agent-to-agent разговоров (M16) |
315
- | [tag-contract.md](docs/ru/user/tag-contract.md) | Схема `project:` / `agent:` / `mnemos:`, обязательная для каждой записи |
316
- | [security.md](docs/ru/admin/security.md) | Модель угроз, SSRF-защита, FTS5 escape, пиннинг HF Hub |
317
- | [runbooks/](docs/ru/admin/runbooks/) | Установка, миграция, резервное копирование, обновление зависимостей |
318
- | [container-deployment.md](docs/ru/admin/runbooks/container-deployment.md) | Сборка, push, compose, podman, Kubernetes, quadlet |
319
- | [adr/](docs/project/adr/) | Архитектурные решения (ADR) — *почему* за каждым дизайном |
320
- | [milestones.md](docs/project/milestones.md) | Журнал milestones со статусами |
321
- | [reports/](docs/project/reports/) | Отчёты о завершённых этапах — итоговый отчёт по каждой фазе дорожной карты |
285
+ | [mcp-tools.md](docs/ru/user/mcp-tools.md) | Все инструменты `mnemos_*`, доступные агентским харнесам |
286
+ | [http-api.md](docs/ru/user/http-api.md) | Все HTTP-эндпоинты (CRUD памяти, workflow, хуки, A2A Sessions) |
287
+ | [tag-contract.md](docs/ru/user/tag-contract.md) | Схема `project:` / `agent:` / `mnemos:`, обязательная для каждой записи памяти |
288
+ | [security.md](docs/ru/admin/security.md) | Модель угроз, SSRF-защита, FTS5 escape, модель аутентификации |
289
+ | [runbooks/](docs/ru/admin/runbooks/) | Установка, миграция, резервное копирование / восстановление, обновление зависимостей, развёртывание в контейнере |
290
+ | [adr/](docs/project/adr/) | Архитектурные решения (ADR) *почему* за каждым решением в дизайне |
322
291
  | [CHANGELOG.md](CHANGELOG.md) | Release notes — формат Keep a Changelog |
292
+ | [CONTRIBUTING.ru.md](CONTRIBUTING.ru.md) | Настройка разработки, git-workflow, quality gate |
323
293
 
324
294
  ---
325
295
 
326
- ## 🤝 Интеграции
296
+ ## 📖 Легенда
327
297
 
328
- Mnemos работает с любым харнессом, говорящим по MCP. Три уровня интеграции
329
- выберите самый сильный из доступных для вашего харнесса:
330
-
331
- | Харнесс | Нативная цель | Однострочный MCP-пресет | Шаблон адаптера |
332
- |---------|---------------|-------------------------|-----------------|
333
- | VS Code Copilot | `copilot` (+ промпты через `generic-copilot`) | [mcp-setup.sh](scripts/mcp-setup.sh) | ✓ |
334
- | Claude Code | через `agents` | [пресет](integrations/mcp-presets.md#claude-code) | ✓ |
335
- | Cursor | `cursor` | [пресет](integrations/mcp-presets.md#cursor) | ✓ |
336
- | Codex | через `agents` | [пресет](integrations/mcp-presets.md#codex) | ✓ |
337
- | Windsurf | — | [пресет](integrations/mcp-presets.md#windsurf) | ✓ |
338
- | ZCode | `zcode` | — | ✓ |
339
- | Любой харнесс стандарта AGENTS.md | `agents` | — | ✓ |
340
- | [Hermes Agent](https://hermes-agent.nousresearch.com/) | `hermes` (нативный `MemoryProvider` плагин) | — | — |
341
-
342
- - **[Hermes Agent](https://hermes-agent.nousresearch.com/)** — нативный `MemoryProvider` плагин
343
- (`integrations/hermes/`): автоматический prefetch, sync-turn, зеркалирование встроенной памяти.
344
- С версии плагина **3.0.0** (ADR-0017 D1) плагин работает **in-process** — требуется `pip install mnemos-memory-server`
345
- в Python-окружении Hermes, а легаси-ключи конфигурации `base_url` / `api_key` / `totp_secret` удалены.
346
- См. [руководство по интеграции](docs/ru/user/integration-guide.md#hermes-agent).
347
- - **Нативные цели** — `mnemos integration setup --target <имя>` развёртывает
348
- поведенческий пакет и регистрирует MCP-сервер за один проход. См.
349
- [руководство по интеграции](docs/ru/user/integration-guide.md).
350
- - **Однострочные MCP-пресеты** — [`integrations/mcp-presets.md`](integrations/mcp-presets.md):
351
- Cursor, Claude Code, Codex и Windsurf подключаются вставкой одной строки.
352
- - **Шаблон адаптера** — [`integrations/adapter-template.md`](integrations/adapter-template.md):
353
- Connect / Expose / Configure + чеклист приёмки для любого харнесса,
354
- говорящего по MCP stdio.
298
+ > В «Теогонии» Гесиода **Мнемосина** (Μνημοσύνη) титанида памяти. Она, от Зевса, родила девять муз и
299
+ > через них сделала возможным воспоминание мира. Её имя — корень слова *мнемонический*, и к ней
300
+ > обращается каждый певец, поэт и философ, прежде чем начать.
355
301
 
356
- Общий контракт [схема тегов](docs/ru/user/tag-contract.md) `project:<slug>`, `agent:<slug>`
357
- и хотя бы один `mnemos:<subtype>` которую должна нести каждая запись.
302
+ Это программное обеспечение носит её имя, потому что создано для той же задачи: **сделать воспоминание
303
+ возможным для тех, кто мыслит.** AI-агенты, не привязанные ни к одному разговору, теряют всё, что было
304
+ до. Mnemos даёт им место, куда это можно положить — структурированно, с поиском, по контракту — чтобы
305
+ то, что они узнали, не исчезало с закрытием сессии. Музы, в конце концов, были не для богов. Они были
306
+ для песен.
358
307
 
359
308
  ---
360
309
 
361
- ## ⚖️ Исходный код и лицензия
362
-
363
- - **Исходник** — этот репозиторий, [github.com/Korrnals/mnemos](https://github.com/Korrnals/mnemos).
364
- - **Лицензия** — Apache-2.0 (см. [LICENSE](LICENSE)).
310
+ ## ⚖️ Лицензия и вклад
365
311
 
366
- ## 🌱 Участие
312
+ Apache-2.0 см. [LICENSE](LICENSE) и [NOTICE](NOTICE). Исходники: [github.com/Korrnals/mnemos](https://github.com/Korrnals/mnemos).
367
313
 
368
- PR приветствуются. Прочитайте [PLAN.md](PLAN.md) для roadmap и следуйте конвенциям в [docs/](docs/).
369
-
370
- Git-workflow: `feat/*` → `dev-<этап>` → `release/X.Y.Z` → `main`; `main` принимает только `release/*` и
371
- `hotfix/*` PR. Обязательны Conventional Commits. Запустите `make verify` перед открытием PR.
372
-
373
- ---
374
-
375
- <p align="center">
376
- <sub><strong>Воспроизведите зелёное состояние:</strong> <code>make verify</code> запускает полный
377
- quality gate — ruff + mypy --strict + bandit + pip-audit + 802 тестов. Если зелёно — готово к публикации.</sub>
378
- </p>
314
+ Вклад приветствуется в [CONTRIBUTING.ru.md](CONTRIBUTING.ru.md): настройка окружения разработки,
315
+ конвенции веток и коммитов и quality gate, который должно пройти каждое изменение.
@@ -5,6 +5,9 @@
5
5
  * has no built-in MCP client by design: tools arrive via TypeScript
6
6
  * extensions. This extension spawns `mnemos mcp-server` over stdio, performs
7
7
  * the MCP handshake and registers every `mnemos_*` tool as a native Pi tool.
8
+ * It also injects the always-on mnemos behavioral pack into Pi's system
9
+ * prompt (before_agent_start hook) — Pi has no AGENTS.md surface, so the
10
+ * extension is the standing-instructions channel.
8
11
  *
9
12
  * Deployed by: mnemos integration setup --target pi
10
13
  * Location: ~/.pi/agent/extensions/mnemos-mcp.ts
@@ -19,6 +22,20 @@ import { Type } from "typebox";
19
22
  const MNEMOS_BIN = process.env.MNEMOS_BIN ?? "mnemos";
20
23
  const REQ_TIMEOUT_MS = 60_000;
21
24
 
25
+ // Standing behavioral pack, injected into the system prompt on every turn
26
+ // (mnemos:integration — kept in sync with integrations/agents_md/). Pi has
27
+ // no AGENTS.md mechanism; for the bridge extension this hint IS the
28
+ // always-on instructions channel.
29
+ const MNEMOS_STANDING_HINT = [
30
+ "# Mnemos memory — always-on rules",
31
+ "",
32
+ "You have persistent shared memory through the `mnemos_*` tools.",
33
+ "- Session start: call mnemos_recall_context(project=<current-project>) BEFORE reading project files; surface a <=4-line memory header. Never block on failure.",
34
+ "- Before context compaction, session end or handoff: mnemos_save_context(project, goals, completed, next_steps) — unsaved context is lost.",
35
+ "- PRIORITY ops: mnemos_search before architectural decisions and before web searches; mnemos_add when you learn something non-obvious or make a decision; mnemos_agent_recall when resuming a named agent role.",
36
+ "- Tag contract on every mnemos_add/mnemos_ingest_url: exactly one project:<slug>, one agent:<slug>, at least one mnemos:<subtype>.",
37
+ ].join("\n");
38
+
22
39
  interface McpTool {
23
40
  name: string;
24
41
  description?: string;
@@ -164,6 +181,14 @@ export default function mnemosMcpBridge(pi: ExtensionAPI) {
164
181
  }
165
182
 
166
183
  // ── Lifecycle ────────────────────────────────────────────────────────────
184
+ // Standing hint: before_agent_start fires once per system-prompt build;
185
+ // returning an object with systemPrompt appends our pack to Pi's prompt
186
+ // (chained across extensions).
187
+ pi.on("before_agent_start", (event: { systemPrompt?: string }) => {
188
+ const base = typeof event.systemPrompt === "string" ? event.systemPrompt : "";
189
+ if (base.includes("mnemos:integration")) return event; // hint already present — never duplicate
190
+ return { systemPrompt: base + (base ? "\n\n" : "") + MNEMOS_STANDING_HINT };
191
+ });
167
192
  pi.on("session_start", (_event: unknown, ctx: Parameters<Parameters<typeof pi.on>[1]>[1]) =>
168
193
  connect(ctx as { ui?: { notify: (m: string, l?: string) => void } }),
169
194
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@korrlabs/mnemospi",
3
- "version": "4.0.0",
3
+ "version": "4.2.0",
4
4
  "description": "Mnemos memory & knowledge server — Pi extension. Spawns `mnemos mcp-server` over stdio and exposes every mnemos_* tool as a native Pi tool, plus the mnemos skill pack.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -55,5 +55,13 @@
55
55
  ],
56
56
  "publishConfig": {
57
57
  "access": "public"
58
+ },
59
+ "pipeline": {
60
+ "npmPublishNames": [
61
+ "pi-mnemos",
62
+ "mnemos-pi",
63
+ "@korrlabs/mnemospi",
64
+ "@korrlabs/mnemos-pi"
65
+ ]
58
66
  }
59
67
  }