Dual-layer memory for AI agents
Install local agent memory and verify retrieval.
zer0dex pairs a markdown memory index that people can inspect with local semantic retrieval for details an agent should look up before a model call.
$ zer0dex seed --source MEMORY.md
$ zer0dex serve --background
$ zer0dex query "Where does Atlas deploy?"Prerequisites and install
Use Python 3.11 or 3.12, Ollama serving locally at http://localhost:11434, and the nomic-embed-text and mistral:7b models. The package metadata accepts Python 3.11+, but only 3.11 and 3.12 are CI-tested for this preview.
$ python -m venv .venv
$ source .venv/bin/activate
$ pip install zer0dex==0.1.1
# In a separate terminal, if Ollama is not already running:
$ ollama serve
# Back in this terminal:
$ ollama pull nomic-embed-text
$ ollama pull mistral:7b
$ zer0dex checkcheck is read-only. Resolve every failed line before the first real seed or serve.
Seed, query, and stop
$ mkdir demo-memory && cd demo-memory $ printf '# Notes\n\n## Preference\nUse concise factual replies.\n' > notes.md $ zer0dex init --port 18429
Creates the config and storage directory in this project.
$ zer0dex seed --source notes.md $ zer0dex serve --port 18429 --background $ zer0dex query 'What reply style is preferred?' --port 18429
A matching memory prints with a score. No match prints No relevant memories found.
$ zer0dex status --port 18429 $ zer0dex stop
status reports Status: ok. stop only signals a server that proves the recorded per-launch identity.
Configuration and reference
init writes .zer0dex.json. Defaults are collection zer0dex, user ID agent, port 18420, storage .zer0dex, and the two Ollama models above. Choose a collection, storage path, port, or user ID with init; back up the configuration and Chroma directory before changing models, dependencies, a collection name, or a store location.
Troubleshooting
check fails: start Ollama, pull the named models, and rerun it. seed --dry-run works but seed fails: dry-run only parses markdown; the real seed also needs the local runtime and models. Query cannot connect: start zer0dex serve for that project and port, then use status.
Moving or changing a store: use an explicit storage path and re-seed after an embedding-model change. A different embedding model is a migration boundary; do not assume vectors remain comparable.
Limits that affect deployment
The server is loopback-only and unauthenticated. The package does not run a pre-message hook or decide which retrieved text reaches a model. It does not promise complete recall, safe or true memories, stable backend ordering, hosted operation, or benchmark results for another workload.