Doramagic Project Pack · Human Manual

remnic

Open-source memory and context for user-aware agents: scoped memory, provenance, retrieval quality, correction, boundaries, evals, and MCP/HTTP access.

Overview & System Architecture

Related topics: Memory Engine & Retrieval Pipeline, Platform Integrations & Plugins

Section Related Pages

Continue reading this section for the full explanation and source context.

Related topics: Memory Engine & Retrieval Pipeline, Platform Integrations & Plugins

Overview & System Architecture

Remnic is a markdown-first memory layer for AI coding agents. It stores knowledge as plain Markdown files with YAML front-matter, exposes recall through an MCP server, and ships host-specific plugins that inject memory into agent sessions at the right moment. The system is organized as a TypeScript monorepo with one core package (@remnic/core) and a family of host plugins (@remnic/plugin-openclaw, @remnic/plugin-pi, @remnic/plugin-codex).

Purpose and Scope

Remnic's role is to be the durable, inspectable, agent-agnostic memory backing store. The core treats every piece of knowledge as a typed Markdown record, classifies it via a taxonomy, and surfaces it to agents only when the recall policy decides it is relevant. Source: packages/remnic-core/src/memory-extension/shared-instructions.ts defines nine top-level memory types — fact, preference, decision, entity, skill, correction, question, observation, and summary — each rendered to the host agent with semantic weight hints.

The system deliberately keeps private runtime state separate from public knowledge. The OpenClaw wiki-bridge enumerator, for example, scans only facts/, entities/, corrections/, artifacts/, and profile.md, and explicitly excludes state/, questions/, transcripts/, archive/, buffers/, and tokens/. Source: packages/plugin-openclaw/src/public-artifacts.ts.

Package Layout

flowchart LR
    subgraph Core["@remnic/core"]
        MCP[access-mcp.ts<br/>engram.recall, briefing]
        AS[access-service.ts<br/>briefing, recall]
        Storage[storage.ts<br/>entity serialization]
        NK[native-knowledge.ts<br/>obsidian + workspace chunks]
        CXM[shared-context/manager.ts<br/>cross-signals, daily curation]
        MemExt[memory-extension/<br/>codex + shared instructions]
        Conn[connectors/live/<br/>github]
    end
    subgraph Plugins["Host Plugins"]
        OC[plugin-openclaw<br/>wiki bridge, flush plan]
        PI[plugin-pi<br/>context hook, commands]
        CX[plugin-codex<br/>phase-2 sandbox publisher]
    end
    Agents[AI Agents / IDE Hosts] --> Core
    Core --> Plugins
    Plugins --> Agents

The core package owns recall, storage, connectors, and host-agnostic policies. Each plugin adapts the core to a specific host's extension API (OpenClaw, Pi, Codex). Source: packages/remnic-core/src/memory-extension/codex-publisher.ts shows how the Codex extension is materialized on disk under an extensionRoot/instructions.md plus skills/ and rollout_summaries/ directories.

Recall Pipeline

Recall follows a deterministic pipeline from query to injected context:

  1. Query normalization — stopwords, lexical cues, and filesystem-like paths are stripped. Source: packages/remnic-core/src/recall-query-policy.ts collapses whitespace, drops ~/... and C:\... tokens, and trims compact identifier terms before they ever hit the index.
  2. Chunk sourcing — Obsidian notes, OpenClaw workspace-sync files, and curated-include files are chunked with heading awareness and tagged with namespace, privacy class, and source hash. Source: packages/remnic-core/src/native-knowledge.ts.
  3. Cue and intent scoringexplicit-cue-recall.ts and response-guidance-recall.ts apply pattern libraries (DIY tasks, calculus walkthroughs, sleep-quality metrics, etc.) to assemble evidence. Source: packages/remnic-core/src/explicit-cue-recall.ts and packages/remnic-core/src/response-guidance-recall.ts.
  4. Assembly and disclosure — the access service joins hits, applies RecallDisclosure levels (section vs. raw), and returns EngramAccessMemoryRecord payloads. Source: packages/remnic-core/src/access-service.ts.
  5. Injection — the host plugin writes the recall blob into the agent's message stream. For Pi, recall must be appended to messages rather than prepended to keep prefix caches valid. Source: issue #1479.

The MCP surface exposes engram.recall, engram.recall_explain, and engram.set_coding_context (the last binds a coding-agent project/branch to a namespace). Source: packages/remnic-core/src/access-mcp.ts.

Storage, Connectors, and Curation

Entity files are serialized in a compiled-truth + timeline format that remains parse-compatible with legacy summary and facts fields. Structured sections are sorted by schema, and legacy facts are preserved when no timeline exists. Source: packages/remnic-core/src/storage.ts.

Connectors ingest external corpora. The GitHub connector, for example, paginates issues, PRs, and discussions, builds ConnectorDocument records with stable externalId values, and feeds them into the recall index. Source: packages/remnic-core/src/connectors/live/github.ts.

The shared-context manager runs daily curation: it merges cross-signal overlaps, applies optional semantic enhancement (fail-open on timeout), and writes a cross-signals/<date>.md roll-up plus a structured JSON report. Source: packages/remnic-core/src/shared-context/manager.ts. Taxonomy decisions are exposed as a human-readable RESOLVER.md decision tree generated from category priorities. Source: packages/remnic-core/src/taxonomy/resolver-doc-generator.ts.

Known Limitations and Recent Fixes

The community has surfaced several architectural gaps that drive recent releases:

AreaIssueResolution
Flush plan lifecycleModels hallucinate memory-candidates/ paths; flush-plan.md grows unbounded (#1483)Constrained flush-plan prompt (#1484)
LCM model routingLCM summarizer bypassed taskModelChain (#1473)Routed through taskModelChain (v9.3.637)
OAuth providersFallbackLlmClient rejected OAuth-only providers (#1478)Resolved in v9.3.639
Pi stale-ctxPost-await ctx access threw "stale ctx" (#1481)Hardened context handling in v9.3.640
QMD on WindowslaunchProcess() lacked shell:true (#1476)Windows QMD launcher fix in v9.3.640
Day summary cronTimezone and model reconciliation gaps (#1475, #1474)Reconciled in v9.3.639

The current release, v9.3.644, accepts 2026.6.11 beta OpenClaw hosts. Source: v9.3.644 release notes.

See Also

Source: https://github.com/joshuaswarren/remnic / Human Manual

Memory Engine & Retrieval Pipeline

Related topics: Overview & System Architecture, Configuration, Operations & Troubleshooting

Section Related Pages

Continue reading this section for the full explanation and source context.

Section Architecture

Continue reading this section for the full explanation and source context.

Related topics: Overview & System Architecture, Configuration, Operations & Troubleshooting

Memory Engine & Retrieval Pipeline

Overview

Remnic is a local-first, file-backed memory system that stores knowledge as plain Markdown files with YAML frontmatter and exposes a multi-stage retrieval pipeline to host agents (Codex, OpenClaw, Pi, etc.). The memory engine is responsible for ingesting facts, organizing them into a semantic taxonomy, retrieving contextually relevant entries on demand, and periodically consolidating redundant memories. The retrieval pipeline composes several scoring strategies — lexical overlap, intent matching, and event-order cues — into a single ranked recall snapshot, which is then surfaced back into the host's context window.

Source: packages/remnic-core/src/memory-extension/shared-instructions.ts

Memory Model & Storage Layout

Each memory is a Markdown document with a YAML frontmatter type field. The supported semantic types are enumerated in the shared instruction block and consumed by every host-specific publisher:

TypeSemantic Role
factObjective, user-confirmed knowledge
preferenceStated or inferred user preferences
decisionExplicit trade-off or commitment
entityNamed thing the user cares about
skillReusable workflow or procedure
correctionAmendment to a prior memory
questionOpen uncertainty flagged for review
observationCross-session pattern
summaryCondensed roll-up

Source: packages/remnic-core/src/memory-extension/shared-instructions.ts

On disk, memories live under a memoryDir partitioned into scanned roots (facts/, entities/, corrections/, artifacts/, profile.md) and explicitly excluded private roots (state/, questions/, transcripts/, archive/, buffers/, tokens/). The public-artifacts provider enforces this split by walking only the allow-listed directories and resolving symlinks against the memory root before exposing entries to wiki ingestion.

Source: packages/plugin-openclaw/src/public-artifacts.ts

Wearable day transcripts are deliberately stored under wearables/<source>/<YYYY-MM-DD>.md — outside the memory scan roots so they never appear as recallable memories, but inside the QMD collection root so they remain full-text searchable.

Source: packages/remnic-core/src/wearables/day-store.ts

Retrieval Pipeline

Recall is composed of three complementary scorers that run together and produce a single ranked snapshot:

  1. Lexical / explicit-cue recall — Tokenizes the query, drops a curated stopword set, and counts token overlap against indexed chunks. Reference targets are capped via maxReferences, and the resulting section is bounded by maxChars to keep the injected blob host-budget-friendly.

Source: packages/remnic-core/src/explicit-cue-recall.ts

  1. Intent / response-guidance recall — Pattern-matches the normalized query against an intent registry (e.g. diy_insulation_summary, calculus_derivative_walkthrough, technical_project_summary) and emits intent tags that bias the downstream ranker toward domain-specific evidence.

Source: packages/remnic-core/src/response-guidance-recall.ts

  1. Event-order recall — Surfaces memories whose frontmatter events are temporally adjacent to the current turn, weighted against an enumerated phrase dictionary of conversational anchors.

Source: packages/remnic-core/src/event-order-recall.ts

The MCP surface exposes this pipeline as engram.recall (with query, cwd, projectTag, asOf, tags, and tagMatch parameters) and engram.recall_explain, plus a companion engram.set_coding_context that pins a session to a project/branch-scoped namespace.

Source: packages/remnic-core/src/access-mcp.ts

Architecture

flowchart LR
    Q[Query] --> EX[Explicit Cue Recall]
    Q --> RG[Response Guidance / Intent]
    Q --> EO[Event Order Recall]
    EX --> R[Ranked Snapshot]
    RG --> R
    EO --> R
    R --> CTX[Host Context Window]
    CTX --> AGENT[Host Agent]

Consolidation & Maintenance

The semantic consolidation engine clusters near-duplicate memories via token overlap, synthesizes a canonical version through an LLM operator, archives the originals, and runs a post-consolidation materialize step. Operators are dispatched through a pluggable vocabulary defined in consolidation-operator.ts and re-exported from semantic-consolidation.ts to avoid circular imports.

Source: packages/remnic-core/src/semantic-consolidation.ts

Native Obsidian vaults are chunked heading-aware; each heading becomes a NativeKnowledgeChunk keyed by vaultId:notePath:startLine-endLine with metadata inherited from the parent note (tags, aliases, wikilinks, backlinks, namespace, privacy class).

Source: packages/remnic-core/src/native-knowledge.ts

The taxonomy resolver emits a human-readable RESOLVER.md decision tree from a Taxonomy definition so operators can file new knowledge deterministically. Categories are sorted by ascending priority number, with ties broken by lexical id.

Source: packages/remnic-core/src/taxonomy/resolver-doc-generator.ts

The operator toolkit injects a managed capture-instructions block into host instructions files, idempotently upserting between CAPTURE_INSTRUCTIONS_START / CAPTURE_INSTRUCTIONS_END markers so manual edits outside the block are preserved.

Source: packages/remnic-core/src/operator-toolkit.ts

Public Artifacts & Wiki Bridge

For OpenClaw hosts, the memory-wiki bridge mode enumerates only the allow-listed public directories (facts/, entities/, corrections/, artifacts/, profile.md) and rejects symlink traversal that would re-target an allow-listed directory onto a private one (e.g. facts -> state). The corpus supplement then exposes those memories as a read-only remnic corpus under a service-scoped supplement ID, with no exposure of transcript buffers, auth metadata, or runtime state.

Source: packages/plugin-openclaw/src/public-artifacts.ts Source: packages/plugin-openclaw/README.md

Known Issues & Operational Notes

  • LCM summarizer model routing — In v9.3.639 the Lossless Context Management summarizer was rerouted through taskModelChain instead of the gateway default; prior versions fell back to agents.defaults.model (issue #1473).
  • OAuth-only providersFallbackLlmClient was hardened in v9.3.639 to honor OAuth-only providers when modelSource: "gateway" (issue #1478).
  • Day-summary cron reconciliation — The engram-day-summary cron now reconciles model config on plugin startup via reconcileDaySummaryCronRouting(), matching the hourly summary behavior (issue #1474).
  • Recall injection order — The Pi plugin's context hook now appends recalled memories instead of prepending them, preserving prefix-cache locality for providers like DeepSeek V4 Flash (issue #1479).

See Also

  • OpenClaw Plugin Lifecycle
  • MCP Tool Surface
  • Semantic Consolidation Operators
  • Obsidian Vault Ingestion

Source: https://github.com/joshuaswarren/remnic / Human Manual

Platform Integrations & Plugins

Related topics: Overview & System Architecture, Configuration, Operations & Troubleshooting

Section Related Pages

Continue reading this section for the full explanation and source context.

Related topics: Overview & System Architecture, Configuration, Operations & Troubleshooting

Platform Integrations & Plugins

Remnic distributes its functionality across a monorepo of platform integrations (host-specific plugins such as @remnic/plugin-openclaw and @remnic/plugin-pi) and extension publishers that teach external agent hosts (Codex, OpenClaw) how to read and write Remnic memory. The @remnic/core package sits between them, exposing canonical memory, MCP tools, and connector adapters that every host and plugin consume.

Architecture Overview

The integration layer is organised so that core remains host-agnostic, while each plugin owns the surface area unique to its platform (event hooks, message-shape translation, public-artifact emission). The diagram below shows the major relationships that the source code expresses today.

flowchart LR
  Host["Agent Host<br/>(OpenClaw / Pi / Claude Code / Codex)"]
  Plugin["Host Plugin<br/>(plugin-openclaw, plugin-pi)"]
  Core["@remnic/core<br/>(canonical memory + MCP)"]
  Pub["Memory Extension Publisher<br/>(codex-publisher + shared-instructions)"]
  Conn["Connectors<br/>(github live, codex-materialize)"]
  NK["Native Knowledge<br/>(Obsidian vault sync)"]

  Host -- "events / messages" --> Plugin
  Plugin -- "RecallTool, append/prepend context" --> Core
  Host -. "instructions.md + skills/" .-> Pub
  Pub -- "shared instruction fragments" --> Core
  Conn -- "ConnectorDocument[]" --> Core
  NK -- "NativeKnowledgeChunk[]" --> Core
  Core -- "facts/, entities/, profile.md" --> Plugin

Public Artifacts and the Memory-Wiki Bridge

The OpenClaw plugin enumerates a safe subset of memory for wiki ingestion via packages/plugin-openclaw/src/public-artifacts.ts. The function listRemnicPublicArtifacts() resolves the memory directory with realpath, then walks an allowlist of directories (facts/, entities/, corrections/, artifacts/, plus the public summary of profile.md).

Private runtime state is explicitly excluded:

"Private/runtime state (state/, questions/, transcripts, buffers, etc.) is explicitly excluded." — packages/plugin-openclaw/src/public-artifacts.ts:1-15

The implementation also defends against symlink traversal: a directory named facts that resolves to state is rejected so that allowlisted names cannot redirect to private data. Source: packages/plugin-openclaw/src/public-artifacts.ts:67-90.

Memory Extension Publishers

When Remnic integrates with a host that loads static instructions (e.g., Codex), it ships a *memory extension* — a directory containing instructions.md, optional skills/, and per-session rollout_summaries/. The publisher lives in packages/remnic-core/src/memory-extension/codex-publisher.ts and is composed from shared fragments defined in packages/remnic-core/src/memory-extension/shared-instructions.ts.

Reusable blocks include REMNIC_SEMANTIC_OVERVIEW (a markdown table describing the nine canonical memory types: fact, preference, decision, entity, skill, correction, question, observation, summary) and REMNIC_CITATION_FORMAT, which lets host agents emit oai-mem-citation blocks for downstream retrieval. Source: packages/remnic-core/src/memory-extension/shared-instructions.ts:12-44.

The Codex publisher renders these blocks into instructions.md with an atomic write (temp file + rename). It also enforces a Phase-2 sandbox rule set — "No network. No CLI invocation. No MCP tool calls." — when publishing inside Codex's consolidation sandbox. Source: packages/remnic-core/src/memory-extension/codex-publisher.ts:160-200.

Live and Materialized Connectors

Remnic pulls knowledge from third-party sources via two connector families:

ConnectorLocationPurpose
GitHub livepackages/remnic-core/src/connectors/live/github.tsPaginated fetch of issues, PRs, discussions and comments using cursor watermarks.
Codex rolloutpackages/remnic-core/src/connectors/codex-materialize.tsMaterialises Codex rollout logs into Markdown summaries under <codex_home>/memories, gated by a .remnic-managed sentinel and idempotent via a content hash.

The GitHub connector exposes a ConnectorDocument shape with externalId, externalRevision, and externalUrl, and paginates by mutating the page query parameter. Source: packages/remnic-core/src/connectors/live/github.ts:30-55.

The Codex materializer returns a MaterializeResult distinguishing wrote, skippedNoSentinel, and skippedIdempotent outcomes — important because hosts may re-run materialisation repeatedly without producing duplicate memory. Source: packages/remnic-core/src/connectors/codex-materialize.ts:30-60.

Native Knowledge and Obsidian

packages/remnic-core/src/native-knowledge.ts implements Obsidian vault ingestion. Notes are split with a heading-aware chunker (chunkObsidianNote) that preserves tags, aliases, wikilinks, and backlinks per chunk. An alias index (buildAliasIndex) maps aliases back to note paths so recall can resolve synonym queries.

The module also handles two state-file formats — openclaw-workspace-sync.json and a generic curated-include state — converting either into the unified NativeKnowledgeChunk shape the rest of core expects.

MCP Access Surface

Plugins and external callers reach memory through the Model Context Protocol. packages/remnic-core/src/access-mcp.ts registers tools including engram.recall (with chunk | section | raw granularity, asOf historical pin, tags filter, and tagMatch: "any" | "all"), engram.recall_explain, and engram.set_coding_context. The asOf parameter is the implementation behind issue #680 (historical recall), and tags/tagMatch implement issue #689. Source: packages/remnic-core/src/access-mcp.ts:20-90.

Workspace Projection and Shared Context

packages/remnic-core/src/projection/index.ts renders canonical memory into a human-readable .engram/context-tree/ of Markdown files annotated with provenance, trust tier, confidence, and source anchors. Manual edits inside fenced blocks are preserved across regenerations.

packages/remnic-core/src/shared-context/manager.ts writes a daily Cross-Signals report summarising overlapping themes, risks, and promotion candidates across agent outputs, supporting cross-agent coordination.

Common Failure Modes (from Community Reports)

Several recent issues describe real-world integration friction:

  • Stale ctx errors (@remnic/plugin-pi) after session replacement break the whole extension until restart (issue #1481).
  • OAuth-only providers are rejected by FallbackLlmClient before runtime auth resolution when modelSource: "gateway" (issue #1478); v9.3.639 routed OAuth and LCM through taskModelChain.
  • Windows QMD launch fails because launchProcess() calls bare spawn() without shell:true (issue #1476); fixed in v9.3.640.
  • Day Summary cron timezone is server-locked (issue #1475), and the cron is not reconciled on startup like the hourly cron is (issue #1474); partially addressed in v9.3.639.
  • OpenClaw flush-plan paths hallucinated by the LLM grow flush-plan.md indefinitely (issue #1483); the prompt was constrained in v9.3.640 and lifecycle processing fixed in v9.3.641.

See Also

  • Remnic Memory Types & Recall
  • MCP Tools Reference
  • Connectors & Live Sync

Source: https://github.com/joshuaswarren/remnic / Human Manual

Configuration, Operations & Troubleshooting

Related topics: Overview & System Architecture, Memory Engine & Retrieval Pipeline, Platform Integrations & Plugins

Section Related Pages

Continue reading this section for the full explanation and source context.

Section Memory Type Taxonomy

Continue reading this section for the full explanation and source context.

Section Per-Note Metadata

Continue reading this section for the full explanation and source context.

Section Materialization Sentinels

Continue reading this section for the full explanation and source context.

Related topics: Overview & System Architecture, Memory Engine & Retrieval Pipeline, Platform Integrations & Plugins

Configuration, Operations & Troubleshooting

Remnic is a memory-augmentation layer that stores knowledge as plain Markdown files with YAML front-matter and exposes that corpus to host agents through MCP, native publishers, and bridge plugins. This page documents the operational surface: how memory is persisted, how access is mediated, how privacy boundaries are enforced, and where known issues surface during routine use.

Operational Architecture

Remnic is organized as a set of cooperating subsystems that move knowledge between external sources, structured storage, and runtime agents. The flow can be summarized as:

flowchart LR
    A[External Sources<br/>Codex rollouts, GitHub, Obsidian] --> B[Connectors<br/>codex-materialize, github.ts]
    B --> C[Native Knowledge<br/>native-knowledge.ts]
    C --> D[Storage Layer<br/>storage.ts]
    D --> E[Memory Directory<br/>facts/, entities/, corrections/, artifacts/]
    D --> F[MCP Access Layer<br/>access-mcp.ts, access-service.ts]
    D --> G[Host Publishers<br/>codex-publisher.ts, plugin-openclaw]
    F --> H[Host Agents]
    G --> H
    D -.private state excluded.-> X[state/, questions/, transcripts/, archive/, buffers/, tokens/]

The diagram highlights two important operational boundaries. First, only specific top-level directories are eligible for ingestion by external agents; second, the MCP and publisher surfaces are explicitly downstream of storage and never reach private runtime state. Source: packages/plugin-openclaw/src/public-artifacts.ts:1-15

Configuration Touch Points

Memory Type Taxonomy

Every persisted memory carries a type front-matter field that tells host agents how to weight it. The taxonomy is published verbatim into host instructions.md files so the meaning is consistent across surfaces. Source: packages/remnic-core/src/memory-extension/shared-instructions.ts:13-37

TypeRole
factObjective confirmed knowledge
preferenceStated or inferred user preference
decisionExplicit decision or trade-off
entityNamed thing the user cares about
skillReusable workflow / procedure
correctionFix or amendment to a prior memory
questionOpen uncertainty flagged for resolution
observationCross-session pattern
summaryCondensed roll-up

Per-Note Metadata

Native knowledge chunks carry namespace and privacy-class metadata propagated from the source vault. chunkObsidianNote assigns vaultId, notePath, namespace, privacyClass, tags, aliases, wikilinks, and backlinks to every chunk so downstream recall can apply privacy filters before returning content. Source: packages/remnic-core/src/native-knowledge.ts:1-44

Materialization Sentinels

Codex rollout materialization writes a .remnic-managed sentinel alongside the memory directory. Subsequent runs use the sentinel plus a content hash to short-circuit idempotent re-ingestion and to skip gracefully when the sentinel is missing. Source: packages/remnic-core/src/connectors/codex-materialize.ts:18-75

Privacy & Access Boundaries

Public vs. Private Artifacts

The OpenClaw bridge enumerates a strict allow-list of public directories: facts/, entities/, corrections/, artifacts/, and profile.md. Everything else — including state/, questions/, transcripts/, archive/, runtime buffers, and tokens/ — is deliberately excluded from wiki ingestion. Source: packages/plugin-openclaw/src/public-artifacts.ts:5-13

Two defensive checks protect the boundary at runtime:

  1. The memory root is resolved via realpath() before any directory is opened; if resolution fails, the enumerator returns an empty list rather than guessing. Source: packages/plugin-openclaw/src/public-artifacts.ts:46-58
  2. Each allow-listed directory is checked for symlink redirection that could alias a public name to a private directory (e.g., facts -> state/), preventing accidental disclosure. Source: packages/plugin-openclaw/src/public-artifacts.ts:62-69

MCP Tool Surface

Remnic exposes a constrained set of MCP tools. engram.recall accepts a query plus optional filters: namespace, disclosure, cwd, projectTag, asOf (historical pin, issue #680), and tags with tagMatch semantics (any or all, issue #689). engram.recall_explain returns the most recent snapshot for a session, and engram.set_coding_context attaches project/branch routing. The principal field on remnic_briefing is described as transport-bound and never sourced from untrusted payloads. Source: packages/remnic-core/src/access-mcp.ts:1-50, packages/remnic-core/src/access-service.ts:14-22

Sandbox Enforcement

The Codex phase-2 publisher publishes an explicit sandboxing contract into instructions.md: no network calls, no CLI invocation of remnic/engram, no MCP tool calls, and only filesystem reads for memory. Local writes are permitted only where the sandbox policy allows. This contract is what makes Codex consolidation safe in restricted environments. Source: packages/remnic-core/src/memory-extension/codex-publisher.ts:24-35

Known Operational Issues

The community has surfaced several recurring operational failure modes that operators should expect to triage:

  • Windows QMD probe failurelaunchProcess() uses a bare spawn() without shell:true, so sh, .cmd, and JS launchers all error with ENOENT/EINVAL on Windows. Tracked in issue #1476 and fixed in v9.3.640.
  • LLM routing bypass — LCM summarization and gateway task defaults originally fell back to agents.defaults.model instead of the plugin's taskModelChain; OAuth-only providers (e.g. openai/gpt-5.4) were rejected before runtime auth. Fixed in v9.3.639 (#1482) and v9.3.637 (#1470).
  • Cron reconciliation driftengram-day-summary did not reconcile model config on plugin startup or accept a configurable timezone. Tracked in #1474 / #1475.
  • Flush-plan hallucination — During memory-triggered compaction, the model occasionally writes to hallucinated paths (e.g. memory-candidates/); fixed in v9.3.640 (#1484) and v9.3.641 (#1487).
  • Pi plugin stale context — Post-await ctx access after session replacement triggers ExtensionRunner's stale-ctx error; v9.3.640 appends recall instead of prepending for prefix-cache friendliness and hardens context handling (#1481, #1479).

Diagnostics

The bench package ships a registry of regression benchmarks that operators can re-run after upgrades to validate that recall, ingestion, and consolidation paths still behave correctly. Defined suites include enrichmentFidelity, entityConsolidation, pageVersioning, retrievalPersonalization, retrievalTemporal, retrievalDirectAnswer, retrievalGraph, retrievalReasoningTrace, codingRecall, proceduralRecall, ingestionEntityRecall, ingestionSchemaCompleteness, ingestionBacklinkF1, and ingestionSetupFriction. Source: packages/bench/src/registry.ts:1-58

Cross-signals reports (crossSignalsDir/<date>.md) and daily curation output also act as first-line diagnostics: they surface counts of approved / approved-with-feedback / rejected decisions, the semantic-enhancer outcome (applied, timed-out, or no overlaps), and a list of recurring themes and risks. Source: packages/remnic-core/src/shared-context/manager.ts:1-30

See Also

  • Memory Type Reference
  • MCP Tool Reference
  • OpenClaw Bridge Mode
  • Codex Phase-2 Consolidation

Source: https://github.com/joshuaswarren/remnic / Human Manual

Doramagic Pitfall Log

Source-linked risks stay visible on the manual page so the preview does not read like a recommendation.

high Security or permission risk requires verification

Developers may expose sensitive permissions or credentials: FallbackLlmClient rejects OAuth-only providers (openai) before runtime auth resolution

high Security or permission risk requires verification

Developers may expose sensitive permissions or credentials: [Windows] QMD probe fails: launchProcess() uses bare spawn() without shell:true — all qmd launch forms (sh/.cmd/JS) error

medium Installation risk requires verification

Developers may fail before the first successful local run: plugin-pi: stale ctx error after session replacement/reload (post-await ctx access in event + command handlers)

medium Installation risk requires verification

May increase setup, validation, or first-run risk for the user.

Doramagic Pitfall Log

Found 29 structured pitfall item(s), including 2 high/blocking item(s). Top priority: Security or permission risk - Security or permission risk requires verification.

1. Security or permission risk: Security or permission risk requires verification

  • Severity: high
  • Finding: Developers should check this security_permissions risk before relying on the project: FallbackLlmClient rejects OAuth-only providers (openai) before runtime auth resolution
  • User impact: Developers may expose sensitive permissions or credentials: FallbackLlmClient rejects OAuth-only providers (openai) before runtime auth resolution
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: FallbackLlmClient rejects OAuth-only providers (openai) before runtime auth resolution. Context: Source discussion did not expose a precise runtime context.
  • Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1478

2. Security or permission risk: Security or permission risk requires verification

  • Severity: high
  • Finding: Developers should check this security_permissions risk before relying on the project: [Windows] QMD probe fails: launchProcess() uses bare spawn() without shell:true — all qmd launch forms (sh/.cmd/JS) error
  • User impact: Developers may expose sensitive permissions or credentials: [Windows] QMD probe fails: launchProcess() uses bare spawn() without shell:true — all qmd launch forms (sh/.cmd/JS) error
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: [Windows] QMD probe fails: launchProcess() uses bare spawn() without shell:true — all qmd launch forms (sh/.cmd/JS) error. Context: Observed when using node, windows, macos
  • Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1476

3. Installation risk: Installation risk requires verification

  • Severity: medium
  • Finding: Developers should check this installation risk before relying on the project: plugin-pi: stale ctx error after session replacement/reload (post-await ctx access in event + command handlers)
  • User impact: Developers may fail before the first successful local run: plugin-pi: stale ctx error after session replacement/reload (post-await ctx access in event + command handlers)
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: plugin-pi: stale ctx error after session replacement/reload (post-await ctx access in event + command handlers). Context: Observed when using node, macos
  • Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1481

4. Installation risk: Installation risk requires verification

  • Severity: medium
  • Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1474

5. Installation risk: Installation risk requires verification

  • Severity: medium
  • Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1476

6. Installation risk: Installation risk requires verification

  • Severity: medium
  • Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1481

7. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Project evidence flags a configuration risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: capability.host_targets | https://github.com/joshuaswarren/remnic

8. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Developers should check this configuration risk before relying on the project: Day Summary cron job does not reconcile model config on plugin startup
  • User impact: Developers may misconfigure credentials, environment, or host setup: Day Summary cron job does not reconcile model config on plugin startup
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: Day Summary cron job does not reconcile model config on plugin startup. Context: Source discussion did not expose a precise runtime context.
  • Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1474

9. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Developers should check this configuration risk before relying on the project: Day Summary cron timezone is not configurable (uses server timezone)
  • User impact: Developers may misconfigure credentials, environment, or host setup: Day Summary cron timezone is not configurable (uses server timezone)
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: Day Summary cron timezone is not configurable (uses server timezone). Context: Source discussion did not expose a precise runtime context.
  • Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1475

10. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Developers should check this configuration risk before relying on the project: Flush plan: models hallucinate 'memory-candidates/' paths and flush-plan.md grows indefinitely
  • User impact: Developers may misconfigure credentials, environment, or host setup: Flush plan: models hallucinate 'memory-candidates/' paths and flush-plan.md grows indefinitely
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: Flush plan: models hallucinate 'memory-candidates/' paths and flush-plan.md grows indefinitely. Context: Observed when using node, python
  • Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1483

11. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Developers should check this configuration risk before relying on the project: LCM summarizer bypasses taskModelChain, falls back to gateway default model chain
  • User impact: Developers may misconfigure credentials, environment, or host setup: LCM summarizer bypasses taskModelChain, falls back to gateway default model chain
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: LCM summarizer bypasses taskModelChain, falls back to gateway default model chain. Context: Source discussion did not expose a precise runtime context.
  • Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1473

12. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Developers should check this configuration risk before relying on the project: v9.3.639
  • User impact: Upgrade or migration may change expected behavior: v9.3.639
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: v9.3.639. Context: Observed when using docker
  • Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.639

Source: Doramagic discovery, validation, and Project Pack records

Community Discussion Evidence

These external discussion links are review inputs, not standalone proof that the project is production-ready.

Sources 12

Count of project-level external discussion links exposed on this manual page.

Use Review before install

Open the linked issues or discussions before treating the pack as ready for your environment.

Community Discussion Evidence

Doramagic exposes project-level community discussion separately from official documentation. Review these links before using remnic with real data or production workflows.

Source: Project Pack community evidence and pitfall evidence