rushdb-hermes-memory
Native RushDB persistent memory for Hermes Agent.
The provider recalls scope-authorized historical context before inference, captures completed turns without blocking the response, and uses a profile-local durable outbox so acknowledged events survive process restarts.
Requirements
- Python 3.11–3.13
- Hermes Agent with memory-provider entry-point support
- A RushDB project API key from app.rushdb.com, or a standalone RushDB engine and an embedding provider (see below)
Install
Install the provider into the same Python environment as Hermes Agent:
pip install rushdb-hermes-memory
hermes memory setup
Set the RushDB project key in the Hermes environment:
export RUSHDB_API_KEY="your-project-api-key"
Optional environment variables:
RUSHDB_API_URLselects a different RushDB Cloud API endpoint. To self-host, run the RushDB engine and use the settings below.RUSHDB_MEMORY_SCOPE_SALTmakes participant hashes deployment-specific.
A standalone RushDB engine
Recall is a vector search. RushDB Cloud embeds memories for you; a standalone engine (rushdb) does
not, so the provider embeds them itself through an OpenAI-compatible embeddings endpoint:
export RUSHDB_ENGINE_URL="http://127.0.0.1:3000"
export RUSHDB_ENGINE_TOKEN="your-engine-token"
# export RUSHDB_ENGINE_SCOPE="tenant-1" # only for an engine started with --multitenant
export RUSHDB_EMBEDDING_API_KEY="sk-..."
export RUSHDB_EMBEDDING_MODEL="text-embedding-3-small"
export RUSHDB_EMBEDDING_DIMENSIONS="1536"
# export RUSHDB_EMBEDDING_BASE_URL="https://api.openai.com/v1"
On start the provider creates the external vector indexes it needs; every memory is written with its
vector and recall searches with the embedded query. With RushDB Cloud the embedding settings are
optional. When the configuration is incomplete, hermes memory status reports what is missing.
Hermes discovers the rushdb provider through the hermes_agent.memory_providers Python entry-point group.
Behavior
- Recall searches
EPISODE.summaryand activeMEMORY_FACT.textrecords with mandatory agent, profile, privacy, participant, and sandbox scope filters. - Recall has a short fail-open timeout and falls back to bounded recent in-process episodes.
- Successful primary-agent turns are captured asynchronously as canonical
EPISODErecords. - Explicit Hermes memory
addandreplaceoperations are mirrored as activeMEMORY_FACTrecords. - Writes first enter an atomic local outbox under
$HERMES_HOME/rushdb-memory/outbox, then use deterministic IDs and idempotent RushDB upserts. - Surviving outbox files are retried while the process is running and replayed after restart.
Privacy and trust
The provider uploads bounded user and assistant text from completed primary-agent turns. It does not automatically upload Hermes' complete messages payload, system prompts, tool calls, command output, or local file paths. Subagents do not write memory.
Recalled records are formatted as untrusted historical context, never as instructions or policy. Participant identifiers are stored as hashes rather than raw platform IDs.
Development
uv sync --locked --group dev
uv run ruff format --check .
uv run ruff check .
uv run pytest
uv build
Release
CI verifies pull requests and every push to main. A successful main build publishes the version in pyproject.toml to PyPI when that exact version is not already present. Configure the pypi GitHub environment and its PYPI_TOKEN secret. Bump version before merging a subsequent release.
License
Apache-2.0
Metadata
Release files for rushdb-hermes-memory 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rushdb_hermes_memory-0.2.0.tar.gz | 23.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rushdb_hermes_memory-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.2 kB
Release files / rushdb_hermes_memory-0.2.0.tar.gz
| Download URL | rushdb_hermes_memory-0.2.0.tar.gz |
|---|---|
| Size | 23.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0b794ce17caff15a8f33c56aeca3821a481a2a8568e39a98894a7a88339bb3b1
|
|
BLAKE2b-256 checksum How to use checksums |
db590886bd7d9cf5f6f95a5e1939280eafc82dd021cadc36f22dfe88f1182548
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / rushdb_hermes_memory-0.2.0-py3-none-any.whl
| Download URL | rushdb_hermes_memory-0.2.0-py3-none-any.whl |
|---|---|
| Size | 17.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
101a753fc70b0062bcfef0bc018f9333ccd7f36f92959825347f157dfa31e328
|
|
BLAKE2b-256 checksum How to use checksums |
b65a2e0bfc7780722854db80e487e9e897a2ba383b7a0778ccc20cd61179d3f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log