Introduce the pm store: a unified, hash-verified package store that
replaces lazy_deps and the old installer's ad-hoc tool downloads.
Store tools are provisioned on PATH (ffmpeg, node/npm via pinned uv),
with a resumable 8-way downloader, verify() returning failure reasons,
and adopt() made EPERM-safe. chromium ships in the payload for every
target. The 3600-line install.sh is replaced by a staged bootstrapper
(heavy deps are pm's job after this); setup-hermes.sh, Dockerfile and
nix pin tables are rewired onto the store. Old install-script tests,
lazy_deps/managed_uv/build_info, and the ps1/bash installer test
batteries are removed with the machinery they tested.
Rebuilt from ethie/pm onto upstream/main (ac6c8028e0) after the
utf-8-sig sweep. 16 hot files (main also churned them) hand-merged:
platform adapters, main.py, electron/main.ts, tui_gateway/server.py,
cua_backend, installer-tests workflow, install.sh (full rewrite),
setup-hermes.sh, plugins doc.
RetainDB Memory Provider
Cloud memory API with hybrid search (Vector + BM25 + Reranking) and 7 memory types.
Requirements
- RetainDB account ($20/month) from retaindb.com
pip install requests
Setup
hermes memory setup # select "retaindb"
Or manually:
hermes config set memory.provider retaindb
echo "RETAINDB_API_KEY=your-key" >> ~/.hermes/.env
Config
All config via environment variables in .env:
| Env Var | Default | Description |
|---|---|---|
RETAINDB_API_KEY |
(required) | API key |
RETAINDB_BASE_URL |
https://api.retaindb.com |
API endpoint |
RETAINDB_PROJECT |
auto (profile-scoped) | Project identifier |
Tools
| Tool | Description |
|---|---|
retaindb_profile |
User's stable profile |
retaindb_search |
Semantic search |
retaindb_context |
Task-relevant context |
retaindb_remember |
Store a fact with type + importance |
retaindb_forget |
Delete a memory by ID |