{"id":48713337,"url":"https://github.com/joshuaswarren/remnic","last_synced_at":"2026-07-02T02:01:44.776Z","repository":{"id":336745532,"uuid":"1150677698","full_name":"joshuaswarren/remnic","owner":"joshuaswarren","description":"Open-source memory and context for user-aware agents: scoped memory, provenance, retrieval quality, correction, boundaries, evals, and MCP/HTTP access.","archived":false,"fork":false,"pushed_at":"2026-05-31T19:10:57.000Z","size":24904,"stargazers_count":75,"open_issues_count":3,"forks_count":12,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T19:13:01.685Z","etag":null,"topics":["agent-memory","ai-agent","ai-memory","conversational-ai","engram","hermes-plugin","knowledge-graph","llm","local-first","long-term-memory","markdown","memory-plugin","openai","openclaw","semantic-search","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joshuaswarren.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["joshuaswarren"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2026-02-05T15:04:53.000Z","updated_at":"2026-05-31T19:10:29.000Z","dependencies_parsed_at":"2026-02-25T02:03:40.625Z","dependency_job_id":null,"html_url":"https://github.com/joshuaswarren/remnic","commit_stats":null,"previous_names":["joshuaswarren/openclaw-engram","joshuaswarren/remnic"],"tags_count":811,"template":false,"template_full_name":null,"purl":"pkg:github/joshuaswarren/remnic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaswarren%2Fremnic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaswarren%2Fremnic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaswarren%2Fremnic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaswarren%2Fremnic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshuaswarren","download_url":"https://codeload.github.com/joshuaswarren/remnic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaswarren%2Fremnic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33759178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-memory","ai-agent","ai-memory","conversational-ai","engram","hermes-plugin","knowledge-graph","llm","local-first","long-term-memory","markdown","memory-plugin","openai","openclaw","semantic-search","typescript"],"created_at":"2026-04-11T15:14:52.102Z","updated_at":"2026-07-02T02:01:44.767Z","avatar_url":"https://github.com/joshuaswarren.png","language":"TypeScript","funding_links":["https://github.com/sponsors/joshuaswarren"],"categories":["Skills \u0026 Plugins"],"sub_categories":["Notable Skills \u0026 Plugins"],"readme":"# Remnic\n[![npm version](https://img.shields.io/npm/v/@remnic/cli)](https://www.npmjs.com/package/@remnic/cli)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink)](https://github.com/sponsors/joshuaswarren)\n\nOpen-source memory and context for user-aware agents.\n\nRemnic is for agents that need to understand the people they work with over time.\n\nRemnic helps AI agents understand the people they work with: their preferences, projects, constraints, decisions, patterns, and definition of good. The goal is simple: agents that remember responsibly, retrieve the right context, and ask fewer unnecessary questions.\n\nRemnic is not just a memory store. It is an exploration of the systems layer around user-aware agents: scoped memory, provenance, retrieval quality, correction, boundaries, and evals.\n\n## Why this matters\n\nMost agents do not fail because they lack another prompt. They fail because they do not understand the user, the project, the boundaries, or what “good” means in context.\n\nRemnic explores the systems layer needed for user-aware agents:\n\n- what to remember\n- where that memory applies\n- why it was retrieved\n- when it should expire\n- how users correct it\n- when the agent should ask instead of act\n- how to evaluate whether memory improved the outcome\n\n**The trace is noise. The primitive is the product.** Remnic's job is the pipeline that distills hours of agent conversation into compressed, searchable, durable memory primitives. ([How it works →](docs/trace-to-primitive.md))\n\nCreator and maintainer of Remnic: [Joshua Warren](https://github.com/joshuaswarren).\n\n## OpenAI / Codex / MCP\n\nRemnic exposes memory and context through HTTP and MCP surfaces and includes integrations for agentic development workflows such as Codex CLI, Claude Code, Replit, and other MCP clients.\n\nThe long-term goal is to make memory inspectable, scoped, correctable, and measurable across agent workflows.\n\nTry the no-key [Coding Agent Memory Demo](examples/coding-agent-memory-demo/) for a five-minute walkthrough where real Remnic `memoryStore()` and `recallXray()` calls carry a scoped project decision/preference across two coding-agent session identities.\n\n## Engram -\u003e Remnic\n **Engram is now Remnic.** Canonical packages live under the `@remnic/*` scope:\n [`@remnic/core`](https://www.npmjs.com/package/@remnic/core),\n [`@remnic/server`](https://www.npmjs.com/package/@remnic/server),\n [`@remnic/cli`](https://www.npmjs.com/package/@remnic/cli).\n OpenClaw installs should use [`@remnic/plugin-openclaw`](https://www.npmjs.com/package/@remnic/plugin-openclaw).\n The legacy `engram` CLI name remains available as a forwarder during the rename window.\n Hermes users: [`remnic-hermes`](https://pypi.org/project/remnic-hermes/) v1.0.2 on PyPI.\n\n## Support Remnic\n\nEvery bit of support is genuinely appreciated and helps keep this project alive and free for everyone.\n\nIf you're able to, [sponsoring on GitHub](https://github.com/sponsors/joshuaswarren) or sending a Lightning donation to `joshuaswarren@strike.me` directly funds continued development, new integrations, and keeping Remnic open source.\n\n[![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?style=for-the-badge)](https://github.com/sponsors/joshuaswarren)\n\nIf financial support isn't an option, you can still make a big difference — [star the repo on GitHub](https://github.com/joshuaswarren/remnic), share it on social media, or recommend it to a friend or colleague. Word of mouth is how most people find Remnic, and it means the world.\n\n## The Problem\n\nEvery AI agent session starts from zero. Your agent doesn't know your name, your projects, the decisions you've already made, or the bugs you already debugged. Whether it's a personal assistant, a coding agent, a research agent, or a multi-agent team — they all forget everything between conversations. You re-explain the same context over and over, and your agents still make the same mistakes.\n\nOpenClaw's built-in memory works for simple cases, but it doesn't scale. It lacks semantic search, lifecycle management, entity tracking, and governance. Third-party memory services exist, but they cost money and require sending your private data to someone else's servers.\n\n## The Solution\n\nRemnic is an open-source memory and context layer for user-aware agents. It watches agent conversations, extracts durable knowledge, and injects the right context back when it is needed. Route extraction through the OpenClaw gateway model chain, OpenAI, or a **local LLM** (Ollama, LM Studio, etc.) -- your choice.\n\nRemnic helps agents understand the people they work with: preferences, projects, constraints, decisions, patterns, and definitions of good. It works natively with **[OpenClaw](https://github.com/openclaw/openclaw)**, **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)**, **[Codex CLI](https://github.com/openai/codex)**, **[Pi Coding Agent](https://pi.dev)**, **[Hermes Agent](https://github.com/NousResearch/hermes-agent)**, and any **MCP-compatible client** (Replit, Cursor, etc.). When you tell any agent a preference, every agent can use the same governed memory store.\n\nLocal-first storage is a trust feature. All data can stay on your machine as plain markdown files: no cloud dependency, no subscription, and no third-party memory service required.\n\nArchitecture rule: standalone Remnic is first-class. `@remnic/core`, `@remnic/server`, and `@remnic/cli` own the memory engine and must stay host-agnostic. OpenClaw, Hermes, Codex, Claude Code, and future integrations are thin adapters over that shared core, and adapter work should always follow the host's current upstream SDK and documentation instead of recreating host-native behavior inside Remnic.\n\n| Without Remnic | With Remnic |\n|---|---|\n| Re-explain who you are and what you're working on | Agent recalls your identity, projects, and preferences automatically |\n| Repeat context for every task | Entity knowledge surfaces people, projects, tools, and relationships on demand |\n| Lose debugging and research context between sessions | Past root causes, dead ends, and findings are recalled — no repeated work |\n| Manually restate preferences every session | Preferences persist across sessions, agents, and projects |\n| Context-switching tax when resuming work | Session-start recall brings you back to speed instantly |\n| Default OpenClaw memory doesn't scale | Hybrid search, lifecycle management, namespaces, and governance |\n| Third-party memory services cost money and share your data | Everything stays local — your filesystem, your rules |\n\n## Memory or context substrate? Both.\n\nThere's a useful split in the AI-memory space between **memory backends** (extract facts → vector DB → retrieve relevant ones) and **context substrates** (structured human-readable context that accumulates across sessions and compounds over time). Most tools land firmly in one camp. Remnic does both.\n\n**The files are the source of truth.** Every memory is a markdown file with YAML frontmatter on your filesystem. You can `cat`, `grep`, edit, version-control, back up, and reason about your memory with standard tools. The hybrid search index (QMD: BM25 + vector + reranking) is downstream of the files — fully rebuildable from disk, never the source of truth itself.\n\n**The recall stays sharp.** Three retrieval tiers (chunk → section → raw transcript), feature-flagged graph retrieval with Personalized PageRank, memory-worth scoring that filters low-value facts before they reach the LLM, temporal supersession that keeps stale facts out of recall, and Recall X-ray so you can see exactly which tier produced each result and why.\n\n**It compounds.** Background consolidation (the \"dreams\" surface) merges duplicates, promotes recurring themes, and snapshots page versions on every overwrite. Provenance fields (`derived_from`, `derived_via`) track where every consolidated memory came from. Procedural memory (on by default) captures multi-step runbooks. The longer you use it, the better it gets — and you can always read exactly what it knows.\n\n**Camp 1 asks \"what should the AI remember?\" Remnic answers that.** **Camp 2 asks \"what context should the AI work inside?\" Remnic answers that too.**\n\n## Quick install (OpenClaw)\n\nIf you have OpenClaw installed, the fastest path to working Remnic memory is:\n\n```bash\n# 1. Install the plugin package\nopenclaw plugins install clawhub:@remnic/plugin-openclaw\n\n# 2. Wire up the memory slot automatically\nremnic openclaw install\n\n# 3. Restart the gateway\nlaunchctl kickstart -k gui/$(id -u)/ai.openclaw.gateway\n\n# 4. Verify everything is working\nremnic doctor\n```\n\n`remnic openclaw install` writes `plugins.entries[\"openclaw-remnic\"]` and `plugins.slots.memory = \"openclaw-remnic\"` to `~/.openclaw/openclaw.json`. Without the slot, hooks never fire — see [Troubleshooting: hooks aren't firing](#troubleshooting-hooks-arent-firing) for details.\n\nMigrating from the legacy `@joshuaswarren/openclaw-engram` package? Run\n`remnic openclaw migrate-engram --yes`; it backs up the legacy extension,\ninstalls `@remnic/plugin-openclaw`, preserves `memoryDir`, and switches the\nOpenClaw memory slot to `openclaw-remnic`. See the\n[OpenClaw Engram to Remnic migration guide](docs/guides/openclaw-engram-to-remnic.md).\n\n## Installation\n\n### Option 1: Install from the CLI\n\n```bash\nopenclaw plugins install clawhub:@remnic/plugin-openclaw\n```\n\n### Option 2: Ask your OpenClaw agent to install it\n\nTell any OpenClaw agent:\n\n\u003e Install the @remnic/plugin-openclaw plugin and configure it as my memory system.\n\nYour agent will run the install command, update `openclaw.json`, and restart the gateway for you.\n\n### Option 3: Developer install from source\n\n```bash\ngit clone https://github.com/joshuaswarren/remnic.git \\\n  ~/.openclaw/extensions/remnic\ncd ~/.openclaw/extensions/remnic\npnpm install \u0026\u0026 pnpm run build\n```\n\n\u003e **Note:** This repo uses [pnpm](https://pnpm.io/) workspaces. `npm ci` / `npm install` will fail on `workspace:` specifiers. Install pnpm first: `npm install -g pnpm`.\n\n### Option 4: Standalone (no OpenClaw)\n\n**From npm (recommended):**\n\n```bash\nnpm install -g @remnic/cli      # Installs `remnic` plus the legacy `engram` forwarder\nremnic init                     # Create remnic.config.json\nexport OPENAI_API_KEY=sk-...\nexport REMNIC_AUTH_TOKEN=$(openssl rand -hex 32)\nremnic daemon start             # Start background server\nremnic status                   # Verify it's running\nremnic query \"hello\" --explain  # Test query with tier breakdown\n```\n\n**From source** (requires [Node.js](https://nodejs.org/) 22.12+ and [pnpm](https://pnpm.io/)):\n\n```bash\ngit clone https://github.com/joshuaswarren/remnic.git\ncd remnic\npnpm install \u0026\u0026 pnpm run build\ncd packages/remnic-cli \u0026\u0026 pnpm link --global  # Makes `remnic` and `engram` available on PATH\ncd ../..\nremnic init                     # Create remnic.config.json\nexport OPENAI_API_KEY=sk-...\nexport REMNIC_AUTH_TOKEN=$(openssl rand -hex 32)\nremnic daemon start             # Start background server\nremnic status                   # Verify it's running\nremnic query \"hello\" --explain  # Test query with tier breakdown\n```\n\n\u003e **Note:** `remnic` is the canonical CLI. The legacy `engram` binary is a compatibility forwarder to the same implementation. Running `pnpm link --global` from `packages/remnic-cli/` (not the repo root) makes both names available on PATH. Alternatively, invoke directly: `npx tsx packages/remnic-cli/src/index.ts \u003ccommand\u003e`.\n\nThe standalone CLI provides 15+ commands for memory management, project onboarding, curation, diff-aware sync, dedup, connectors, spaces, and benchmarks -- all without requiring OpenClaw. See the [Platform Migration Guide](docs/guides/platform-migration.md) for the full command reference.\n\n### Option 5: Connect Other AI Agents\n\nOnce the Remnic daemon is running, connect any supported agent:\n\n```bash\nremnic connectors install claude-code   # Claude Code (hooks + MCP)\nremnic connectors install codex-cli     # Codex CLI (hooks + MCP + memory extension)\nremnic connectors install pi            # Pi Coding Agent (extension + MCP + compaction)\nremnic connectors install replit        # Replit (MCP only)\npip install --upgrade remnic-hermes     # Hermes Agent (Python MemoryProvider)\nremnic connectors install hermes        # Writes Hermes config + token\n```\n\nFor Codex CLI, installation also drops a phase-2 memory extension at\n`\u003ccodex_home\u003e/memories_extensions/remnic/instructions.md` so Codex's\nconsolidation sub-agent auto-discovers Remnic. Opt out with\n`--config installExtension=false` if you prefer to manage Codex extensions\nyourself.\n\nFor Pi Coding Agent, installation writes an auto-discovered extension under\n`~/.pi/agent/extensions/remnic/`. The extension recalls context before turns,\nobserves Pi messages and tool activity into Remnic/LCM, exposes Remnic MCP\ntools as Pi tools, and coordinates `session_before_compact` with Remnic LCM\nflush/checkpoint recording. See [docs/integration/pi.md](docs/integration/pi.md).\n\nEach connector generates a unique auth token, installs the appropriate plugin/hooks, and verifies the connection. All agents share the same memory store — tell one agent your preference, and every agent remembers it.\n\nHermes uses Remnic as a Hermes **MemoryProvider**, not a `context_engine`. Automatic recall runs in `pre_llm_call`, observations run after each turn, and the provider now registers the full Remnic parity tool surface (`remnic_lcm_search`, recall explain/X-ray, memory CRUD, continuity, identity, governance, work-board, shared-context, compounding, day-summary, briefing, checkpoint, and profiling tools) plus legacy `engram_*` aliases. Lossless Context Management is delivered through the daemon recall envelope when `lcmEnabled` is on; no Hermes `context_engine` registration is required. See [docs/plugins/hermes.md](docs/plugins/hermes.md) for the full reference.\n\n| Platform | Integration | Auto-recall | Auto-observe |\n|----------|------------|-------------|--------------|\n| **OpenClaw** | Memory slot plugin | Every session | Every response |\n| **Claude Code** | Native hooks + MCP | Every prompt | Every tool use |\n| **Codex CLI** | Native hooks + MCP | Every prompt | Every tool use |\n| **Pi Coding Agent** | Native extension + MCP | Every turn | Every turn |\n| **Hermes** | Python MemoryProvider | Every LLM call | Every turn |\n| **Replit** | MCP only | On demand | On demand |\n\n### Configure\n\nAfter installation, add the Remnic bridge plugin to your `openclaw.json`:\n\n```jsonc\n{\n  \"plugins\": {\n    \"allow\": [\"openclaw-remnic\"],\n    \"slots\": { \"memory\": \"openclaw-remnic\" },\n    \"entries\": {\n      \"openclaw-remnic\": {\n        \"enabled\": true,\n        \"hooks\": {\n          \"allowConversationAccess\": true\n        },\n        \"config\": {\n          // Recommended for OpenClaw: use the gateway model chain.\n          \"modelSource\": \"gateway\",\n          \"gatewayAgentId\": \"remnic-llm\",\n          \"fastGatewayAgentId\": \"remnic-llm-fast\",\n\n          // Optional: Use Remnic's local LLM path (plugin mode only; no API key needed):\n          // \"openaiApiKey\": false,\n          // \"localLlmEnabled\": true,\n          // \"localLlmUrl\": \"http://localhost:1234/v1\",\n          // \"localLlmModel\": \"qwen2.5-32b-instruct\"\n\n          // Optional: Use OpenAI directly (plugin mode only):\n          // \"modelSource\": \"plugin\",\n          // \"openaiApiKey\": \"${OPENAI_API_KEY}\"\n        }\n      }\n    }\n  }\n}\n```\n\n\u003e **Gateway model source:** When `modelSource` is `\"gateway\"`, Remnic routes all LLM calls (extraction, consolidation, reranking) through an OpenClaw agent persona's model chain instead of its own config. Extraction starts on the `gatewayAgentId` chain directly in this mode; `localLlm*` settings do not control primary extraction order. Define agent personas in `openclaw.json → agents.list[]` with a `primary` model and `fallbacks[]` array — Remnic tries each in order until one succeeds. This lets you build multi-provider fallback chains like Fireworks → local LLM → cloud OpenAI. See the [Gateway Model Source](docs/config-reference.md#gateway-model-source) guide for full setup.\n\nRestart the gateway:\n\n```bash\nlaunchctl kickstart -k gui/$(id -u)/ai.openclaw.gateway   # macOS\n# or: systemctl restart openclaw-gateway                    # Linux\n```\n\nStart a conversation — Remnic begins learning immediately.\n\n\u003e **Note:** This shows only the minimal config. Remnic has 60+ configuration options for search backends, capture modes, memory OS features, and more. See the [full config reference](docs/config-reference.md) for every setting.\n\n### Extraction importance gate\n\nRemnic scores every extracted fact locally (see `src/importance.ts`) and uses that score as a write gate. Facts whose level falls below `extractionMinImportanceLevel` are dropped before they ever hit disk, so turn-level chatter like `\"hi\"`, `\"k\"`, or heartbeat pings never become fact memories.\n\nDefault: `\"low\"` — only `\"trivial\"` content is dropped. Raise to `\"normal\"` or higher for a stricter gate.\n\n```jsonc\n{\n  \"plugins\": {\n    \"entries\": {\n      \"openclaw-remnic\": {\n        \"config\": {\n          // Allowed values: \"trivial\" | \"low\" | \"normal\" | \"high\" | \"critical\"\n          \"extractionMinImportanceLevel\": \"normal\"\n        }\n      }\n    }\n  }\n}\n```\n\nCategory boosts still apply before the gate, so corrections, principles, preferences, and commitments stay above `\"normal\"` even when their raw text would otherwise score low. Every gated fact increments the `importance_gated` counter (grep `metric:importance_gated` in `~/.openclaw/logs/gateway.log`) and the final extraction log line reports the gated count.\n\n### Inline source attribution (opt-in, issue #369)\n\nExtracted facts can optionally carry a compact provenance tag inline in the fact body — not just in YAML frontmatter — so the citation survives prompt injection, copy/paste, and LLM quoting. When an agent later quotes a memory back or a user asks \"where did you learn that?\", the source travels with the claim.\n\nDefault format:\n\n```\nThe foo service uses Redis for rate limiting. [Source: agent=planner, session=main, ts=2026-04-10T14:25:07Z]\n```\n\nEnable it per plugin:\n\n```jsonc\n{\n  \"plugins\": {\n    \"entries\": {\n      \"openclaw-remnic\": {\n        \"config\": {\n          \"inlineSourceAttributionEnabled\": true,\n          // Optional: customize the tag format.\n          // Placeholders: {agent}, {session}, {sessionId}, {ts}, {date}\n          \"inlineSourceAttributionFormat\": \"[Source: agent={agent}, session={sessionId}, ts={ts}]\"\n        }\n      }\n    }\n  }\n}\n```\n\nProperties:\n\n- **Off by default** to preserve backwards compatibility with downstream consumers that expect raw fact text.\n- **Inline** — the tag is part of the stored fact body, so it flows through every write site (direct writes, chunked writes, shared-namespace promotion, verbatim artifacts) and recall injection without special handling.\n- **Legacy-safe** — facts written before the flag was enabled still read and recall normally; nothing is retroactively rewritten.\n- **Non-destructive** — facts that already carry a citation (e.g. relayed from an upstream system) are left untouched.\n- **Machine-parseable** — `parseCitation(text)` and `stripCitation(text)` are exported from `@remnic/core` for callers that want the raw body (e.g. for dedup hashing, display, or verification tooling). Malformed citations never throw.\n\nSee `packages/remnic-core/src/source-attribution.ts` for the helpers and `packages/remnic-core/src/source-attribution.test.ts` for the round-trip contract.\n\n### Verify installation\n\n```bash\nremnic doctor              # Health diagnostics with remediation hints\nremnic connectors doctor   # Connector-specific health checks\nremnic status              # Daemon status and local endpoint summary\n```\n\n## Bring your memory\n\nRemnic can import existing memory from the platforms you already use.\nFive optional importer packages ship alongside the CLI — install only the\nones you need:\n\n```bash\n# ChatGPT (OpenAI data export: saved memories + optional conversation summaries)\nnpm install -g @remnic/import-chatgpt\nremnic import --adapter chatgpt --file ~/chatgpt-export/memory.json --dry-run\n\n# Claude (Anthropic data export: project docs + prompt templates)\nnpm install -g @remnic/import-claude\nremnic import --adapter claude --file ~/claude-export/projects.json\n\n# Gemini (Google Takeout \"Gemini Apps Activity\")\nnpm install -g @remnic/import-gemini\nremnic import --adapter gemini --file \"~/Takeout/Gemini/My Activity.json\"\n\n# mem0 (REST API — paginated; honors --rate-limit)\nnpm install -g @remnic/import-mem0\nexport MEM0_API_KEY=...\nremnic import --adapter mem0 --rate-limit 2\n\n# Supermemory (JSON export)\nnpm install -g @remnic/import-supermemory\nremnic import --adapter supermemory --file ./supermemory-memories.json --dry-run\nremnic import --adapter supermemory --file ./supermemory-memories.json\n```\n\nEach importer is an **optional runtime companion** — the base CLI\ninstall never pulls them in. If you run `remnic import --adapter \u003cname\u003e`\nwithout the matching package installed, the CLI prints a clean install\nhint. Every run supports `--dry-run` for a zero-write preview.\n\n\u003e **Privacy note:** import parsing and storage run locally, but after\n\u003e the orchestrator accepts a record it enters the normal extraction\n\u003e pipeline — which calls whatever model provider you have configured.\n\u003e If extraction is routed to a remote provider, imported content is\n\u003e transmitted to that provider during extraction. To keep imports fully\n\u003e local, configure a local extraction model or use `--dry-run` to\n\u003e preview without writing.\n\nSee [docs/importers.md](docs/importers.md) for per-source details, input\nformats, provenance metadata, and the full privacy breakdown.\n\n## Wear your memory\n\nRemnic also ingests AI-wearable recordings. Three optional connector\npackages pull your conversations, clean and speaker-label the\ntranscripts, apply your personal corrections, store searchable\nper-day transcript files, and — under strict per-source trust gates —\ncreate memories:\n\n```bash\n# Limitless Pendant\nnpm install -g @remnic/connector-limitless\nexport LIMITLESS_API_KEY=...\n\n# Bee bracelet (via the local `bee proxy`, or direct with a token)\nnpm install -g @remnic/connector-bee\n\n# Omi necklace (integration app: appId + uid + sk_ key)\nnpm install -g @remnic/connector-omi\nexport OMI_API_KEY=...\n\n# Then (after enabling sources in config):\nremnic wearables sync --days 7\nremnic wearables transcript --date 2026-06-10\nremnic wearables search \"that solar quote\"\nremnic wearables memories --source limitless --date 2026-06-10\n```\n\nMemory creation defaults to **smart mode** — a fully automated trust\npipeline: every candidate runs through Remnic's LLM extraction judge,\ngets a per-source transcription-quality prior, and earns corroboration\nboosts when a second wearable recorded the same content or an existing\nmemory supports it. High-trust facts are written active, borderline\nfacts go to the review queue, ASR garbage is dropped — and the trust\nevidence (score, judge verdict, corroborating sources) persists on\nevery memory. Tune per source with `sourceTrust`, `autoApproveTrust`,\n`reviewTrust`, and `maxMemoriesPerDay`, or pick `review`/`auto`/`off`.\nMCP tools (`remnic.transcript_day`, `remnic.transcript_search`,\n`remnic.transcript_memories`, `remnic.wearables_sync`,\n`remnic.wearables_status` — `engram.*` aliases included) and HTTP\nroutes expose the same surface to agents.\n\nSee [docs/wearables.md](docs/wearables.md) for the full pipeline,\nconfiguration reference, speaker labeling, corrections, redaction, and\nper-provider setup.\n\n## Troubleshooting: hooks aren't firing\n\n**Symptom:** Remnic appears installed but no memories are created. The gateway log shows no `[remnic]` lines after conversations.\n\n**Root cause:** OpenClaw gates memory plugins on `plugins.slots.memory`. If this slot is not set to the plugin's id, OpenClaw skips `register(api)` entirely — no hooks fire, no memory is stored or recalled.\n\n### Quick fix\n\n```bash\nremnic openclaw install   # Sets plugins.slots.memory = \"openclaw-remnic\"\n```\n\nRestart the gateway after running this command.\n\n### How to verify hooks are firing\n\nAfter restarting, check the gateway log for this line:\n\n```\n[remnic] gateway_start fired — Remnic memory plugin is active (id=openclaw-remnic, memoryDir=~/.openclaw/workspace/memory/local)\n```\n\nOn macOS:\n```bash\ngrep \"gateway_start fired\" ~/.openclaw/logs/gateway.log\n```\n\nIf the line is absent, run `remnic doctor` to see which check is failing:\n\n```\nremnic doctor\n```\n\nThe doctor output will show:\n- `OpenClaw config file` — whether `openclaw.json` exists and is valid JSON\n- `OpenClaw plugins.entries` — whether the entries object is present\n- `OpenClaw plugin entry` — whether `openclaw-remnic` (or legacy `openclaw-engram`) entry exists\n- `OpenClaw plugins.slots.memory` — whether the slot is set and points to an entry\n- `OpenClaw memoryDir` — whether the configured memory directory exists on disk\n\nEach failing check includes a remediation hint pointing to `remnic openclaw install`.\n\n### Manual fix\n\nIf you prefer to edit `~/.openclaw/openclaw.json` directly:\n\n```json\n{\n  \"plugins\": {\n    \"entries\": {\n      \"openclaw-remnic\": {\n        \"config\": {\n          \"memoryDir\": \"~/.openclaw/workspace/memory/local\"\n        }\n      }\n    },\n    \"slots\": {\n      \"memory\": \"openclaw-remnic\"\n    }\n  }\n}\n```\n\nBoth `entries[\"openclaw-remnic\"]` and `slots.memory = \"openclaw-remnic\"` are required. See [docs/integration/plugin-id-and-memory-namespaces.md](docs/integration/plugin-id-and-memory-namespaces.md) for the full design note.\n\n## Using Remnic with Codex CLI\n\nStart the Remnic server directly for the current shell session:\n\n```bash\n# Generate a token\nexport REMNIC_AUTH_TOKEN=\"$(openssl rand -base64 32)\"\n\nnpx remnic-server --host 127.0.0.1 --port 4318 --auth-token \"$REMNIC_AUTH_TOKEN\"\n```\n\nIf you want to use `remnic daemon start`, persist the token in\n`remnic.config.json` first. `daemon start` will hand off to launchd/systemd\nwhen a service is installed, and those service templates read `server.authToken`\nfrom config rather than inheriting your shell's exported token.\n\nThe HTTP API path remains `/engram/v1/...` during the v1.x compatibility window.\n\nAdd to `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.remnic]\nurl = \"http://127.0.0.1:4318/mcp\"\nbearer_token_env_var = \"REMNIC_AUTH_TOKEN\"\n```\n\nThat's it. Codex now has access to Remnic's recall, store, and entity tools. See the [full Codex integration guide](docs/guides/codex-cli.md) for session-start hooks, cross-machine setup, and automatic recall at session start.\n\n## Using Remnic with Any MCP Client\n\nRun the stdio MCP server:\n\n```bash\nopenclaw engram access mcp-serve\n```\n\nPoint your MCP client's command at `openclaw engram access mcp-serve`. This\nis the OpenClaw-hosted stdio compatibility path. For standalone Remnic installs,\nprefer the HTTP MCP endpoint exposed by `remnic daemon start` or `remnic-server`.\n\n**Claude Code (MCP over HTTP):** Start the Remnic server, then add to `~/.claude.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"remnic\": {\n      \"url\": \"http://localhost:4318/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${REMNIC_AUTH_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\nSee the [Standalone Server Guide](docs/guides/standalone-server.md) for multi-tenant setups and connecting multiple agent harnesses.\n\n## Standalone Usage\n\nRemnic also works as a standalone tool without OpenClaw. Install and run the CLI directly:\n\n```bash\nnpm install -g @remnic/cli\nremnic init                     # create remnic.config.json\nexport OPENAI_API_KEY=sk-...\nexport REMNIC_AUTH_TOKEN=$(openssl rand -hex 32)\nremnic daemon start             # start background server\nremnic query \"hello\"            # verify\n```\n\nThe CLI provides 15+ commands for querying, onboarding projects, curating files, managing spaces, running benchmarks, and more. See the [full CLI reference](docs/api.md#standalone-cli-commands) for all commands.\n\n### Connect to any coding tool\n\nRemnic works with 10+ coding tools via MCP or HTTP. See the [Connector Setup Guide](docs/integration/connector-setup.md) for config snippets for Claude Code, Codex CLI, Cursor, GitHub Copilot, Cline, Roo Code, Windsurf, Amp, Replit, and any generic MCP client.\n\nOpenClaw remains the recommended path for most users. The standalone CLI is useful for CI/CD pipelines, scripted memory operations, and environments without OpenClaw.\n\n### Package Architecture\n\n```\n@remnic/core            — Framework-agnostic engine (re-exports orchestrator, config, storage, search, extraction, graph, trust zones)\n@remnic/cli             — Standalone CLI binary (15+ commands)\n@remnic/server          — Standalone HTTP/MCP server\n@remnic/bench           — Benchmarks + CI regression gates\n@remnic/hermes-provider — HTTP client for remote Remnic instances\n```\n\n## How It Works\n\nRemnic operates in three phases:\n\n```\n Recall    → Before each conversation, inject relevant memories into context\n Buffer    → After each turn, accumulate content until a trigger fires\n Extract   → Periodically, extract structured memories using an LLM\n```\n\nMemories are stored as plain markdown files with YAML frontmatter — fully portable, git-friendly, no database required:\n\n```yaml\n---\nid: decision-1738789200000-a1b2\ncategory: decision\nconfidence: 0.92\ntags: [\"architecture\", \"search\"]\n---\nDecided to use the port/adapter pattern for search backends\nso alternative engines can replace QMD without changing core logic.\n```\n\nMemory categories include: `fact`, `decision`, `preference`, `correction`, `relationship`, `principle`, `commitment`, `moment`, `skill`, `rule`, and more.\n\n## Architecture\n\nRemnic is organized as a monorepo with a core engine, standalone server/CLI, and native plugins for multiple AI platforms:\n\n```\n                         ┌─────────────────┐\n                         │  @remnic/core   │\n                         │  (engine)       │\n                         └────────┬────────┘\n                                  │\n        ┌──────────┬──────────┬───┴────┬──────────┬──────────┐\n        │          │          │        │          │          │\n  ┌─────┴─────┐ ┌─┴──────┐ ┌┴─────┐ ┌┴────────┐ │  Native  │\n  │ @remnic/  │ │@remnic/│ │remnic│ │@remnic/  │ │ Plugins  │\n  │ cli       │ │server  │ │-hermes│ │plugin-   │ │          │\n  │           │ │        │ │       │ │openclaw  │ │          │\n  └───────────┘ └────────┘ └──────┘ └─────────┘ └──────────┘\n                    │                             │\n              ┌─────┴─────┐        ┌──────────────┼──────────┐\n              │ @remnic/  │        │              │          │\n              │ bench     │   claude-code     codex     replit\n              └───────────┘\n```\n\n| Package | npm/PyPI | Description |\n|---------|----------|-------------|\n| `@remnic/core` | [![npm](https://img.shields.io/npm/v/@remnic/core)](https://www.npmjs.com/package/@remnic/core) | Framework-agnostic engine — orchestrator, storage, search, extraction, graph, trust zones |\n| `@remnic/server` | [![npm](https://img.shields.io/npm/v/@remnic/server)](https://www.npmjs.com/package/@remnic/server) | Standalone HTTP/MCP server with multi-token auth. Run as daemon via launchd/systemd |\n| `@remnic/cli` | [![npm](https://img.shields.io/npm/v/@remnic/cli)](https://www.npmjs.com/package/@remnic/cli) | CLI binary — memory management, daemon lifecycle, connectors, tokens, spaces, benchmarks |\n| `@remnic/hermes-provider` | [![npm](https://img.shields.io/npm/v/@remnic/hermes-provider)](https://www.npmjs.com/package/@remnic/hermes-provider) | TypeScript HTTP client for remote Remnic instances |\n| `@remnic/bench` | [![npm](https://img.shields.io/npm/v/@remnic/bench)](https://www.npmjs.com/package/@remnic/bench) | Published memory benchmarks, Remnic-specific regression packs, artifact publishing, and the optional `remnic bench *` surface |\n| `@remnic/export-weclone` | [![npm](https://img.shields.io/npm/v/@remnic/export-weclone)](https://www.npmjs.com/package/@remnic/export-weclone) | WeClone fine-tuning dataset exporter — optional `remnic training:export` surface |\n| `@remnic/import-weclone` | [![npm](https://img.shields.io/npm/v/@remnic/import-weclone)](https://www.npmjs.com/package/@remnic/import-weclone) | WeClone chat-history importer — optional `remnic bulk-import` source |\n| `@remnic/connector-weclone` | [![npm](https://img.shields.io/npm/v/@remnic/connector-weclone)](https://www.npmjs.com/package/@remnic/connector-weclone) | OpenAI-compatible proxy layering Remnic memory onto WeClone avatars |\n| `@remnic/import-chatgpt` | [![npm](https://img.shields.io/npm/v/@remnic/import-chatgpt)](https://www.npmjs.com/package/@remnic/import-chatgpt) | ChatGPT saved-memory and conversation-summary importer — optional `remnic import --adapter chatgpt` surface |\n| `@remnic/import-claude` | [![npm](https://img.shields.io/npm/v/@remnic/import-claude)](https://www.npmjs.com/package/@remnic/import-claude) | Claude project docs and prompt-template importer — optional `remnic import --adapter claude` surface |\n| `@remnic/import-gemini` | [![npm](https://img.shields.io/npm/v/@remnic/import-gemini)](https://www.npmjs.com/package/@remnic/import-gemini) | Google Takeout Gemini Apps Activity importer — optional `remnic import --adapter gemini` surface |\n| `@remnic/import-mem0` | [![npm](https://img.shields.io/npm/v/@remnic/import-mem0)](https://www.npmjs.com/package/@remnic/import-mem0) | mem0 REST and JSON importer — optional `remnic import --adapter mem0` surface |\n| `@remnic/import-supermemory` | [![npm](https://img.shields.io/npm/v/@remnic/import-supermemory)](https://www.npmjs.com/package/@remnic/import-supermemory) | Supermemory JSON importer — optional `remnic import --adapter supermemory` surface |\n| `@remnic/plugin-openclaw` | [![npm](https://img.shields.io/npm/v/@remnic/plugin-openclaw)](https://www.npmjs.com/package/@remnic/plugin-openclaw) | OpenClaw adapter — thin bridge (embedded or delegate mode) |\n| `@remnic/plugin-claude-code` | [![npm](https://img.shields.io/npm/v/@remnic/plugin-claude-code)](https://www.npmjs.com/package/@remnic/plugin-claude-code) | Native Claude Code plugin — hooks, skills, MCP |\n| `@remnic/plugin-codex` | [![npm](https://img.shields.io/npm/v/@remnic/plugin-codex)](https://www.npmjs.com/package/@remnic/plugin-codex) | Native Codex CLI plugin — hooks, skills, MCP |\n| `@remnic/plugin-pi` | [![npm](https://img.shields.io/npm/v/@remnic/plugin-pi)](https://www.npmjs.com/package/@remnic/plugin-pi) | Native Pi Coding Agent extension — recall, observe, MCP tools, and compaction coordination |\n| `@remnic/replit` | [![npm](https://img.shields.io/npm/v/@remnic/replit)](https://www.npmjs.com/package/@remnic/replit) | Replit Agent MCP connector — setup snippet + token helper |\n| `remnic-hermes` | [![PyPI](https://img.shields.io/pypi/v/remnic-hermes)](https://pypi.org/project/remnic-hermes/) | Python MemoryProvider for Hermes Agent |\n\nRemnic is installed à la carte: most users start with `@remnic/cli`, while `@remnic/core` stays available for framework-agnostic embedding. Optional surfaces (bench, WeClone, plugins, and importers) are installed separately when you need them. Commands like `remnic bench *`, `remnic training:export`, and `remnic import --adapter \u003csource\u003e` lazy-load their companion package and print an install hint if it's missing.\n\nThe old `@joshuaswarren/openclaw-engram` package is **deprecated**. Use `@remnic/plugin-openclaw` for OpenClaw installs and `@remnic/*` for standalone or multi-platform use.\n\n## Why Remnic?\n\n### Your data stays yours\n\nAll memory lives on your filesystem as plain markdown files. No cloud dependency, no subscriptions, no proprietary formats, no sending your private conversations to third-party servers. Back it up with git, rsync, or Time Machine. Move it between machines with a folder copy. You own your data completely.\n\n### A real upgrade from default OpenClaw memory\n\nOpenClaw's built-in memory is basic — it works for getting started, but lacks semantic search, entity tracking, lifecycle management, governance, and multi-agent isolation. Remnic is a drop-in replacement that brings all of those capabilities while keeping the same inspectable local trust model.\n\n### Smart recall, not keyword search\n\nRemnic uses hybrid search (BM25 + vector + reranking via [QMD](https://github.com/tobilu/qmd)) to find semantically relevant memories. It doesn't just match keywords — it understands what you're working on and surfaces the right context.\n\n### Flexible LLM routing — OpenAI, local, or gateway model chain\n\nUse OpenAI for extraction and reranking, run entirely offline with a local LLM (Ollama, LM Studio), or route through the **gateway model chain** to use any provider with automatic fallback. The `local-llm-heavy` preset is optimized for fully local operation. See the [Local LLM Guide](docs/guides/local-llm.md) and the [Gateway Model Source](docs/config-reference.md#gateway-model-source) section for multi-provider setups.\n\n### Progressive complexity\n\nStart with zero config. Enable features as your needs grow:\n\n| Level | What You Get |\n|-------|-------------|\n| **Defaults** | Automatic extraction, recall injection, entity tracking, lifecycle management |\n| **+ Search tuning** | Choose from 6 search backends (QMD, Orama, LanceDB, Meilisearch, remote, noop) |\n| **+ Capture control** | `implicit`, `explicit`, or `hybrid` capture modes for memory write policy |\n| **+ Memory OS** | Memory boxes, graph reasoning, compounding, shared context, identity continuity |\n| **+ LCM** | Lossless Context Management — never lose conversation context to compaction |\n| **+ Parallel retrieval** | Three specialized agents (DirectFact, Contextual, Temporal) run in parallel — same latency, broader coverage |\n| **+ Quality gates** | Extraction judge, semantic chunking, MECE taxonomy, page versioning |\n| **+ Advanced** | Trust zones, causal trajectories, harmonic retrieval, evaluation harness, poisoning defense |\n\nUse a preset to jump to a recommended level: `conservative`, `balanced`, `research-max`, or `local-llm-heavy`.\n\n### Works with your tools\n\n- **[OpenClaw](https://github.com/openclaw/openclaw)** — Native plugin with automatic extraction and recall injection\n- **[Codex CLI](https://github.com/openai/codex)** — MCP-over-HTTP with session-start hooks for automatic recall\n- **[Pi Coding Agent](https://pi.dev)** — Native extension with turn recall, observation, MCP tools, and LCM-aware compaction\n- **Any MCP client** — stdio or HTTP transport, 8 tools available\n- **Scripts \u0026 automation** — Authenticated REST API for custom integrations\n- **Local LLMs** — Run extraction and reranking with local models (Ollama, LM Studio, etc.)\n\n### Standalone Multi-Tenant Server\n\nRun Remnic as a standalone HTTP server that multiple agent harnesses share. Isolate tenants with namespace policies, feed conversations from any client via the observe endpoint, and search archived history with LCM full-text search. Works with OpenClaw, Codex CLI, Claude Code, and custom HTTP agents. See the [Standalone Server Guide](docs/guides/standalone-server.md).\n\n### Built for production\n\n- **672 tests** with CI enforcement\n- **Evaluation harness** with benchmark packs, shadow recall recording, and CI delta gates\n- **Governance system** with review queues, shadow/apply modes, and reversible transitions\n- **Namespace isolation** for multi-agent deployments\n- **Rate limiting** on write paths with idempotency support\n\n## Features\n\n### Core\n\n- **Automatic memory extraction** — Facts, decisions, preferences, corrections extracted from conversations\n- **Observe endpoint** — Feed conversation messages from any agent into the extraction pipeline via HTTP or MCP\n- **Recall injection** — Relevant memories injected before each agent turn\n- **Entity tracking** — People, projects, tools, companies tracked as structured entities\n- **Lifecycle management** — Memories age through active, validated, stale, archived states\n- **Episode/Note model** — Memories classified as time-specific events or stable beliefs\n\n### Extraction \u0026 Processing (opt-in)\n\n- **Extraction Judge** — LLM-as-judge post-extraction filter that evaluates fact durability before write. Has shadow mode for calibration. Opt-in via `extractionJudgeEnabled`. (issue #376)\n- **Semantic Chunking** — Smoothing-based topic boundary detection using sentence embeddings and cosine similarity, as an alternative to recursive chunking. Opt-in via `semanticChunkingEnabled`. (issue #368)\n- **OAI-mem-citation Blocks** — Recall responses emit `\u003coai-mem-citation\u003e` blocks matching the Codex citation format for memory attribution and usage tracking. Opt-in via `citationsEnabled`. (issue #379)\n- **Procedural memory** — Stores repeatable **how-to** memories as `category: procedure` markdown under `procedures/`, mines candidates from causal trajectories, and can inject a **Relevant procedures** section on task-initiation prompts. **On by default** since issue #567 PR 4/5 (previously off); set `procedural.enabled` to `false` in plugin config to opt out. See [Procedural memory](docs/procedural-memory.md). (issue #519)\n- **Peer registry** — Multi-peer identity schema that generalizes the singular identity-anchor into a versioned registry. Supports `self`, `human`, `agent`, and `integration` peer kinds. Each peer has an identity kernel (`peers/{id}/identity.md`), an async profile reasoner that derives structured fields from interaction signals, and recall injection that injects a brief profile excerpt into recall context. `remnic peer migrate` seeds `peers/self/identity.md` from existing legacy identity-anchor data. `remnic peer list/show/set/delete/profile` manage the registry. HTTP endpoints and MCP tools under `peer_*`. See [Peer Registry](docs/peers.md). (issue #679)\n- **Coding agent mode** — Auto-scopes memory to the current git project (origin-URL hash) and optionally to the current branch, so memories from project A never surface in project B and feature-branch experiments don't leak into `main`. Claude Code and Codex CLI session-start hooks detect git context automatically; the `recall` and `observe` endpoints also accept `cwd` for server-side auto-resolution. Non-git sessions (OpenClaw, task agents) can pass `projectTag` to scope by name instead. Cross-project knowledge (framework bugs, user preferences) is classified as `\"global\"` during extraction and promoted to the shared namespace; recall global fallback ensures it surfaces across all projects (`codingMode.globalFallback`, default `true`). Diff-aware review-context recall tier boosts memories touching the files in a reviewed diff. `remnic doctor` prints detected `projectId`, branch, and effective namespace. Opt out with `codingMode.projectScope: false`. See [Coding agent mode](docs/coding-agent.md). (issues #569, #702, #703, #704)\n- **Recall X-ray** — `remnic xray \"\u003cquery\u003e\"` prints a per-result breakdown showing which retrieval tier served each memory, the score decomposition, the graph path (when graph retrieval fired), the filter ladder that admitted it, and the audit entry ID. Same snapshot via HTTP `GET /engram/v1/recall/xray` and MCP tool `remnic.recall_xray`. Legacy `/recall/explain` gains a markdown mode that delegates to the same renderer (backwards-compatible). See [Recall X-ray](docs/xray.md). (issue #570)\n- **Disclosure depth on recall** — `remnic recall \"\u003cq\u003e\" --disclosure chunk|section|raw` controls payload depth: cheap semantic chunks first, escalate to full sections or raw transcripts only when needed. Same field exposed via HTTP `?disclosure=` and MCP `disclosure`. Default `chunk` preserves prior behavior; token-cost telemetry surfaces in Recall X-ray. (issue #677)\n- **Temporal recall (`validAt` / `invalidAt`)** — Optional `validAt` and `invalidAt` YAML frontmatter fields scope a fact to a validity window; `remnic recall \"\u003cq\u003e\" --as-of \u003ctimestamp\u003e` returns the fact valid at that time, ignoring later supersessions. Supersession writes flip `invalidAt` automatically. Backfill defaults `validAt` to the file's `created` timestamp when missing. See [Temporal Recall](docs/temporal-recall.md). (issue #680)\n- **Free-form tag filter on recall** — `remnic recall \"\u003cq\u003e\" --tag q2-planning [--tag \u003ct\u003e ...] [--tag-match all|any]`. Tags are flat strings additive to the MECE taxonomy, persisted on memory frontmatter via the store API. Tags surface in Recall X-ray output. See [Tags](docs/tags.md). (issue #689)\n\n### Organization \u0026 Taxonomy (opt-in)\n\n- **MECE Taxonomy** — Mutually Exclusive, Collectively Exhaustive knowledge directory with resolver decision tree for deterministic memory categorization. Opt-in via `taxonomyEnabled`. (issue #366)\n- **Enrichment Pipeline** — Importance-tiered API spend for entity enrichment from external sources with a provider registry. Opt-in via `enrichmentEnabled`. (issue #365)\n\n### Storage \u0026 Lifecycle (opt-in)\n\n- **Page Versioning** — Snapshot-based history for memory files. Every overwrite saves a numbered snapshot in a sidecar directory. List, inspect, diff, and revert. Opt-in via `versioningEnabled`. (issue #371)\n- **Binary Lifecycle Management** — Three-stage pipeline (mirror, redirect, clean) for binary files in the memory directory with configurable storage backends. Opt-in via `binaryLifecycleEnabled`. (issue #367)\n\n### Integrations \u0026 Extensions\n\n- **Codex Marketplace** — Install Remnic via `codex marketplace add joshuaswarren/remnic`. Marketplace manifest at repo root. (issue #418)\n- **Memory Extension Publisher Contract** — Pluggable contract for installing host-specific instruction files into any AI agent host's extension directory. Generalizes the pattern previously hard-coded for Codex. (issue #381)\n- **Memory Extension Discovery** — Third-party memory extensions provide structured instructions that influence consolidation, auto-discovered from extension directories. (issue #382)\n\n### Search Backends\n\n| Backend | Type | Best For |\n|---------|------|----------|\n| **QMD** (default) | Hybrid BM25+vector+reranking | Best recall quality |\n| **Orama** | Embedded, pure JS | Zero native deps |\n| **LanceDB** | Embedded, native Arrow | Large collections |\n| **Meilisearch** | Server-based | Shared search |\n| **Remote** | HTTP REST | Custom services |\n| **Noop** | No-op | Extraction only |\n\nSee the [Search Backends Guide](docs/search-backends.md) or [write your own](docs/writing-a-search-backend.md).\n\n### Memory OS (opt-in)\n\nThese capabilities can be enabled progressively:\n\n- **Memory Boxes** — Groups related memories into topic-windowed episodes\n- **Graph Recall** — Entity-relationship graph for causal and timeline queries\n- **Compounding** — Weekly synthesis surfaces patterns and recurring mistakes\n- **Shared Context** — Cross-agent memory sharing for multi-agent setups\n- **Identity Continuity** — Consistent agent personality across sessions\n- **Hot/Cold Tiering** — Automatic migration of aging memories to cold storage\n- **Memory Cache** — Process-level singleton cache for `readAllMemories()` — turns 15s disk scans into \u003c100ms cache hits, shared across all sessions\n- **Semantic Consolidation** — Finds clusters of semantically similar memories, synthesizes canonical versions via LLM, archives originals to reduce bloat\n- **Native Knowledge** — Search curated markdown (workspace docs, Obsidian vaults) without extracting into memory\n- **Behavior Loop Tuning** — Runtime self-tuning of extraction and recall parameters\n\n### Lossless Context Management (LCM)\n\nWhen your AI agent hits its context window limit, the runtime silently compresses old messages — and that context is gone forever. LCM fixes this by proactively archiving every message into a local SQLite database and building a hierarchical summary DAG (directed acyclic graph) alongside it. When context gets compacted, LCM injects compressed session history back into recall, so your agent never loses track of what happened earlier in the conversation.\n\n- **Proactive archiving** — Every message is indexed with full-text search before compaction can discard it\n- **Hierarchical summaries** — Leaf summaries cover ~8 turns, depth-1 covers ~32, depth-2 ~128, etc.\n- **Fresh tail protection** — Recent turns always use the most detailed (leaf-level) summaries\n- **Three-level summarization** — Normal LLM summary, aggressive bullet compression, and deterministic truncation (guaranteed convergence, no LLM needed)\n- **MCP expansion tools** — Agents can search, describe, or expand any part of conversation history on demand\n- **Zero data loss** — Raw messages are retained for the configured retention period (default 90 days)\n\nEnable it in your `openclaw.json`:\n\n```jsonc\n{\n  \"plugins\": {\n    \"entries\": {\n      \"openclaw-remnic\": {\n        \"config\": {\n          \"lcmEnabled\": true\n          // All other LCM settings have sensible defaults\n        }\n      }\n    }\n  }\n}\n```\n\nSee the [LCM Guide](docs/guides/lossless-context-management.md) for architecture details, configuration options, and how it complements native compaction.\n\n### Parallel Specialized Retrieval (opt-in)\n\nRemnic's default retrieval runs a single hybrid search pass. Parallel Specialized Retrieval (inspired by [Supermemory's ASMR technique](https://blog.supermemory.ai/we-broke-the-frontier-in-agent-memory-introducing-99-sota-memory-system/)) runs three specialized agents in parallel so total latency equals `max(agents)` not `sum(agents)`.\n\n| Agent | What It Does | Cost |\n|-------|-------------|------|\n| **DirectFact** | Scans entity filenames for keyword overlap with the query | File I/O only, \u003c5ms |\n| **Contextual** | Existing hybrid BM25+vector search (unchanged) | Same as current |\n| **Temporal** | Reads the temporal date index, returns recent memories with recency decay scoring | File I/O + math, \u003c10ms |\n\n**Zero additional LLM cost.** The DirectFact and Temporal agents reuse existing indexes with no new embeddings or inference. The Contextual agent is the same hybrid search already running.\n\nResults from all three agents are merged by path, deduplicated, and weighted (`direct=1.0×, temporal=0.85×, contextual=0.7×`) before returning the top N results. Any agent error degrades gracefully without blocking the others.\n\nEnable it in your `openclaw.json`:\n\n```jsonc\n{\n  \"plugins\": {\n    \"entries\": {\n      \"openclaw-remnic\": {\n        \"config\": {\n          \"parallelRetrievalEnabled\": true\n          // Optional tuning:\n          // \"parallelMaxResultsPerAgent\": 20,\n          // \"parallelAgentWeights\": { \"direct\": 1.0, \"contextual\": 0.7, \"temporal\": 0.85 }\n        }\n      }\n    }\n  }\n}\n```\n\nSet `parallelMaxResultsPerAgent: 0` to disable an individual agent's results without disabling the feature entirely.\n\n### Semantic Consolidation (opt-in)\n\nOver time, memory stores accumulate redundant facts — the same information extracted multiple times across sessions, expressed slightly differently. Semantic consolidation finds clusters of similar memories using token overlap, synthesizes a single canonical version via LLM, and archives the originals. This reduces storage bloat, speeds up recall, and improves memory quality.\n\n- **Conservative by default** — Only merges when 80%+ token overlap is detected across 3+ memories\n- **LLM synthesis** — Uses your configured model to combine unique information from all cluster members\n- **Safe archival** — Originals are archived (not deleted) with full provenance tracking\n- **Configurable** — Adjust threshold, cluster size, excluded categories, model, and schedule\n- **Excluded categories** — Corrections and commitments are never consolidated (configurable)\n\nEnable it in your `openclaw.json`:\n\n```jsonc\n{\n  \"plugins\": {\n    \"entries\": {\n      \"openclaw-remnic\": {\n        \"config\": {\n          \"semanticConsolidationEnabled\": true\n          // Optional tuning:\n          // \"semanticConsolidationThreshold\": 0.8,    // 0.8=conservative, 0.6=aggressive\n          // \"semanticConsolidationModel\": \"fast\",      // \"auto\", \"fast\", or specific model\n          // \"semanticConsolidationIntervalHours\": 168, // weekly (default)\n          // \"semanticConsolidationMaxPerRun\": 100\n        }\n      }\n    }\n  }\n}\n```\n\nRun manually from the CLI:\n\n```bash\nopenclaw engram semantic-consolidate --dry-run    # Preview what would be merged\nopenclaw engram semantic-consolidate --verbose     # Run with detailed output\nopenclaw engram semantic-consolidate --threshold 0.6  # Override threshold\n```\n\n### Advanced (opt-in)\n\n- **Objective-State Recall** — Surfaces file/process/tool state snapshots alongside semantic memory\n- **Causal Trajectories** — Typed `goal -\u003e action -\u003e observation -\u003e outcome` chains\n- **Trust Zones** — Quarantine/working/trusted tiers with promotion rules and poisoning defense\n- **Harmonic Retrieval** — Blends abstraction nodes with cue-anchor matches\n- **Verified Recall** — Only surfaces memory boxes whose source memories still verify\n- **Semantic Rule Promotion** — Promotes `IF ... THEN` rules from verified episodes\n- **Creation Memory** — Work-product ledger tracking agent outputs\n- **Commitment Lifecycle** — Tracks promises, deadlines, and obligations\n- **Resume Bundles** — Crash-recovery context for interrupted sessions\n- **Utility Learning** — Learns promotion/ranking weights from downstream outcomes\n\nSee [Enable All Features](docs/enable-all-v8.md) for a full-feature config profile.\n\n## Access Layer\n\nRemnic exposes one shared service layer through multiple transports. During the\nv1.x compatibility window, the HTTP API path remains `/engram/v1/...` and the\nlegacy `engram.*` MCP aliases still work.\n\n### HTTP API\n\n```bash\nremnic daemon start\n```\n\nKey endpoints: `GET /engram/v1/health`, `POST /engram/v1/recall`, `POST /engram/v1/memories`, `GET /engram/v1/entities/:name`, and more. Full reference in [API docs](docs/api.md).\n\nThe HTTP server also hosts a lightweight operator UI at `http://127.0.0.1:4318/engram/ui/` for memory browsing, recall inspection, governance review, trust-zone promotion, and entity exploration.\n\n### MCP Tools\n\nAvailable via both stdio and HTTP transports:\n\n| Tool | Purpose |\n|------|---------|\n| `engram.recall` | Retrieve relevant memories for a query |\n| `engram.recall_explain` | Debug the last recall |\n| `engram.day_summary` | Generate structured end-of-day summary from memory content |\n| `engram.memory_get` | Fetch a specific memory by ID |\n| `engram.memory_timeline` | View a memory's lifecycle history |\n| `engram.memory_store` | Store a new memory |\n| `engram.suggestion_submit` | Queue a memory for review |\n| `engram.entity_get` | Look up a known entity |\n| `engram.review_queue_list` | View the governance review queue |\n| `engram.observe` | Feed conversation messages into memory pipeline (LCM + extraction) |\n| `engram.lcm_search` | Full-text search over LCM-archived conversations |\n| `engram.lcm_compaction_flush` | Flush pending LCM work before host context compaction |\n| `engram.lcm_compaction_record` | Record host context compaction token deltas |\n| `engram_context_search` | Full-text search across all archived conversation history (LCM) |\n| `engram_context_describe` | Get a compressed summary of a turn range (LCM) |\n| `engram_context_expand` | Retrieve raw lossless messages for a turn range (LCM) |\n\n### MCP over HTTP\n\nThe HTTP server exposes an MCP JSON-RPC endpoint at `POST /mcp`, allowing remote MCP clients to use Remnic tools over HTTP:\n\n```bash\nnpx remnic-server --host 0.0.0.0 --port 4318 --auth-token \"$REMNIC_AUTH_TOKEN\"\n```\n\nFor namespace-enabled deployments, configure `server.principal` in `remnic.config.json` so it matches a `writePrincipals` entry for your target namespace. Deployments with `namespacesEnabled: false` (the default) do not need a principal.\n\n## CLI Reference\n\n```bash\n# OpenClaw-hosted compatibility commands still use the `openclaw engram`\n# namespace during the v1.x rename window. Standalone commands use `remnic`.\n#\n# Setup \u0026 diagnostics\nopenclaw engram setup              # Guided first-run setup\nopenclaw engram doctor             # Health diagnostics with remediation hints\nopenclaw engram config-review      # Config tuning recommendations\nopenclaw engram stats              # Memory counts, search status\nopenclaw engram inventory          # Full storage and namespace inventory\n\n# Search \u0026 recall\nopenclaw engram search \"query\"     # Search memories from CLI\nopenclaw engram harmonic-search \"query\"  # Preview harmonic retrieval matches\n\n# Governance\nopenclaw engram governance-run --mode shadow  # Preview governance transitions\nopenclaw engram governance-run --mode apply   # Apply reversible transitions\nopenclaw engram review-disposition \u003cid\u003e --status rejected  # Operator review\n\n# Benchmarking\nopenclaw engram benchmark recall   # Benchmark status and validation\nopenclaw engram benchmark-ci-gate  # CI gate for regressions\n\n# Memory maintenance\nopenclaw engram consolidate                  # Run standard consolidation\nopenclaw engram semantic-consolidate         # Run semantic dedup consolidation\nopenclaw engram semantic-consolidate --dry-run  # Preview without changes\n\n# Daily context briefing (#370)\nremnic briefing                                  # Yesterday's briefing (markdown)\nremnic briefing --since 3d --focus project:alpha # Focused 3-day lookback\nremnic briefing --format json --save             # JSON + dated file in $REMNIC_HOME/briefings\n\n# Page versioning\nremnic versions list \u003cpage-path\u003e                  # List version history for a memory file\nremnic versions show \u003cpage-path\u003e \u003cversion-id\u003e     # Show a specific version snapshot\nremnic versions diff \u003cpage-path\u003e \u003cv1\u003e \u003cv2\u003e        # Diff two versions of a memory file\nremnic versions revert \u003cpage-path\u003e \u003cversion-id\u003e   # Revert a file to a previous version\n\n# MECE taxonomy\nremnic taxonomy show                              # Show taxonomy categories and priorities\nremnic taxonomy resolver                          # Generate or display resolver decision tree\nremnic taxonomy add \u003cid\u003e \u003cname\u003e                   # Add a taxonomy category\nremnic taxonomy remove \u003cid\u003e                       # Remove a taxonomy category\n\n# Entity enrichment\nremnic enrich \u003centity-name|--all|audit|providers\u003e [--dry-run]   # Run enrichment pipeline\n\n# Binary lifecycle\nremnic binary scan                                # Scan for binary files in memory directory\nremnic binary status                              # Show binary lifecycle status\nremnic binary run [--dry-run]                     # Run lifecycle (redirect/clean) for binaries\nremnic binary clean --force                       # Force-clean binaries past grace period\n\n# Access layer\nremnic daemon start                # Start HTTP API + managed daemon\nopenclaw engram access mcp-serve   # Start OpenClaw-hosted stdio MCP server\n\n# Trust-zone demos\nopenclaw engram trust-zone-demo-seed --dry-run       # Preview the opt-in buyer demo dataset\nopenclaw engram trust-zone-demo-seed --scenario agentic-commerce-v1 --dry-run\nopenclaw engram trust-zone-demo-seed                 # Explicitly seed the demo dataset\nopenclaw engram trust-zone-promote --record-id \u003cid\u003e --target-zone working --reason \"Operator review\"\n```\n\n### Trust-zone demo workflow\n\nTrust zones now ship with a dedicated admin-console view plus an explicit demo seeding path for buyer-facing walkthroughs.\n\n- **Never automatic** — Remnic does not seed sample trust-zone records on install, startup, or feature enablement.\n- **Explicit only** — demo records appear only after you run `openclaw engram trust-zone-demo-seed` or trigger the matching admin-console action.\n- **Buyer-friendly story** — the trust-zone view surfaces provenance strength, promotion readiness, corroboration requirements, and operator promotion actions in one place.\n\nThe default scenario is `enterprise-buyer-v1`, which creates a small, opinionated dataset covering:\n\n- quarantine records that are ready for review\n- working records that are blocked on missing provenance\n- working records that still need corroboration\n- working records with independent corroboration support\n- a trusted operator policy record\n\nThe commerce scenario is `agentic-commerce-v1`. It models buyer-aware recommendations using synthetic catalog data plus:\n\n- brand, size, fit, budget, gift, and shipping preferences\n- excluded products and never-suggest rules\n- ask-before-checkout boundaries\n- a blocked unverified upsell claim\n- retrieval eval coverage for commerce personalization and checkout boundaries\n\nSee [Agentic Commerce Demo](docs/agentic-commerce-demo.md) for the end-to-end walkthrough.\n\nSee the [full CLI reference](docs/api.md#cli-commands) for all commands.\n\n## Configuration\n\nOpenClaw plugin settings live in `openclaw.json` under `plugins.entries.openclaw-remnic.config` (with a legacy `openclaw-engram` fallback during the rename window). Standalone settings live in `remnic.config.json` or `~/.config/remnic/config.json`. The table below shows the most commonly changed settings — Remnic has **60+ configuration options** covering search backends, capture modes, memory OS features, namespaces, governance, benchmarking, and more.\n\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `modelSource` | `gateway` for new OpenClaw installs; `plugin` otherwise | `gateway` routes LLM calls through OpenClaw agent model chains; `plugin` uses Remnic's own OpenAI/local LLM config |\n| `openaiApiKey` | `(env in plugin mode)` | Optional OpenAI API key. Not needed when `modelSource` is `gateway`; Remnic does not inherit `OPENAI_API_KEY` in gateway mode. |\n| `localLlmEnabled` | `false` | Enable Remnic's local LLM path when `modelSource` is `plugin` |\n| `localLlmUrl` | unset | Local LLM endpoint (e.g., `http://localhost:1234/v1`) |\n| `localLlmModel` | unset | Local model name (e.g., `qwen2.5-32b-instruct`) |\n| `model` | `gpt-5.5` | OpenAI model for extraction when `modelSource` is `plugin` and local LLM is disabled |\n| `searchBackend` | `\"qmd\"` | Search engine: `qmd`, `orama`, `lancedb`, `meilisearch`, `remote`, `noop` |\n| `captureMode` | `implicit` | Memory write policy: `implicit`, `explicit`, `hybrid` |\n| `recallBudgetChars` | `maxMemoryTokens * 4` | Recall budget (default ~8K chars; set 64K+ for large-context models) |\n| `memoryDir` | `~/.openclaw/workspace/memory/local` | Memory storage root |\n| `memoryOsPreset` | unset | Quick config: `conservative`, `balanced`, `research-max`, `local-llm-heavy` |\n| `lcmEnabled` | `false` | Enable Lossless Context Management (proactive session archive + summary DAG) |\n| `messagePartsEnabled` | `false` | Opt in to structured LCM message-part capture for tool calls, file paths, patches, and reasoning markers |\n| `messagePartsRecallMaxResults` | `6` | Max structured file/tool matches injected into recall when `messagePartsEnabled` is on |\n| `semanticConsolidationEnabled` | `false` | Enable periodic semantic dedup of similar memories |\n| `semanticConsolidationThreshold` | `0.8` | Token overlap threshold (0.8=conservative, 0.6=aggressive) |\n| `semanticConsolidationModel` | `\"auto\"` | LLM for synthesis: `\"auto\"`, `\"fast\"`, or specific model |\n| `extractionJudgeEnabled` | `false` | LLM-as-judge post-extraction durability filter |\n| `semanticChunkingEnabled` | `false` | Topic-boundary chunking via sentence embeddings |\n| `versioningEnabled` | `false` | Snapshot-based page versioning with history and revert |\n| `citationsEnabled` | `false` | Emit `oai-mem-citation` blocks in recall responses |\n| `taxonomyEnabled` | `false` | MECE knowledge directory with resolver decision tree |\n| `enrichmentEnabled` | `false` | External entity enrichment pipeline |\n| `binaryLifecycleEnabled` | `false` | Binary file lifecycle management (mirror/redirect/clean) |\n| `procedural.enabled` | `true` | **Procedural memory (issue #519):** master gate for procedure extraction, task-init recall injection, and trajectory mining. Default-on since issue #567 PR 4/5; set nested `procedural: { \"enabled\": false }` to opt out (see [Procedural memory](docs/procedural-memory.md)). |\n| `codingMode.projectScope` | `true` | **Coding agent mode (issue #569):** auto-scope memory to the git project (stable origin-URL hash, falls back to root path). Set to `false` to disable project-based namespace isolation. See [Coding agent mode](docs/coding-agent.md). |\n| `codingMode.branchScope` | `false` | **Coding agent mode (issue #569):** additionally scope writes to the current git branch; reads fall back to the project-level namespace so project memories stay visible from any branch while branch writes don't leak. Enable for per-branch experimentation. |\n| `codingMode.globalFallback` | `true` | **Recall global fallback (issue #703):** project-scoped sessions include the root/global namespace in recall read-fallbacks so that cross-project knowledge (framework bugs, library behavior, user preferences) surfaces everywhere. Set to `false` for strict project isolation. See [Coding agent mode](docs/coding-agent.md). |\n| `extractionScopeClassificationEnabled` | `true` | **Extraction scope classification (issue #704):** classify extracted facts as `\"global\"` or `\"project\"` scope. Global facts are promoted to the shared root namespace so they are visible across all projects. See [Coding agent mode](docs/coding-agent.md). |\n| `recallCrossNamespaceBudgetEnabled` | `false` | **Cross-namespace budget (issue #565):** per-principal sliding-window rate limiter. Throttles principals issuing bursts of cross-namespace recalls; soft limit emits a warning, hard limit denies the query. See [Threat model](docs/security/memory-extraction-threat-model.md). |\n| `recallAuditAnomalyDetectionEnabled` | `false` | **Recall audit anomaly detection (issue #565):** flag suspicious query patterns (repeat queries, namespace walks, high-cardinality entity probes, rapid-fire). Anomalies are surfaced in recall responses. See [Threat model](docs/security/memory-extraction-threat-model.md). |\n| `connectors.googleDrive.enabled` | `false` | **Google Drive live connector (issue #683 PR 2/N):** opt-in incremental import of Google Docs/Sheets/Slides + plain-text files. Requires `clientId`, `clientSecret`, `refreshToken` to be populated from a secret store (never commit values). Optional `pollIntervalMs` (default 300000) and `folderIds` (default `[]` = all accessible). The `googleapis` npm package is loaded lazily — install it only if you enable the connector. See [Connectors](docs/connectors.md). |\n| `connectors.notion.enabled` | `false` | **Notion live connector (issue #683 PR 3/N):** opt-in incremental import of Notion database pages. Requires `token` (Notion integration token) and `databaseIds` (list of database IDs to import). Optional `pollIntervalMs` (default 300000). See [Connectors](docs/connectors.md). |\n| `graphTraversalConfidenceFloor` | `0.2` | **Graph edge confidence floor (issue #681 PR 3/3):** minimum edge confidence required during graph spreading activation. Edges below this floor are pruned and contribute neither activation nor downstream neighbors. Legacy edges without a `confidence` field are treated as `1.0`. Range `[0, 1]`. See [Graph Reasoning](docs/architecture/graph-reasoning.md). |\n| `graphTraversalPageRankIterations` | `8` | **Graph PageRank refinement (issue #681 PR 3/3):** number of PageRank-style refinement iterations applied on top of the BFS spreading-activation scores. Each iteration redistributes a node's confidence-weighted activation along its outgoing edges. Set to `0` to disable refinement and use raw BFS scores. See [Graph Reasoning](docs/architecture/graph-reasoning.md). |\n| `patternReinforcementEnabled` | `false` | **Pattern reinforcement (issue #687):** master gate for the cross-session pattern-reinforcement maintenance job. Default `false` (opt-in). See [Pattern Reinforcement](docs/pattern-reinforcement.md). |\n| `patternReinforcementCadenceMs` | `604800000` | Minimum milliseconds between pattern-reinforcement runs (default 7 days). Set to `0` to disable cadence gating and run on every MCP/cron invocation. |\n| `patternReinforcementMinCount` | `3` | Minimum cluster size required before a canonical memory is reinforced. Clamped to `[2, 1000]`. |\n| `patternReinforcementCategories` | `[\"preference\", \"fact\", \"decision\"]` | Memory categories the pattern-reinforcement job scans. Set to `[]` to process no categories. |\n| `recallDisclosureEscalation` | `\"manual\"` | **Recall disclosure auto-escalation (issue #677):** `\"manual\"` honors the caller's requested disclosure depth verbatim. `\"auto\"` escalates from `chunk` to `section` when top-K confidence falls below `recallDisclosureEscalationThreshold` — only on calls where the caller did not specify a depth. `raw` is never auto-selected. See [Recall Disclosure](docs/recall-disclosure.md). |\n| `recallDisclosureEscalationThreshold` | `0.5` | **Disclosure escalation threshold (issue #677):** confidence threshold in `[0, 1]` used by `recallDisclosureEscalation: \"auto\"`. Recalls whose top-result score is below this value are escalated from `chunk` to `section`. Has no effect in `manual` mode. See [Recall Disclosure](docs/recall-disclosure.md). |\n| `reinforcementRecallBoostEnabled` | `false` | **Reinforcement recall boost (issue #687 PR 3/4):** when `true`, memories whose `reinforcement_count` frontmatter field is set receive an additive score boost during recall. Default `false` (opt-in). |\n| `reinforcementRecallBoostWeight` | `0.05` | Score bonus per unit of `reinforcement_count`. Raw boost is `weight × count`, clipped at `reinforcementRecallBoostMax`. Range `[0, 1]`. |\n| `reinforcementRecallBoostMax` | `0.3` | Maximum additive reinforcement boost per result. Range `[0, 1]`. |\n\n**[See the full config reference for all 60+ settings](docs/config-reference.md)** including search backend configuration, namespace policies, Memory OS features, governance, evaluation harness, trust zones, causal trajectories, and more.\n\n## Documentation\n\n- [Getting Started](docs/getting-started.md) — Installation, setup, first-run verification\n- [Config Reference](docs/config-reference.md) — Every setting with defaults\n- [Architecture Overview](docs/architecture/overview.md) — System design and storage layout\n- [Retrieval Pipeline](docs/architecture/retrieval-pipeline.md) — How recall works\n- [Memory Lifecycle](docs/architecture/memory-lifecycle.md) — Write, consolidation, expiry\n- [Search Backends](docs/search-backends.md) — Choosing and configuring search engines\n- [Writing a Search Backend](docs/writing-a-search-backend.md) — Build your own adapter\n- [API Reference](docs/api.md) — HTTP, MCP, and CLI documentation\n- [Codex CLI Integration](docs/guides/codex-cli.md) — Set up Remnic with OpenAI's Codex\n- [Standalone Server Guide](docs/guides/standalone-server.md) — Multi-tenant HTTP server for multiple agent harnesses\n- [Local LLM Guide](docs/guides/local-llm.md) — Local-first extraction and reranking\n- [Cost Control Guide](docs/guides/cost-control.md) — Budget mappings and presets\n- [Namespaces](docs/namespaces.md) — Multi-agent memory isolation\n- [Shared Context](docs/shared-context.md) — Cross-agent intelligence\n- [Identity Continuity](docs/identity-continuity.md) — Consistent agent personality\n- [Peer Registry](docs/peers.md) — Multi-peer identity schema, profile reasoner, `remnic peer` commands, and migration from legacy identity-anchor (issue #679)\n- [Graph Reasoning](docs/architecture/graph-reasoning.md) — Opt-in graph traversal\n- [Evaluation Harness](docs/evaluation-harness.md) — Benchmarks and CI delta gates\n- [Operations](docs/operations.md) — Backup, export, maintenance\n- [Lossless Context Management](docs/guides/lossless-context-management.md) — Never lose context to compaction\n- [Enable All Features](docs/enable-all-v8.md) — Full-feature config profile\n- [Migration Guide](docs/guides/migrations.md) — Upgrading from older versions\n- [Platform Migration Guide](docs/guides/platform-migration.md) — Migrating to the monorepo architecture (v9.1.36+)\n- [Hermes Setup](docs/integration/hermes-setup.md) — HTTP client for remote Remnic instances\n- [Deployment Topologies](docs/integration/deployment-topologies.md) — Localhost, LAN, remote, containerized, standalone\n- [Extraction Judge](docs/architecture/extraction-judge.md) — LLM-as-judge fact-worthiness gate\n- [Semantic Chunking](docs/architecture/semantic-chunking.md) — Topic-boundary detection\n- [Page Versioning](docs/architecture/page-versioning.md) — Snapshot-based history and revert\n- [Citations](docs/architecture/citations.md) — OAI-mem-citation block format\n- [Memory Extension Publishers](docs/architecture/memory-extension-publishers.md) — Pluggable publisher contract\n- [MECE Taxonomy](docs/architecture/mece-taxonomy.md) — Knowledge directory with resolver\n- [Enrichment Pipeline](docs/architecture/enrichment-pipeline.md) — Entity enrichment from external sources\n- [Binary Lifecycle](docs/architecture/binary-lifecycle.md) — Binary file management\n- [Memory Extensions](docs/architecture/memory-extensions.md) — Third-party extension discovery\n- [Codex Marketplace](docs/plugins/codex-marketplace.md) — Marketplace installation\n- [Procedural memory](docs/procedural-memory.md) — Procedure files, recall injection, mining; enable with `procedural.enabled` (issue #519)\n- [Pattern Reinforcement](docs/pattern-reinforcement.md) — Cross-session pattern detection, reinforced primitives, `remnic patterns list/explain` CLI, recall boost (issue #687)\n- [Coding agent mode](docs/coding-agent.md) — Auto-scope memory to git project / branch, review-context recall, `set_coding_context` MCP tool (issue #569)\n- [Recall X-ray](docs/xray.md) — `remnic xray` CLI, HTTP endpoint, MCP tool for per-result retrieval attribution (issue #570)\n- [Connectors](docs/connectors.md) — `remnic connectors list/status/run` CLI reference, OAuth setup, config keys, env vars, and troubleshooting for Google Drive and Notion (issue #683 PR 6/N)\n- [Live connectors framework](docs/live-connectors.md) — Connector framework contract, registry, state store API, and how to write a connector\n- [Memory importers](docs/importers.md) — Bring memory from ChatGPT, Claude, Gemini, mem0, and Supermemory (issue #568)\n- [Memory Extraction Threat Model](docs/security/memory-extraction-threat-model.md) — ADAM attack analysis, attacker tiers, and mitigation wiring (issue #565)\n- [ADAM Baseline 2026-04](docs/security/adam-baseline-2026-04.md) — Reproducible ASR measurements per attacker tier\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feat/my-feature`)\n3. Write tests for new functionality\n4. Ensure `npm test` (672 tests) and `npm run check-types` pass\n5. Submit a pull request\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuaswarren%2Fremnic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshuaswarren%2Fremnic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuaswarren%2Fremnic/lists"}