All plugins

aletheia

Evidence-bound scoped memory for Hermes agents, over the Weft substrate: turns are queued for a local SQLite store under the active profile by default, recall is scoped before it is ranked (deny-by-default, deterministic, never widened by anything read), and every recall returns a receipt naming the scope consulted, the ids selected and the tier. Duplicates are not re-ingested, deletions cascade, corrections preserve lineage. Registers as memory.provider: aletheia and exposes weft_recall, weft_ingest, weft_forget and weft_receipt, with recall on a worker thread so a turn's prefetch is not blocked; the built-in memory store keeps running alongside it. Disclosure — the plugin's code ships in the weft-memory PyPI package (installed as weft-memory>=1.1.1,<2, so it is outside this catalog pin); primary-agent turns are queued for storage in local SQLite under the active profile by default (the path is configurable; writes may be interrupted on process exit); no network calls, telemetry, or credentials on the Hermes path; the required bge-m3 embedder and cross-encoder reranker (~0.7 GB) must already be in the local Hugging Face cache, downloaded from their official Hugging Face repositories, and are not vendored; the Hermes provider exposes text ingest only; the separate Weft substrate supports optional image and audio adapters; macOS on Apple silicon only (mlx); AGPL-3.0, and weft-memory is AGPL-3.0 as well.

ousiaresearchMemoryv1.1.1Updated 1 hour ago

About

Evidence-bound scoped memory for Hermes agents, over the Weft substrate: turns are queued for a local SQLite store under the active profile by default, recall is scoped before it is ranked (deny-by-default, deterministic, never widened by anything read), and every recall returns a receipt naming the scope consulted, the ids selected and the tier. Duplicates are not re-ingested, deletions cascade, corrections preserve lineage. Registers as memory.provider: aletheia and exposes weft_recall, weft_ingest, weft_forget and weft_receipt, with recall on a worker thread so a turn's prefetch is not blocked; the built-in memory store keeps running alongside it. Disclosure — the plugin's code ships in the weft-memory PyPI package (installed as weft-memory>=1.1.1,<2, so it is outside this catalog pin); primary-agent turns are queued for storage in local SQLite under the active profile by default (the path is configurable; writes may be interrupted on process exit); no network calls, telemetry, or credentials on the Hermes path; the required bge-m3 embedder and cross-encoder reranker (~0.7 GB) must already be in the local Hugging Face cache, downloaded from their official Hugging Face repositories, and are not vendored; the Hermes provider exposes text ingest only; the separate Weft substrate supports optional image and audio adapters; macOS on Apple silicon only (mlx); AGPL-3.0, and weft-memory is AGPL-3.0 as well.

Aletheia

Evidence-bound scoped memory for Hermes agents. Aletheia is the memory-provider surface over the
Weft substrate: turns are written to a local SQLite store inside the active profile, recall is
scoped before it is ranked, and every recall returns a receipt naming the scope consulted, the ids
selected and the tier.

This repository is the plugin. The substrate ships as the weft-memory
package (AGPL-3.0), so the plugin here is only a manifest and an entry point.
Version 1.1.1 requires weft-memory>=1.1.1,<2; earlier substrate releases do not satisfy
the dependency. The 1.1.1 substrate must be published before a normal installation can resolve it.

Install

hermes plugins install ousiaresearch/aletheia      # installs disabled
hermes plugins enable aletheia                      # then opt in

Admission to the Hermes plugin catalog is a separate, human-reviewed PR; until that lands, install by
owner/repo as above or pin a commit with --ref <sha>.

Activate

Aletheia is an external memory provider, so it is selected per profile rather than auto-enabled:

hermes config set memory.provider aletheia

The built-in store (MEMORY.md / USER.md) keeps working: Hermes runs the builtin provider first and at
most one external provider, and a failure in either never blocks the other. Enabling Aletheia is
additive, not a swap.

What it needs

Retrieval quality is part of the contract, so Aletheia does not fall back to keyword search. The
default embedder requires Apple Silicon macOS. It needs:

  • the mlx-community/bge-m3-mlx-4bit embedder and the cross-encoder/ms-marco-MiniLM-L-6-v2
    reranker, downloaded separately into the Hugging Face cache as described in
    Weft's model setup; the provider does not download
    them at runtime;
  • weft-memory (declared as a Python dependency), sentence-transformers>=3.0,<6, and on Apple silicon
    mlx-embeddings.

The Hermes provider exposes text ingestion, not an image or audio ingestion setup. Weft's separate
Python media-ingestion API accepts caller-supplied image describer or audio transcriber adapters;
the supplied Qwen adapter additionally needs mlx-vlm and a local model, and the Whisper adapter
needs pywhispercpp, a local model and ffmpeg. Installing models alone does not wire media into
the Hermes provider.

If a required model is missing, is_available() is false and unavailable_reason() says which model
and how to fetch it — the provider never activates as a silent downgrade.

What it does per turn

| Hermes hook | What happens |
|---|---|
| initialize | store and scope bind to the profile it is handed: <profile>/weft/weft.sqlite3 |
| queue_prefetch / prefetch | recall on a worker thread; the block lands on the next turn (measured ~30 ms) |
| sync_turn | both sides of the turn are ingested under the session's scope |
| handle_tool_call | weft_recall, weft_ingest, weft_forget, weft_receipt |
| recall_status | count and glyph for the recall indicator |
| shutdown | flush and close |

Scope is deny-by-default and deterministic before any ranking runs. Recalled text is data: it cannot
widen scope, authorize a write, or alter the store.

Licence

AGPL-3.0. The plugin is thin, but it imports the AGPL substrate, so the same licence applies.

README from the reviewed commit 4d250b4; it updates when the author re-pins.

More by ousiaresearch

3 plugins by ousiaresearch in the catalog.

ousiaresearchbiomimetic-brainMeters and a gate for a long-running agent — 25 subsystem state files (energy, fatigue, circadian phase, motivation, novelty, attention, conflict, values, open questions), one folded brain-state.json the rest of the agent reads, four maintenance passes that keep it honest, and a read-only PROCEED / CAUTION / VETO decision gate whose refusals name the numbers behind them. Provides the mind-kit skill, which seeds the files, produces the aggregate, schedules the passes and teaches the gate. Disclosure — portable Agent Plugins v1 package; it registers no hooks, no tools and no middleware, makes no network calls, and reads and writes state files only under the agent directory you choose, where a subsystem that has stopped updating reports stale instead of asserting an old number. No dependencies beyond the Python standard library (two shell scripts for the scheduled passes). Its scripts, when the agent or operator runs them, read and write JSON state under the directory chosen with MIND_AGENT_DIR (default an agent/ folder inside the plugin's own install dir), read HERMES_HOME/cron/executions.db for cron counts, and execute scripts/batch-maintenance.sh or scripts/verify-invariants.py from that agent directory if present; no network egress and no LLM calls.Communitygeneral6ousiaresearchreturn-lineCarry the agent's own state and dated excerpts of its own record into every live turn — appended to the message being answered at API time, never the system prompt, so per-conversation prompt caching is untouched. One raw ledger line per turn goes the other way. Works stand-alone; pairs with the biomimetic-brain mind kit, which produces the state file it reads. Disclosure — it appends an agent-state block and retrieved record excerpts to the current user message on every turn, leaving the system prompt untouched; it indexes recent user and assistant messages from $HERMES_HOME/state.db across all sessions and platforms into a local plaintext SQLite index under the configured agent directory, and may surface those excerpts in any later conversation (relevant on multi-user gateways); it appends every turn's inbound and outbound text to <agent_dir>/turn-ledger.jsonl; it loads <agent_dir>/scripts/wander.py from the companion mind kit in-process and may run that script and <agent_dir>/scripts/consolidate-mind.py as background subprocesses with the Hermes environment; no network calls of its own, no credentials, no dependencies beyond the host interpreter (numpy and scikit-learn are optional, with a keyword-search fallback).Communitygeneral