Yogioo
dsh-agentmemory
dsh plugin bridging agentmemory REST API: memory_search / memory_remember / memory_forget / memory_health
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 14, 2026
- Updated
- Aug 14, 2026
Introduction
dsh-agentmemory
Agent-plane tool plugin: connects dsh (DeepSeek Harness) to an agentmemory persistent-memory REST API (rohitg00/agentmemory). No MCP, no skill+CLI indirection — four native tools registered directly on the harness tool runtime, each backed by one REST call.
Registered tools (visible to every agent after a dsh restart):
| Tool | Endpoint | Purpose |
|---|---|---|
memory_search | POST /agentmemory/search | semantic + keyword search over stored memories |
memory_remember | POST /agentmemory/remember | store a durable memory (type / concepts / files / ttlDays) |
memory_forget | POST /agentmemory/forget | delete by memoryId or sessionId |
memory_health | GET /agentmemory/health | connectivity + engine status check |
Quick install (from this repo)
Linux / macOS / Git Bash on Windows:
git clone https://github.com/Yogioo/dsh-agentmemory
cd dsh-agentmemory
./install.sh # agentmemory on the same machine
./install.sh --base-url https://<your-host>:9999 # link a REMOTE agentmemory
Windows (PowerShell):
git clone https://github.com/Yogioo/dsh-agentmemory
cd dsh-agentmemory
powershell -ExecutionPolicy Bypass -File install.ps1 # local
powershell -ExecutionPolicy Bypass -File install.ps1 -BaseUrl https://<your-host>:9999 # remote
Both installers are idempotent: they copy the plugin into
~/.dsh/profiles/node_modules/dsh-agentmemory/ and register the entry in
~/.dsh/profiles/web/cordis.patch.yml. Re-running never duplicates the
patch entry. No manual dependency linking is needed — dsh itself
maintains the flat fallback directory at every boot (one link per package
in the app's dependency closure: POSIX symlinks, Windows junctions — no
admin rights).
Replace
<your-host>with the hostname of your agentmemory server (for a same-machine install, omit--base-url/-BaseUrlentirely and the defaulthttp://localhost:3111is used).
Then make the secret reach the dsh process (systemd does not read
~/.bashrc) — add to /etc/systemd/system/dsh.service:
Environment=AGENTMEMORY_SECRET=<the agentmemory bearer secret>
then sudo systemctl daemon-reload && sudo systemctl restart dsh.
Verify: ask any agent to call memory_health, or
curl -s -H "Authorization: Bearer $AGENTMEMORY_SECRET" \
http://localhost:3111/agentmemory/health # local
curl -sk -H "Authorization: Bearer $AGENTMEMORY_SECRET" \
https://<your-host>:9999/agentmemory/health # remote
Manual install (fallback)
- Copy this directory to
~/.dsh/profiles/node_modules/dsh-agentmemory/(that flat fallback dir is where the dsh loader resolves out-of-tree plugins from). - (Optional) Symlink the peer deps from the global dsh install — usually
unnecessary, because dsh boot creates these links automatically:
DSH_PKG=$(dirname "$(dirname "$(readlink -f "$(command -v dsh)")")") ln -s "$DSH_PKG/node_modules/@deepseek-ai/dsh-tools" ~/.dsh/profiles/node_modules/@deepseek-ai/ ln -s "$DSH_PKG/node_modules/@deepseek-ai/schemastery" ~/.dsh/profiles/node_modules/@deepseek-ai/ - Add to
~/.dsh/profiles/web/cordis.patch.yml:- insert: - id: agentmemory name: dsh-agentmemory config: baseUrl: http://localhost:3111 apiKeyEnv: AGENTMEMORY_SECRET - Restart dsh.
Config (all optional)
| Key | Default | Meaning |
|---|---|---|
baseUrl | http://localhost:3111 | agentmemory REST base URL (use https://host:9999 for a remote one) |
apiKeyEnv | AGENTMEMORY_SECRET | env var holding the Bearer secret |
apiKey | '' | literal secret, takes precedence over apiKeyEnv |
apiKeyFile | ~/.agentmemory/.env | dotenv fallback when the env var is unset |
timeoutMs | 30000 | per-request timeout |
Secret resolution order: config.apiKey → process.env[apiKeyEnv] →
apiKeyFile (agentmemory's own ~/.agentmemory/.env).
Cross-platform notes
- Code: the plugin is pure Node ESM (
node:fs,node:os, globalfetch,AbortSignal.any) — no native modules, same code runs on Linux / macOS / Windows. - Fallback directory:
dshmaintains$DSH_HOME/profiles/node_modulesat every boot (one junction/symlink per package in its dependency closure), so on Windows noln/admin rights are ever needed —install.ps1only drops the plugin directory and patches the config. - Git Bash users on Windows:
install.shworks too; itslnsteps skip anything already present. - Restart: on Linux with systemd:
sudo systemctl restart dsh; on Windows: close and relaunchdsh web(or restart whatever service runs it). Config edits incordis.patch.ymlhot-reload; a fresh plugin install needs a process restart.
Notes
- Remote linking: agentmemory's REST endpoint is reachable over the
network (Nginx TLS + Bearer auth). Point
baseUrlathttps://<host>:9999and share the secret — the only access control is that bearer token, so treat it like a password. - Dependencies: imports only
@deepseek-ai/dsh-toolsand@deepseek-ai/schemastery; both live in dsh's own dependency closure and are linked into the fallback directory automatically at dsh boot — nopnpm installor network access needed at runtime. - Restart:
cordis.patch.ymlconfig edits hot-reload; plugin code changes need a dsh process restart. - Shared stores: with several machines on one memory store, tag
memory_rememberentries withproject/cwdand filter searches by them to keep namespaces tidy.
License
MIT — see LICENSE.