hermes-itsuki
Itsuki memory for Hermes Agent: bounded recall before every real turn, exactly-once capture after every settled one.
Status: unpublished. This package has not been released to PyPI. The install commands below will not work yet.
What it does
- Recalls before the turn. One bounded lookup per genuinely new human turn, injected as clearly-marked untrusted data. Trivial prompts ("ok", "thanks") cost nothing at all.
- Captures after the turn. The user's message and the assistant's answer, written to a durable spool before any network call, then delivered under a content-derived idempotency key so retries and replays collapse into one memory.
- Fails open. A memory outage costs context, never the answer. The turn proceeds untouched.
Requirements
| Hermes Agent | 0.19.0 or newer |
| Python | 3.11 – 3.13 (the host's own range) |
| Runtime dependencies | itsuki only |
Install
pip install hermes-itsuki
hermes-itsuki install
hermes memory setup # choose itsuki, paste your key
hermes-itsuki install copies the provider into $HERMES_HOME/plugins/itsuki/
and makes sure the itsuki SDK is importable by Hermes. That location is not an
implementation detail: hermes-agent 0.19.0 has no entry-point discovery at all,
and the official installer's update path (git pull + uv sync --locked)
prunes anything not in the host's own lockfile. Deploying outside the venv is
what makes the provider survive hermes update.
Commands
| Command | What it does |
|---|---|
hermes-itsuki install |
Deploy (or refresh) the provider and the SDK |
hermes-itsuki doctor |
Check every piece; --fix reinstalls a pruned SDK |
hermes-itsuki uninstall |
Remove the provider, keep your pending memories |
hermes-itsuki uninstall --purge |
Also delete itsuki.json and the spool |
The agent can also call two read-only tools: itsuki_recall and
itsuki_status.
Configuration
hermes memory setup prompts for everything. The key is a secret field, so
Hermes stores it in ~/.hermes/.env as ITSUKI_API_KEY; this package only ever
reads it from the environment. Everything else lands in
$HERMES_HOME/itsuki.json:
| Key | Default | Meaning |
|---|---|---|
base_url |
https://itsuki.app |
Service address |
user_id |
— | Optional sub-space, or a namespace on a gateway |
capture |
auto |
off disables automatic capture entirely |
recall |
auto |
off disables automatic recall entirely |
What is deliberately not done
- No memory-writing tool. The agent can read, never write, update, or delete. Automatic capture already stores what the person actually saw; a model-callable write would put model-authored text into durable memory with no human attribution.
- Nothing is contributed to context compression.
on_pre_compressreturns nothing on purpose: its return value goes into a model prompt, and feeding stored content there would bypass the very fence that makes recalled memory safe. - Subagent work is not captured. Hermes runs delegations with
skip_memory=Trueand gives them no provider session; the parent's own settled turns are captured normally. queue_prefetchis a no-op. The host passes it the turn that just finished, so warming a cache with it would either answer the next question with the previous one's memories or spend a second lookup for nothing.
Honest limits
- Echo suppression is bounded. Text we injected is not written back while its fingerprint is live — up to 512 entries, up to 30 minutes. After eviction or expiry the same text can be captured again, and paraphrases were never covered.
- The spool is bounded. 64 envelopes, 8 MiB, 14 days. Past that the oldest
is dropped and the loss is counted and reported by
doctor— durable within documented bounds, not lossless. - Key rotation orphans pending work. Envelopes are partitioned by a one-way hash of the credential, so a re-keyed install never drains yesterday's conversations into a different project. Those envelopes are quarantined and counted rather than delivered.
- Uninstall leaves the SDK. Package metadata cannot prove nothing else in
that environment imports
itsuki, so removing it would be a guess.
Licence
Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hermes_itsuki-0.1.0.tar.gz.
File metadata
- Download URL: hermes_itsuki-0.1.0.tar.gz
- Upload date:
- Size: 40.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
681b6c27aaab5b7fae8fc485e066c92a7355cf5de8c8bf94b135180c16cdc9d3
|
|
| MD5 |
3b5b712298b722106bf710a96637df00
|
|
| BLAKE2b-256 |
dcb30a8ae9b18890b1ecab683f1e692ee14a5f33a0e5b1798d8b3b0d71db522e
|
Provenance
The following attestation bundles were made for hermes_itsuki-0.1.0.tar.gz:
Publisher:
publish-pypi.yml on 12ziyad/universal-memory-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_itsuki-0.1.0.tar.gz -
Subject digest:
681b6c27aaab5b7fae8fc485e066c92a7355cf5de8c8bf94b135180c16cdc9d3 - Sigstore transparency entry: 2489140319
- Sigstore integration time:
-
Permalink:
12ziyad/universal-memory-engine@fdb09d0705777130d95ecb0a159ae29303332e48 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/12ziyad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@fdb09d0705777130d95ecb0a159ae29303332e48 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file hermes_itsuki-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hermes_itsuki-0.1.0-py3-none-any.whl
- Upload date:
- Size: 47.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a189b70b5cb07aebfb5ac3cbffcef759a6e5e81abd9f87fef0adbf346d97ac8e
|
|
| MD5 |
8ea78c724136458160df97f20d65cc83
|
|
| BLAKE2b-256 |
80f115e6a41d07c207ae92e165515e9dac01728992c6608f421fd42aa9697b80
|
Provenance
The following attestation bundles were made for hermes_itsuki-0.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on 12ziyad/universal-memory-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_itsuki-0.1.0-py3-none-any.whl -
Subject digest:
a189b70b5cb07aebfb5ac3cbffcef759a6e5e81abd9f87fef0adbf346d97ac8e - Sigstore transparency entry: 2489140321
- Sigstore integration time:
-
Permalink:
12ziyad/universal-memory-engine@fdb09d0705777130d95ecb0a159ae29303332e48 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/12ziyad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@fdb09d0705777130d95ecb0a159ae29303332e48 -
Trigger Event:
workflow_dispatch
-
Statement type: