This repository was archived by the owner on May 31, 2026. It is now read-only.
Releases: basicmachines-co/hermes-basic-memory
Releases · basicmachines-co/hermes-basic-memory
v0.3.2
Fixed
- Let Basic Memory v0.21.3 self-route workspace-qualified identifiers and URLs. Hermes no longer injects its configured default project into
bm_read,bm_edit,bm_delete,bm_move, orbm_contextcalls when the identifier/URL is already workspace-qualified, such aspersonal/main/...,memory://personal/main/..., or an organization workspace slug with a 32-character hash suffix. This preserves Basic Memory Cloud's workspace-aware routing while keeping the existing default-project behavior for short/local identifiers.
v0.3.1
Changed
- Documented the Hermes Agent v0.14.0-compatible
/bm-*slash-command monkeypatch.MONKEYPATCH.mdnow distinguishes the plugin's runtime version from the Hermes Agent-side compatibility patch: pluginv0.3.0remains the correct runtime release for Hermes Agentv0.13.x, while Hermes Agentv0.14.0still needs the updated two-part core patch so gateway startup command discovery loads the active exclusive memory provider and the memory-provider collector delegatesregister_command/register_skill. - Clarified install guidance for users and agents. The README known-issue section now points Hermes
v0.13.xandv0.14.0users at the compatibility matrix inMONKEYPATCH.md, so agents do not mistake a plugin update for the required Hermes Agent core patch.
Notes
- This is a documentation/compatibility-instructions release only. It does not change the plugin runtime code or Basic Memory data behavior. The plugin remains backward-compatible with Hermes Agent
v0.13.x; the new documentation explains how to patch Hermes Agentv0.14.0until the upstream Hermes fix ships.
v0.3.0
Added
- Per-call project routing on every
bm_*tool. All eight tools now accept optionalproject(name) andproject_id(UUID frombm_projects) parameters. The agent can write or read against a project other than the Hermes-configured one — useful when the user asks to write into a different cloud project (e.g. a personalmainproject) without reconfiguring the plugin.project_idtakes precedence overproject; both fall back to the configured default when omitted. Workspace routing is handled transparently by BM viaproject_id— no separate workspace parameter is needed. bm_projectsandbm_workspacesagent tools. Promotes the discovery logic previously available only as/bm-projectand/bm-workspaceslash commands to agent-facing tools.bm_projectsreturns JSON withnameandexternal_id(UUID) per project so the agent can hand the UUID tobm_write/bm_read/ etc. viaproject_id— the unambiguous form across cloud workspaces.bm_workspaceslists BM Cloud workspaces (name, type, role, default flag). Together with per-call routing, these unblock the workflow Drew's friction note flagged: agent picks the right project + workspace before writing, instead of silently operating against the active Hermes memory project.- SKILL.md cross-project workflow documenting the discovery → route → write → verify recipe end-to-end. Adds a "Permalinks" section covering the three canonical shapes (short, project-qualified, workspace-qualified) and the round-trip property where
bm_write's returned permalink self-routes for follow-up reads. A "Cross-project routing" section explainsproject(including workspace-qualified syntax like"personal/main") vsproject_idand when to use each. Also backfillsbm_recentdocumentation (the tool shipped in 0.2.0 but the skill hadn't been updated). - SKILL.md "Further reading" section linking to the official docs at docs.basicmemory.com, with raw-markdown URLs (
/raw/<path>.md) the agent canWebFetchon demand for deeper material — knowledge format, observations & relations, memory URL wildcards, semantic search, cloud routing, BM's full MCP tool surface, and thellms.txtsitemap.
Notes
- Addresses the routing, discovery, and documentation gaps in the real-world note "Hermes Basic Memory Cloud Task Experience." A proposed
bm_importtool was evaluated and dropped —read_file+bm_writealready composes the same operation with no new capability, at the cost of one more tool in the surface. - The slash commands
/bm-projectand/bm-workspacestill exist and behave identically — they continue to calllist_memory_projects/list_workspacesdirectly via the actor. No behavior change for human use.
v0.2.2
Full Changelog: v0.2.1...v0.2.2
v0.2.1
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Added
- Plugin-owned
/bm-*slash commands for CLI/gateway sessions. Eight commands give humans direct memory-graph access without going through the agent:/bm-search,/bm-read,/bm-context,/bm-recent,/bm-status,/bm-remember,/bm-project,/bm-workspace. Closes #2. bm_recenttool wrapping BM'srecent_activity. Surfaces notes updated within a timeframe (7ddefault, accepts natural language like"2 weeks"or"yesterday"). Agent-facing and reused by/bm-recent.remember_folderconfig key (default"bm-remember"). Separate fromcapture_folderso manual captures via/bm-rememberdon't intermix with auto-generated session transcripts. Notes are taggedmanual-capturefor further disambiguation.
Fixed
ctx.register_skill(...)was silently no-opping since 0.1.5 in real Hermes installs. Hermes loads memory-provider plugins through a stripped-down_ProviderCollectorcontext (plugins/memory/__init__.py) that captures onlyregister_memory_provider;register_skillandregister_commandare not delegated. The plugin now writes directly toPluginManager._plugin_commandsand_plugin_skills, matching the entry shape and name normalizationPluginContext.register_command/register_skillproduce. This makes both the new slash commands and the bundled SKILL.md work in current Hermes installs. The clean fix lives upstream — a small patch to teach_ProviderCollectorto delegate — and once that lands, the reach-in becomes a redundant double-write of identical entries. Forward-compatctx.register_command/ctx.register_skillcalls remain in place for the future code path.
Notes
/bm-rememberderives the title from the first non-empty line of the input, trimmed to 80 chars; falls back toNote YYYY-MM-DD HHMM UTC./bm-workspaceshort-circuits in local mode with a one-line explanation. Workspaces are a BM Cloud concept.- Mid-session project/workspace switching is intentionally not supported in 0.2.0 — auto-capture would land in unexpected places. Tracked as a follow-up.
v0.1.7
Changed
- Stronger nudge in
system_prompt_block()to steer agents toward thebm_*tools instead of shelling out tobmCLI. Pre-v0.1.7 the prompt listed the tools neutrally; given Claude/Hermes models' heavy training-data exposure tobm tool ...CLI patterns, neutral language wasn't enough — agents reached for the shell by reflex, paying 1-2s of cold-start per call instead of ~0.1s through our persistent MCP connection. New prompt is explicit ("Use thebm_*tools below directly — do not shell out to thebmCLI") and gives a one-line latency rationale so the model has a reason to follow it. SKILL.mdmirrors the directive with a "Usebm_*, not thebmCLI" section + a tool-vs-CLI table.
Added
- Regression test
test_system_prompt_block_steers_away_from_clilocks in the directive language so future prompt edits don't accidentally weaken it.
v0.1.6
Fixed
bm_*tools were never registered with Hermes'sMemoryManager._tool_to_provider.get_tool_schemas()was gated onself._initialized, but Hermes captures the schema list at register time — beforeinitialize()runs. The gate caused every session to start with zero tools registered for our provider, so every LLM-issuedbm_search(and friends) returned"Unknown tool: bm_search"from MemoryManager's dispatch. Symptoms were asymmetric: prefetch (recall injection) worked because it's invoked per-turn after init, but tool calls didn't. Schemas are static — they now return unconditionally, withhandle_tool_call()doing the runtime "is the actor ready?" gate.- Regression test pins this so we don't reintroduce it:
test_get_tool_schemas_unconditionalassertsget_tool_schemas()returns all 7 schemas on a fresh, uninitialized provider.
v0.1.5
Added
- Bundled
SKILL.mdis now auto-registered viactx.register_skill("basic-memory", ...)during plugin load. No more manual symlink to~/.hermes/skills/. The skill is opt-in (resolvable viaskill:view basic-memory:basic-memory); always-on agent guidance still flows throughsystem_prompt_block().
Changed
- README rewritten for community install. Lead command is now
hermes plugins install basicmachines-co/hermes-basic-memory. Clone-and-symlink instructions moved to the Development section. - Added GitHub Actions CI: unit tests on push and PR.
- Added this CHANGELOG.
v0.1.4
Added
_uv_binary_path()and_install_bm_via_uv(). Whenbmis missing from the host, the plugin runsuv tool install basic-memory --quietonce at firstinitialize(). The bm binary lands at~/.local/bin/bm— the same canonical path a manualuv tool install basic-memoryproduces, so subsequent manual installs are no-ops rather than creating a second install.- 8 new unit tests covering
is_available()with bm/uv combinations, the install subprocess (success / non-zero exit / OSError / no-uv), andinitialize()install-or-not branching.
Changed
is_available()now returnsTruewhen eitherbmis on disk oruvis on disk (we can install the missing CLI ourselves).- README's prerequisites section: dropped manual basic-memory install requirement; added the one-time ~10s cold-start note.