At a glance
What it does
A paired DSH bundle for searchable local memory and automatic session-digest capture.
Web Profile
Not declared in supplied evidence
Evidence-verified
Checked Sep 15, 2026, 2:13 PM UTC
Code-evidenced contributions
What it adds to DSH
Connects DSH to a local memory-vault server over stdio.
Mechanism evidence ↗Captures session digests at idle, commit, compaction, and disposal checkpoints.
Mechanism evidence ↗Before you choose it
DSH Memory Vault installs two related bundles: memory-mcp connects DeepSeek Harness to a local stdio MCP memory server, while memory-auto writes automatic session digests. The vault uses Markdown entries plus a SQLite FTS5 index, with default paths under the Harness home.
Best for
DeepSeek Harness users who want a persistent, searchable project memory and are comfortable reviewing local plugin configuration.
Common tasks
- Ask the agent to search saved project memory.
- Store facts or decisions through the memory MCP tools.
- Automatically capture useful session context around commits, compactions, idle activity, and session end.
- Export memories or retrieve a saved profile.
Permissions and data
The bundles manage local vault files and start a local stdio MCP server; automatic capture sends transcript-derived digest work through the configured Harness LLM service.
Permissions- Reads DSH_MEMORY_PATH and DSH_MEMORY_SERVER_DIR when set.
- Creates or uses the vault and server directories under DSH_HOME by default.
- Starts the memory server through a Node launcher and stdio transport.
- Stores memory entries as Markdown and indexes them with SQLite FTS5.
- Automatic digests are written into the configured vault.
- Existing copied vault files are described as not overwritten on first boot.
- Uses the Harness LLM provider configuration for automatic digest generation.
- May install Python requirements from the network on first boot when uv is unavailable.
- No separate plugin credential requirement is declared; automatic capture uses the key already configured in DSH.
Limitations
- No npm registry package version was verified in the supplied evidence; use the immutable Git bundle source.
- Installation and runtime behavior were not executed during curation.
- memory-auto declares a prepare build script.
- Automatic capture is enabled by default in the supplied patch and uses the default DeepSeek provider/model unless reconfigured.
What DSHub checked
- Both package manifests and Cordis bundle patches have verified structure at the pinned commit.
- Immutable Git bundle delivery is verified for @luisarg/memory-mcp and @luisarg/memory-auto.
- The source declares an MIT license.
What DSHub did not check
- Successful installation, first-boot dependency setup, MCP connectivity, and memory writes were not run.
- A DeepSeek Harness version range is not declared in supplied evidence.
- npm availability for version 0.1.4 was not verified.
Pinned install
Install DSH Memory Vault
This plugin bundle does not have a DSH Plugin install action. Use its source documentation for the delivery method.
Maintainer source
Project README
dsh-memory-vault
Persistent OKF memory for DeepSeek Harness (DSH):
a Python MCP server (SQLite FTS5 + Markdown), two Cordis plugins (memory-mcp, memory-auto)
and a vault starter with templates and a type registry.


Components
| Component | What it does | Bundle |
|---|---|---|
memory-mcp |
MCP stdio wrapper: connects DSH to the memory vault server | @luisarg/memory-mcp |
memory-auto |
Auto memory capture: session digest with commit/compaction checkpoints | @luisarg/memory-auto |
memory-vault-server/ |
Python MCP server: SQLite FTS5 + Markdown OKF | — |
memory-vault/ |
Vault starter: templates + type registry + tag vocabulary | — |
scripts/digest_session.py |
Optional standalone post-session digest (CLI, not used by the plugins) | — |
Quickstart
pnpm install
pnpm -r build
# local dev with an overlay (paths relative to the repo cwd)
dsh web --patch ./examples/dev-memory.cordis.yml
Install
# 1. install both plugins (npm, prebuilt — no build approvals, no repo clone)
dsh plugin --profile web add @luisarg/memory-mcp@0.1.4 @luisarg/memory-auto@0.1.4
# 2. launch — first boot installs the vault server + starter under $DSH_HOME
# (~/.dsh/memory-vault-server and ~/.dsh/memory-vault) automatically
dsh web
# verify
dsh --profile web --dump-config | grep -A8 memory
uvon PATH is recommended but no longer required: the bundledlauncher.mjsruns the server withuv runwhen uv is present and falls back to a pip-managed venv (python3 -m venv+pip install -r requirements.txt, first boot needs network) when it is not. The packages are self-contained: they ship the Python vault server and the OKF vault starter, and copy them into place on first boot (existing files are never overwritten; upgrades copy only the missinglauncher.mjsandrequirements.txt). The version is pinned because pnpm's defaultminimumReleaseAge(3 days) would otherwise resolve an older release. Paths resolve as: env (DSH_MEMORY_PATH,DSH_MEMORY_SERVER_DIR) →$DSH_HOME/memory-vault(-server)→ profile patch (see Path resolution). Launch from any directory.
Developers (local checkout instead of npm):
dsh plugin --profile demo add ./packages/memory-mcp ./packages/memory-auto
Offline: pnpm --filter @luisarg/memory-mcp pack and add the .tgz files.
Installing the repo root from GitHub is not supported (root has no
dsh.bundle; pnpm lacks git subdirectory specs) — use npm or the tarball.
Releases are published by CI: pushing a v<version> tag builds, tests,
validates the tarballs and publishes both packages to npm with a
provenance attestation,
authenticated by GitHub OIDC — no publish token exists in this repository or on
the maintainer's machine. What runs before an artifact ships, and the guardrails
around it, are in docs/releasing.md.
Usage & interaction commands
Once installed, the agent can read and write the vault through the
mcp__memory__* tools — just ask it in the chat:
| You say | Tool the agent uses |
|---|---|
"search your memory for <topic>" |
mcp__memory__search_memory |
"remember this: <fact/decision>" |
mcp__memory__store_decision / store_fact / … |
"export everything you know about <project>" |
mcp__memory__export_memories |
| "summarize my profile" | mcp__memory__get_profile |
Automatic capture (memory-auto): git commits, compactions and session
ends trigger digests; idle checkpoints capture when there is activity. Digests
log as [memory-auto] … lines in the harness console, and writes land under
<vault>/projects/<project>/<type>/ (Markdown) + the SQLite FTS5 index.
Verify the installation and the stored memory:
# composed config shows both bundles with the resolved paths
dsh --profile web --dump-config | grep -A8 memory
# what the vault holds (default vault: ~/.dsh/memory-vault)
ls ~/.dsh/memory-vault/projects/ # per-project OKF entries
grep -i "digest" ~/.dsh/memory-vault/log.md # digest markers
# talk to the vault MCP server directly (standalone smoke test)
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"cli","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"ping","arguments":{}}}' \
| MEMORY_PATH=$HOME/.dsh/memory-vault uv run --directory memory-vault-server python server.py
Run a second harness instance on another port (for testing without touching your main session):
pnpm dsh web --port 3090
Second MCP client: opencode (zona central ~/.memories)
Since 2026-09-09 the vault lives in a dedicated git repo at ~/.memories
(union of the former DSH vault and the legacy opencode-memory-vault
bundle; see docs/central-zone.md). opencode is a
second stdio MCP client over the same server and vault — ~/.config/opencode/opencode.json:
"mcp": {
"memory-server": {
"type": "local",
"command": ["uv", "run", "--directory", "<repo>/memory-vault-server", "python", "server.py"],
"enabled": true,
"environment": { "MEMORY_PATH": "<absolute path to your vault>" }
}
}
opencode requires the key
environment(notenv— that one is silently ignored and the server falls back to the repo default vault).
Memory stack
The plugins work on an OKF vault (memory-vault/ in this repo, or your own).
Runtime: uv on PATH, or Python ≥3.11 with a network on first boot — both
launch paths go through the bundled launcher.mjs, which uses uv run and
falls back to a pip-managed .venv (requirements.txt) when uv is missing.
The post-session digest runs in-process through the harness's own LLM
service (ctx.llm, provider deepseek-official by default — configurable with
provider/model), so the plugins need no external CLI and store no
credentials: they use the same key DSH is configured with.
Path resolution (cwd-independent)
DSH does not chdir — the launch directory is irrelevant. Paths resolve in this order:
- Env vars (override everything):
DSH_MEMORY_PATH,DSH_MEMORY_SERVER_DIR. - Defaults under the harness home:
$DSH_HOME/memory-vaultand$DSH_HOME/memory-vault-server(~/.dshwhen$DSH_HOMEis unset). - Profile patch (
cordis.patch.yml) or--patchoverlay with explicit values.
| Env var | Used for | Default |
|---|---|---|
DSH_MEMORY_PATH |
vault directory | $DSH_HOME/memory-vault |
DSH_MEMORY_SERVER_DIR |
directory with server.py (MCP server) |
$DSH_HOME/memory-vault-server |
# run the MCP server standalone:
MEMORY_PATH=./memory-vault uv run --directory ./memory-vault-server python server.py
Vault
memory-vault/ is an OKF bundle: templates/ (per-type templates),
type-registry.yaml (source of truth for types), tag-vocabulary.json
(tag normalization). Runtime data (projects/, raw/, logs/, memory.db)
is created by the server on first use and excluded from git (.gitignore).
Architecture & diagrams
Interactive versions of the diagrams (standalone HTML, open in any browser):
- stack.html — architecture
- session-digest.html — dataflow
- mcp-tool-call.html — sequence
- capture-lifecycle.html — lifecycle
Editable specs live in docs/diagrams/*.json (generated with
archify). Full write-up:
docs/architecture.md; index: docs/README.md.
Repository layout
packages/memory-mcp/ # cordis bundle: MCP stdio client to the vault
packages/memory-auto/ # cordis bundle: automatic session digest
memory-vault-server/ # Python MCP server (SQLite + Markdown OKF)
memory-vault/ # vault starter (templates + type registry)
scripts/digest_session.py # optional standalone digest CLI (not used by the plugins)
examples/dev-memory.cordis.yml # memory-mcp
examples/dev-memory-auto.cordis.yml # memory-mcp + memory-auto
Layer order
dsh.profile.bundles(base + every installed bundle)$DSH_HOME/profiles/<name>/cordis.patch.yml$DSH_HOME/cordis.patch.yml--patchoverlays
Patch replaces config wholesale — it does not merge.
Troubleshooting pnpm
unable to open database file→ the pnpm store is not writable in a sandboxed environment. Use--store-dir ./.pnpm-storeon everypnpm installand ondsh plugin --profile X --store-dir ./.pnpm-store add ....dsh: pnpm failedwhen installing from GitHub → only applies to packages with apreparescript; copy the printed key into the profile'spnpm-workspace.yaml(allowBuilds). Note: the subpackages of this monorepo cannot be installed withgithub:...(pnpm has no git-subdirectory support) — use npm or a tarball.
Docs
docs/— public documentation (architecture + diagrams)- Releasing & version tags — which commit each
v*tag maps to - Your first plugin
- Build a tool
- Plugin configuration
- Package and install
Operate deliberately
Install and manage
Prerequisites and target Profile
Target: Web Profile
Delivery: Dsh Bundle Git — Luisarg03/dsh-memory-vault#e862b23967bbadf37c2d126797f0ec7070b2c8d5。
Verify, update, and remove
Show lifecycle commands
dsh plugin --profile web listCompatibility and access
DeepSeek Harness DSH bundles; memory Auto requires dsh Llm: Not declared in supplied evidence。
Review compatibility evidence ↗
Risk facts
Stores memory as Markdown and a SQLite FTS5 index under the configured vault path.
Evidence ↗Automatic digest capture uses the Harness LLM service; the default configuration selects deepseek-official and deepseek-v4-flash.
Evidence ↗Without uv on PATH, first boot may create a Python virtual environment and install requirements over the network.
Evidence ↗Evidence and editorial reviewManifest, Bundle patch, distribution and freshness
Immutable evidence
Review status and source activity
Treat this as a local-memory bundle with optional automatic capture: inspect its paths and LLM configuration before enabling it for sensitive sessions.
AI reviewed Sep 15, 2026, 2:14 PM UTC。GitHub facts last checked Sep 15, 2026, 2:14 PM UTC。
No material source change has been recorded since this evidence baseline.