Skip to content

Feature: hierarchical per-profile hermes memory with upstream roll-up (Honcho-style) #1027

Description

@thinmintdev

Goal

Give the hermes agent per-profile memory (research/homelab/coder/default) that consolidates upstream into a global bank, inspired by Honcho's peer/representation + Dreamer roll-up model. Today all profiles write/read the single bank private__hermes (per-profile isolation doesn't exist; profiles differ only in model.default).

Target topology (Hindsight banks)

shared                         (cross-agent, unchanged)
private__hermes                (GLOBAL roll-up / default self-model)
├── private__hermes__research
├── private__hermes__homelab
└── private__hermes__coder

Banks auto-create on first write. Concept map: profile→bank (a facet/scope, not a Honcho (observer,observed) pair); memory_unit(observation/world)→Honcho conclusion; graph-extraction slot→deriver; a new scheduled roll-up→Honcho "Dreamer"; promoted summaries→"Peer Card".

Mechanism (recommended: read-union + scheduled roll-up)

  • Bank selection: launch each profile with HAL0_AGENT_ID=hermes__<profile> (plugin already honors it) → distinct private bank per profile. GA: move to declarative profiles/*/config.yaml header + provider.py sourcing agent_id from active profile (survives bootstrap --repair).
  • Read path: a request from hermes__<p> unions {private__hermes__<p>, private__hermes, shared} (server change; today union is hardwired agent-private + shared). Zero-staleness availability of profile facts.
  • Upstream consolidation: new hal0 memory rollup [--profile P] [--dry-run] [--since TS] — per profile bank: reflect/consolidate (dedup) → recall top-N salient units since a watermark → re-add into private__hermes with provenance tags ["rollup","src:<p>"] → post-consolidate. Scheduled hourly via timer, activity-gated (skip idle banks), serialized with graph extraction (both use the one rate-limited npu slot), tolerant of reflect 503 when the slot is cold.

Dedup/conflict

Promote reflect-summarized cards (not raw units) + watermarks + provenance to avoid paraphrase accumulation (cf. Honcho issue #729: embedding dedup only checks top_k=1 @0.95). Conflicts: recency-wins or both-with-scope-tag, encoded as a per-bank directive.

Phasing

  • P0: fix stale per-profile SOUL.md; add read-only hal0 memory banks/recall/reflect CLI wrappers; document topology.
  • P1 (MVP): per-profile HAL0_AGENT_ID; server read-union; hal0 memory rollup --dry-run; per-profile prompt prelude describing the 3-tier scheme.
  • P2 (GA): declarative config; real watermarked rollup + timer; per-bank directives; scope param on hal0_memory_add.
  • P3: synthesized Peer-Card doc injected cheaply on session start (Honcho get_context analogue).

Notes

Full design doc available; this is the condensed proposal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions