> memra × hermes agent

give hermes agent a real memory.

memra is a native hermes agent memory provider. one command installs it. hermes then recalls relevant memories before each turn, persists what it learns, and keeps important context even after the window compresses. eu-hosted, privacy-first.

recall before every turn

hermes prefetches the memories relevant to your message — hybrid semantic + structured search, importance-ranked — so answers are grounded in what it already knows about you and your projects.

survives compression

when hermes compresses its context window, memra persists the about-to-be-discarded turns to long-term memory first. nothing important is lost — it stays recallable.

typed, durable memory

facts, events, preferences and decisions stored with type + importance. eu servers, your data stays yours. self-host memra and point the provider at your own instance.

‹ 01 ›
01

install the provider

one command drops the memra provider into ~/.hermes/plugins/memra/. requires hermes agent 0.11+ — check with hermes --version.

terminal
$ curl -fsSL https://raw.githubusercontent.com/usememra/hermes-memra/main/install.sh | bash
‹ 02 ›
02

connect your memra account

run the interactive picker, select memra, and paste your api key + project id from your dashboard.

interactive setup recommended
$ hermes memory setup    # select "memra"
or configure manually ~/.hermes/.env  ·  ~/.hermes/memra.json
$ hermes config set memory.provider memra
$ echo "MEMRA_API_KEY=memra_live_xxx" >> ~/.hermes/.env
$ cat > ~/.hermes/memra.json <<'JSON'
{
  "project_id": "proj_xxx",
  "tenant_id": "hermes-user",
  "capture_mode": "curated"
}
JSON

always pin tenant_id on a single-user install. it's the partition key for your memories — if cli, telegram and other platforms write to different tenants, they can't see each other's memory. the install script pins it for you; set it by hand here. self-hosting? add "base_url" to keep every memory on your own infrastructure, or "mode": "local" for a fully-local store with no api key.

‹ 03 ›
03

verify

confirm memra is the active memory provider. then just talk to hermes — it recalls and remembers automatically.

terminal
$ hermes memory status

> tools hermes gains

memra_search hybrid semantic + structured recall by meaning.
memra_remember store a durable fact, preference, or decision.
memra_profile overview of everything hermes knows about you.
‹ 04 ›
04

control what gets captured

memory is only useful if it stays sharp. capture_mode in memra.json decides how much hermes writes to memra on its own. the default is curated — signal in, noise out.

mode what memra stores
curated (default) explicit memra_remember facts, mirrored MEMORY.md/USER.md writes, pre-compress rescues, and one distilled digest per session. no per-turn firehose.
all everything curated stores, plus every completed turn — maximum recall, more noise.
off explicit memra_remember only. nothing is captured passively.

override per shell with MEMRA_CAPTURE_MODE=all, or set a recall floor with MEMRA_PREFETCH_MIN_IMPORTANCE=6 so only high-value memories auto-inject before a turn.

> keep your store healthy

# check for tenant fragmentation across platforms
$ python ~/.hermes/plugins/memra/scripts/memra_doctor.py
# merge an orphaned tenant back into your main one
$ python ~/.hermes/plugins/memra/scripts/migrate_tenant.py --from-tenant <orphan> --to-tenant hermes-user

ready to give hermes a memory?

free tier. eu-hosted. privacy-first. no credit card required. grab an api key, create a project, and run the install command above.