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.
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 bankprivate__hermes(per-profile isolation doesn't exist; profiles differ only inmodel.default).Target topology (Hindsight banks)
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)
HAL0_AGENT_ID=hermes__<profile>(plugin already honors it) → distinct private bank per profile. GA: move to declarativeprofiles/*/config.yamlheader +provider.pysourcing agent_id from active profile (survivesbootstrap --repair).hermes__<p>unions{private__hermes__<p>, private__hermes, shared}(server change; today union is hardwired agent-private + shared). Zero-staleness availability of profile facts.hal0 memory rollup [--profile P] [--dry-run] [--since TS]— per profile bank:reflect/consolidate(dedup) →recalltop-N salient units since a watermark → re-addintoprivate__hermeswith 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-limitednpuslot), tolerant ofreflect503 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-bankdirective.Phasing
hal0 memory banks/recall/reflectCLI wrappers; document topology.HAL0_AGENT_ID; server read-union;hal0 memory rollup --dry-run; per-profile prompt prelude describing the 3-tier scheme.scopeparam onhal0_memory_add.get_contextanalogue).Notes
/var/lib/hal0/.hermes/honcho.jsonalready wires a separate Honcho v3 cloud integration (workspacehal0) — distinct from local Hindsight banks; avoid naming collisions.Full design doc available; this is the condensed proposal.