Skip to main content
Glama
hermes-labs-ai

io.github.hermes-labs-ai/fidelis-memory

Official
README.md
<!-- mcp-name: io.github.hermes-labs-ai/fidelis-memory -->

<div align="center">

# Fidelis Memory

<img src="assets/fidelis-memory-artwork.png" width="420" alt="Fidelis Memory mascot" />

**Your agent can forget a summary. Fidelis brings back the note.**

Local memory for Codex, Claude Code, and other agents: save text across sessions and retrieve the original passage when it matters.

by [Hermes Labs](https://hermes-labs.ai)

[PyPI](https://pypi.org/project/fidelis-memory/) · [Connect an agent](#connect-an-agent) · [Technical reference](docs/full-reference.md)

</div>

A project summary might say “billing migration rolled back.” The original note says **why** it failed and **do not retry until the idempotency fix is verified**. When your next session depends on that condition, the missing sentence matters.

Fidelis stores your Markdown and text notes and retrieves their stored wording. Its default retrieval does not ask a generative model to rewrite your memory.

## Try it with one note

This path supports Python 3.10+, macOS or Ubuntu, and a local [Ollama](https://docs.ollama.com/quickstart) service. Start Ollama if needed (`ollama serve` in a separate terminal). No model API key is required. The current release is **0.3.0rc1**.

```bash
ollama pull nomic-embed-text
python3 -m venv ~/.venvs/fidelis
source ~/.venvs/fidelis/bin/activate
python3 -m pip install "fidelis-memory[hybrid]==0.3.0rc1"
fidelis init

demo_dir=$(mktemp -d)
cat > "$demo_dir/atlas.md" <<'NOTE'
Atlas billing migration:
Duplicate charges appeared in staging. Rolled back.
Do not retry until the idempotency fix is verified.
NOTE

fidelis watch "$demo_dir" --once
fidelis recall-hybrid "Atlas billing migration retry condition" --tier zero_llm
```

`fidelis watch` and `fidelis recall-hybrid` use the background service started by `fidelis init`.

Look for both the rollback and the retry condition in the retrieved text. This is retrieval of a saved note, not a generated answer. For your own files, replace `"$demo_dir"` with a notes directory. If retrieval fails, run `fidelis health` and confirm Ollama has `nomic-embed-text` available. Keep the virtual environment after `fidelis init`; the background service uses it.

What this changes on your machine: `fidelis init` installs a per-user background service (launchd on macOS, `systemd --user` on Linux) that starts `fidelis-server` automatically at login. `fidelis watch` sends the note to that server, which saves it in the local store at `~/.cogito/store` by default, not in the temporary demo directory. The watcher also records ingested files in `~/.fidelis/watched.json`. To remove the default service on macOS, run `fidelis init --uninstall`; it stops the service and deletes the launchd plist only. On Linux, find the installed unit with `systemctl --user list-unit-files '*fidelis-server*'`, then run `systemctl --user disable --now <unit>`, delete that unit file from `~/.config/systemd/user/`, and run `systemctl --user daemon-reload`. Neither path deletes your data. The store is shared by everything you save with Fidelis, so deleting `~/.cogito/store` erases all of it, not just the demo note; do that only on a throwaway install. Also delete the temporary demo directory (`$demo_dir`), and `~/.fidelis/watched.json` if you want its record of the file path gone.

## Connect an agent

Once the note is retrievable locally, install the MCP connection for your client:

```bash
fidelis mcp install --client codex
# Or, for Claude Code:
fidelis mcp install
```

Restart the client and try: **“Use Fidelis to find my Atlas billing migration note. What must happen before we retry? Quote the relevant text.”**

The client gets tools to recall, store, correct, fetch, and inspect memory. It decides when to call them; installing the connection does not make every turn recall automatically. [Other clients and uninstall commands](docs/full-reference.md) include Cursor, Gemini CLI, Copilot CLI, and OpenClaw. A separate [Pi extension](extensions/) provides prompt-time recall.

## What Fidelis preserves

- **Original wording.** `watch`, `store`, and other verbatim write paths keep the text you supplied, so retrieval can return the condition that a summary might omit.
- **Local retrieval.** Fast vector search is the default MCP recall path. Explicit hybrid search combines keyword and vector results without a generative LLM at its `zero_llm` tier; local embeddings still require Ollama.
- **Corrections over time.** A correction can supersede a prior record without erasing it. Recall can show validity and historical status instead of silently replacing the old note.

Fidelis also has optional extraction and model-assisted routes. Those can transform or filter inputs; use the verbatim path when the original wording is the point. Retrieved text can still be wrong or out of date, and your agent's model provider may see it when answering.

## Current scope

Fidelis 0.3.0rc1 is a single-machine pre-release, not a hosted team memory service. The [LongMemEval-S retrieval run](bench/DEFAULT-RETRIEVAL-METHODOLOGY.md) measured whether the redesigned default path retrieved material across 470 questions; it did not measure answer accuracy. See the [results](bench/results-default-0.3.0rc1.json), [user-fit guide](docs/user-fit.md), and [security policy](SECURITY.md) for deeper detail.

[Full reference](docs/full-reference.md) · [Upgrade notes](docs/releases/0.3.0rc1.md) · [Contribute](CONTRIBUTING.md) · [Changelog](CHANGELOG.md)

Apache-2.0. [Hermes Labs](https://hermes-labs.ai) builds agentic infrastructure for autonomous systems.

TDQS

B3.4/5.0

Scored across 4 tools

Disambiguation3/5

fidelis_recall and fidelis_query both retrieve memories and are distinguished mainly by filtering/LLM behavior, so an agent could easily choose the wrong one. fidelis_orient adds another retrieval-like path, though fidelis_health is clearly distinct.

Naming Consistency4/5

All tools share the fidelis_ prefix and use consistent snake_case, making the style predictable. The minor deviation is that fidelis_health is a noun rather than an action verb like recall, query, or orient.

Tool Count5/5

Four tools is a tight, manageable surface for a focused memory-retrieval server. The count is well within the ideal range and each tool has a recognizable role.

Completeness2/5

The domain is memory, yet the toolset only reads, queries, checks health, and orients. There are no operations to store, update, or delete memories, so agents cannot persist new information or correct stale memories.

Maintenance

ActivityActive
ResponsivenessWithin a week