177 lines
6.9 KiB
Markdown
177 lines
6.9 KiB
Markdown
|
|
---
|
|||
|
|
name: holographic-memory
|
|||
|
|
description: "Configure and use Holographic as Hermes Agent's memory provider — local SQLite, FTS5 search, trust scoring, HRR algebra. Covers setup, migration from other providers, tool usage, and cleanup."
|
|||
|
|
version: 1.0.0
|
|||
|
|
author: Hermes Agent
|
|||
|
|
license: MIT
|
|||
|
|
metadata:
|
|||
|
|
hermes:
|
|||
|
|
tags: [holographic, memory, sqlite, local, migration, hermes]
|
|||
|
|
related_skills: [hermes-agent, hermes-config-bulk-update]
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Holographic Memory — Local SQLite Provider for Hermes Agent
|
|||
|
|
|
|||
|
|
Holographic is Hermes' zero-dependency local memory provider. It stores facts in a local SQLite database with FTS5 full-text search, trust scoring, and HRR (Holographic Reduced Representations) for compositional algebraic queries. No API keys, no daemon, no external services.
|
|||
|
|
|
|||
|
|
## When to Use
|
|||
|
|
|
|||
|
|
- Setting up Holographic as the memory provider
|
|||
|
|
- Migrating from Hindsight (or any other provider) to Holographic
|
|||
|
|
- Understanding Holographic's tools and capabilities
|
|||
|
|
- Troubleshooting Holographic memory issues
|
|||
|
|
|
|||
|
|
**Memory system roles:** Holographic is the real-time, always-working, automatic memory provider — it handles cross-session recall via `fact_store`. The agent searches Holographic freely and automatically. Qdrant `memories` collection is a shared long-term archive across all profiles, auto-populated by a Holographic sync cron job. The agent does NOT search Qdrant unless explicitly told to — it's write-only from the agent's perspective. See `/home/n8n/workspace/general/new_holographic.md` for the full Holographic→Qdrant sync design.
|
|||
|
|
|
|||
|
|
## Quick Setup
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Interactive wizard (easiest)
|
|||
|
|
hermes memory setup # select "holographic"
|
|||
|
|
|
|||
|
|
# Or directly
|
|||
|
|
hermes config set memory.provider holographic
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Verify:
|
|||
|
|
```bash
|
|||
|
|
hermes memory status
|
|||
|
|
# Should show: Provider: holographic, Status: available ✓
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Migration from Hindsight
|
|||
|
|
|
|||
|
|
Complete removal + switch to Holographic:
|
|||
|
|
|
|||
|
|
### 1. Switch provider
|
|||
|
|
```bash
|
|||
|
|
hermes config set memory.provider holographic
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Kill Hindsight daemon
|
|||
|
|
```bash
|
|||
|
|
pkill -f hindsight
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Uninstall Hindsight packages
|
|||
|
|
```bash
|
|||
|
|
pip uninstall hindsight hindsight-all hindsight-client -y
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Clean profile directories
|
|||
|
|
```bash
|
|||
|
|
# Remove hindsight config dirs from all profiles
|
|||
|
|
find ~/.hermes/profiles -maxdepth 3 -name 'hindsight' -type d -exec rm -rf {} + 2>/dev/null
|
|||
|
|
# Remove hindsight log files
|
|||
|
|
find ~/.hermes/profiles -maxdepth 3 -name 'hindsight-embed.log' -type f -exec rm -rf {} + 2>/dev/null
|
|||
|
|
# Remove base hindsight dir
|
|||
|
|
rm -rf ~/.hermes/hindsight
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. Strip HINDSIGHT env vars
|
|||
|
|
```bash
|
|||
|
|
# From base .env
|
|||
|
|
sed -i '/^HINDSIGHT/d' ~/.hermes/.env
|
|||
|
|
# From all profile .env files
|
|||
|
|
for f in ~/.hermes/profiles/*/.env; do
|
|||
|
|
sed -i '/^HINDSIGHT/d' "$f"
|
|||
|
|
done
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. Clean venv leftovers
|
|||
|
|
```bash
|
|||
|
|
# Remove site-packages
|
|||
|
|
rm -rf ~/.hermes/hermes-agent/venv/lib/python3.11/site-packages/hindsight*
|
|||
|
|
rm -rf ~/.hermes/hermes-agent/.venv/lib/python3.11/site-packages/hindsight*
|
|||
|
|
# Remove binaries
|
|||
|
|
rm -f ~/.hermes/hermes-agent/venv/bin/hindsight-*
|
|||
|
|
rm -f ~/.hermes/hermes-agent/.venv/bin/hindsight-*
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7. Verify
|
|||
|
|
```bash
|
|||
|
|
hermes memory status
|
|||
|
|
grep -r 'HINDSIGHT' ~/.hermes/.env ~/.hermes/profiles/*/.env 2>/dev/null # should return nothing
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Configuration
|
|||
|
|
|
|||
|
|
Config lives in `config.yaml` under `plugins.hermes-memory-store`:
|
|||
|
|
|
|||
|
|
| Key | Default | Description |
|
|||
|
|
|-----|---------|-------------|
|
|||
|
|
| `db_path` | `$HERMES_HOME/memory_store.db` | SQLite database path |
|
|||
|
|
| `auto_extract` | `false` | Auto-extract facts at session end |
|
|||
|
|
| `default_trust` | `0.5` | Default trust score (0.0–1.0) |
|
|||
|
|
|
|||
|
|
Minimal config — Holographic works out of the box with zero additional settings.
|
|||
|
|
|
|||
|
|
## Tools
|
|||
|
|
|
|||
|
|
Holographic provides two tools:
|
|||
|
|
|
|||
|
|
### `fact_store` — 9 actions
|
|||
|
|
|
|||
|
|
| Action | Description |
|
|||
|
|
|--------|-------------|
|
|||
|
|
| `add` | Store a new fact |
|
|||
|
|
| `search` | FTS5 full-text search |
|
|||
|
|
| `probe` | Entity-specific algebraic recall (all facts about a person/thing) |
|
|||
|
|
| `related` | Find facts related to a given fact |
|
|||
|
|
| `reason` | Compositional AND queries across multiple entities |
|
|||
|
|
| `contradict` | Automated detection of conflicting facts |
|
|||
|
|
| `update` | Update an existing fact |
|
|||
|
|
| `remove` | Delete a fact |
|
|||
|
|
| `list` | List all facts |
|
|||
|
|
|
|||
|
|
### `fact_feedback` — Trust scoring
|
|||
|
|
|
|||
|
|
Rate facts as helpful or unhelpful. Trust scores adjust asymmetrically:
|
|||
|
|
- Helpful: +0.05
|
|||
|
|
- Unhelpful: -0.10
|
|||
|
|
|
|||
|
|
This pushes the store toward self-correction over time.
|
|||
|
|
|
|||
|
|
## Unique Capabilities
|
|||
|
|
|
|||
|
|
- **`probe`** — entity-specific algebraic recall. Ask "what do we know about X?" and get all facts about that entity.
|
|||
|
|
- **`reason`** — compositional AND queries. "What do we know about X AND Y?" combines multiple entity probes.
|
|||
|
|
- **`contradict`** — automatic conflict detection. Finds facts that disagree with each other.
|
|||
|
|
- **Trust scoring** — memories confirmed repeatedly gain weight; contradicted memories lose weight.
|
|||
|
|
|
|||
|
|
## Architecture
|
|||
|
|
|
|||
|
|
- **Storage:** Local SQLite with FTS5 extension
|
|||
|
|
- **Retrieval:** HRR (Holographic Reduced Representations) — algebraic rather than pure semantic similarity
|
|||
|
|
- **Dependencies:** None (SQLite is always available). NumPy optional for HRR algebra.
|
|||
|
|
- **Cost:** Free
|
|||
|
|
- **Data location:** `$HERMES_HOME/memory_store.db` (profile-scoped)
|
|||
|
|
|
|||
|
|
## Profile Isolation
|
|||
|
|
|
|||
|
|
Each profile gets its own SQLite database at `$HERMES_HOME/memory_store.db`. Since `$HERMES_HOME` differs per profile, data is naturally isolated.
|
|||
|
|
|
|||
|
|
## Comparison with Hindsight
|
|||
|
|
|
|||
|
|
| Dimension | Holographic | Hindsight |
|
|||
|
|
|-----------|-------------|-----------|
|
|||
|
|
| Storage | Local SQLite | Local PostgreSQL or Cloud |
|
|||
|
|
| Dependencies | None | hindsight-client, daemon, LLM |
|
|||
|
|
| Setup | One config line | Config + daemon + bank API |
|
|||
|
|
| Retrieval | FTS5 + HRR algebra | Semantic + keyword + graph + temporal |
|
|||
|
|
| Trust model | Explicit trust scoring | Observations + entity resolution |
|
|||
|
|
| Best for | Local-only, zero-dependency | Rich structured memory, multi-agent |
|
|||
|
|
|
|||
|
|
## Pitfalls
|
|||
|
|
|
|||
|
|
- **Holographic is local-only.** No cloud sync, no multi-agent shared memory. Each profile is fully isolated.
|
|||
|
|
- **No automatic fact extraction.** Unlike Hindsight (which extracts facts from conversation turns), Holographic relies on the agent explicitly using `fact_store add`. Set `auto_extract: true` to enable session-end extraction.
|
|||
|
|
- **Trust scoring requires feedback.** Without `fact_feedback` calls, all facts stay at `default_trust` (0.5). The system doesn't self-correct without explicit feedback.
|
|||
|
|
- **FTS5, not semantic search.** `fact_store search` uses SQLite FTS5 (full-text), not vector embeddings. Exact and near-exact matches work well; conceptual similarity does not.
|
|||
|
|
- **No daemon to manage.** This is a feature, not a bug — but if you're used to checking daemon health, there's nothing to check. If memory isn't working, check `hermes memory status` and the SQLite file.
|
|||
|
|
|
|||
|
|
## References
|
|||
|
|
|
|||
|
|
- `references/hindsight-migration-checklist.md` — Step-by-step migration from Hindsight to Holographic
|
|||
|
|
- `references/holographic-qdrant-sync.md` — Design for syncing Holographic facts to the shared Qdrant `memories` collection across all profiles
|