Generated banner for zer0dex
Generated logo for zer0dex

zer0dex

Memory frameworkOfficial Hermes Labs project

Created by Hermes Labs

Published in hermes-labs-ai/zer0dex. Publisher page

64 GitHub stars

What it is

A local dual-layer memory pattern for AI agents: a compact, human-readable markdown index paired with semantic retrieval from a local vector store, queried before each message. For cross-project recall where flat memory files or vector-only RAG fall short. Local-first. Reference implementation.
— the description by Hermes Labs

AutoGineer overview, from the brain’s own files

zer0dex is a reference implementation for a local-first memory architecture designed to help AI agents manage long-term recall without overwhelming their context window. It utilizes a two-layer approach: a compact, human-editable Markdown index that provides a high-level map of stored information, and a local vector store that handles semantic retrieval of detailed memories. By providing a CLI and a loopback HTTP server, it allows developers to integrate persistent memory into their agents by querying the server before model requests. It is built for developers who need to manage growing archives of notes or project context locally, leveraging tools like Ollama, mem0, and Chroma.

How it works

Memory model: Vector store

AutoGineer overview, from the brain’s own files

The system operates through two distinct layers. The Markdown index acts as a human-readable map of projects and categories that can be kept in the agent's context. The local memory store, powered by a vector database, holds the full details of the memories. Users seed the system from markdown files, and the agent host interacts with a local HTTP server to query relevant information based on semantic meaning before generating responses.

Folders
FolderRoleFiles
.githubagent-config7
assetsattachments7
docsdocs3
srcsource-code5
teststests4
.agentsfolder1
evalfolder3

Requirements

Runtimes: Python >=3.11

Databases: Chroma

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)

Set it up

  1. Not scanned by AutoGineerIts dependencies are installed by pip or uv when you run it and were not scanned by AutoGineer (3 declared). https://pypi.org/project/zer0dex/
  2. Created by Hermes Labs. Published in hermes-labs-ai/zer0dex. Licence: Apache License 2.0.

Usage

AutoGineer overview, from the brain’s own files

  • Integrate memory into local AI agents
  • Manage long-term project recall
  • Seed agent memory from existing markdown notes
  • Perform semantic search over local memory stores
“Where does Project Atlas deploy?”
The agent queries the zer0dex server and retrieves the specific deployment target stored in the vector database.
“List all active project categories.”
The agent reads the human-editable Markdown index to provide a summary of current project categories.

Documentation by Hermes Labs

<div align="center">

<picture> <source media="(prefers-color-scheme: dark)" srcset="assets/zer0dex-hero-white-background.jpg"> <source media="(prefers-color-scheme: light)" srcset="assets/zer0dex-hero-black-background.jpg"> <img src="assets/zer0dex-hero-black-background.jpg" alt="zer0dex by Hermes Labs" width="100%"> </picture>

zer0dex

Give an agent long-term recall without loading every note into its prompt.

A readable Markdown index shows what the agent knows. A local vector store retrieves the details when they matter.

by Hermes Labs

PyPI · CLI reference · HTTP API

</div>

Your agent knows the project name, but the deployment decision it needs is buried in months of notes. Putting the entire archive in its context is expensive and hard to navigate; a vector store alone gives you no simple map of what's in it. zer0dex pairs a short index you can read and edit with semantic search over the underlying memories.

Try it locally

Requires Python 3.11 or 3.12 and Ollama running on your machine. Start Ollama first if it is not already serving at http://localhost:11434.

mkdir zer0dex-demo && cd zer0dex-demo
python3 -m venv .venv
source .venv/bin/activate
python -m pip install zer0dex
ollama pull nomic-embed-text
ollama pull mistral:7b

printf '# Memory\n## Project Atlas\n- Deployment target: staging\n' > MEMORY.md
zer0dex check
zer0dex init
zer0dex seed --source MEMORY.md
zer0dex serve --background
zer0dex query "Where does Project Atlas deploy?"

The last command returns matching stored memories if extraction and retrieval succeeded. Run zer0dex stop when finished. The configuration and store live in the current directory (.zer0dex.json and .zer0dex/); use a disposable directory for a trial. If check fails, confirm that Ollama is running and both models were pulled before seeding.

How the two layers work

LayerWhat it gives you
Markdown indexA compact, human-editable map of projects, categories, and durable pointers. Keep this in the agent's context.
Local memory storeThe fuller details, retrieved by meaning when the agent needs them.

The CLI can seed memories from Markdown, add more text, and query a loopback HTTP server. Your agent host calls POST /query before a model request and decides which matches to include. zer0dex supplies the server and CLI; it does not install an automatic hook into your agent. A small TypeScript host adapter shows that integration point.

The default path uses local Ollama models for embeddings and memory extraction, with mem0 and Chroma for storage. You can inspect the index directly and keep the retrieval store on your machine.

When to use it

zer0dex is a fit for developers building a local, long-running agent whose notes have outgrown one MEMORY.md, but who still want a readable map of what was saved. It is a reference implementation of this two-layer pattern, currently in the 0.1.x developer-preview line. The package is not a hosted team service or a complete agent framework.

In the bundled 86-memory, 97-case evaluation, the combined approach reached 91.2% average recall and 80.0% cross-reference recall. This is one test workload; try your own notes and queries before choosing a retrieval strategy.

Go further

Apache-2.0. Hermes Labs builds agentic infrastructure for autonomous systems.

docs/cli.md

CLI contract (developer preview)

zer0dex stores memories locally by default, and its server listens on 127.0.0.1 only.

Run commands from the directory that should own the store. zer0dex init creates .zer0dex.json and, by default, the .zer0dex/ Chroma directory in that current directory. The configured chroma_path is interpreted by Chroma; keep it relative to the same project directory or use an explicit absolute path when moving a store.

Prerequisites

Use Python 3.11 or 3.12 for the CI-tested developer-preview path. Install the package, then ensure the local Ollama service and both default models exist:

pip install -e ".[dev]"
ollama serve
ollama pull nomic-embed-text
ollama pull mistral:7b
zer0dex check

check tests the service, configured models, mem0ai, chromadb, and the Python ollama client. It exits 0 only when all checks pass; it exits 1 with one or more explicit failed or skipped lines otherwise. It does not modify a store.

Commands

zer0dex --version
zer0dex init [--collection NAME] [--chroma-path PATH] [--port PORT] [--user-id ID]
zer0dex seed --source FILE_OR_DIRECTORY [--source MORE] [--dry-run]
zer0dex serve [--port PORT] [--background]
zer0dex stop
zer0dex status [--port PORT]
zer0dex query TEXT [--limit N] [--port PORT]
zer0dex add TEXT [--port PORT]
  • --version prints the installed package version (sourced from package metadata) and exits 0. It performs no server, store, or network access.

  • init writes configuration and creates its storage directory. It exits 0 on success. It intentionally does not start Ollama; run check before the first real seed or server start.

  • seed recursively reads only *.md files from source directories and adds extracted memories under the configured user ID. --dry-run lists chunks and exits 0 without requiring mem0ai, the Python Ollama client, or a running Ollama service. A missing source or first-use prerequisite exits 1.

  • serve loads the configured store and starts the loopback HTTP server. Foreground mode returns its server exit code. --background waits up to 30 seconds for /health; it prints success only after that check passes, and exits 1 (terminating and reaping the child) when readiness is not reached. A background start writes server.json in the configured storage directory with a per-launch identity token, and reports success only after the new server proves both its token and PID.

  • stop stops the background server recorded by this project. Before sending SIGTERM, it asks the loopback server on the recorded port to prove the per-launch token and PID. Missing or dead state is removed safely; an unverifiable, mismatched, or reused PID is never signaled and causes exit 1 with state preserved for inspection. Repeating stop after a successful stop is a successful no-op.

  • status, query, and add require a running local server. They exit 1 when it cannot be reached. query exits 0 with No relevant memories found. when the server returns an empty result set. add exits 1 when the server reports that extraction stored zero memories, and prints guidance to check, query, or rephrase the text. query --limit requires a positive integer; invalid values are rejected by the CLI before any request.

The defaults are collection zer0dex, user ID agent, port 18420, storage .zer0dex, Ollama URL http://localhost:11434, embedding model nomic-embed-text, and extraction model mistral:7b. Change configuration deliberately after init; command-line options presently cover collection, storage, port, and user ID as shown above.

Disposable workflow

mkdir demo-memory && cd demo-memory
printf '# Notes\n\n## Preference\nUse concise factual replies.\n' > notes.md
zer0dex check
zer0dex init --port 18429
zer0dex seed --source notes.md
zer0dex serve --port 18429 --background
zer0dex status --port 18429
zer0dex query 'What reply style is preferred?' --port 18429
zer0dex add 'The demo service is local-only.' --port 18429
zer0dex stop

This is a local implementation pattern, not a guarantee of complete recall or correct retrieval for another workload. See HTTP contract and compatibility.

45 files · 33 not served here

Advantages

  • Provides a human-readable index that is easy to edit and maintain alongside the automated vector store. evidence: README.md
  • Reduces context window usage by separating high-level indexing from detailed semantic retrieval. evidence: README.md

Limitations

  • Does not provide an automatic hook into agent hosts; requires manual integration via the provided API. evidence: README.md
  • Not suitable for compliance or governance-heavy environments as it is a local-first developer tool. evidence: AGENTS.md

Security

Risk level: Medium risk

This brain runs

Git hooks (2)

  • .pre-commit-config.yaml: pre-commit hooks from https://github.com/pre-commit/pre-commit-hooks at v4.6.0 (contributor tooling: runs only after pre-commit install) · uses the network
  • .pre-commit-config.yaml: pre-commit hooks from https://github.com/astral-sh/ruff-pre-commit at v0.4.4 (contributor tooling: runs only after pre-commit install) · uses the network

Agent instructions that run or fetch something (2)

  • AGENTS.md: pip install -e ".[dev]"
  • AGENTS.md: python -m pytest tests/ -q
  • Medium risk: runs-git-hook-remote-exec (.pre-commit-config.yaml:2)
  • Medium risk: runs-git-hook-remote-exec (.pre-commit-config.yaml:9)
  • Low risk: network-instructions (.agents/skills/zer0dex/SKILL.md:5)
  • Low risk: network-instructions (AGENTS.md:20)

Attribution and licence

Created by
Hermes Labs
Declared authors
  • Rolando Bosch (declared in pyproject.toml)
  • Rolando Bosch Rodriguez (declared in CITATION.cff)
Publisher
Hermes Labs (Official Hermes Labs project)
Source
hermes-labs-ai/zer0dex · commit aae06c9
Licence
Apache License 2.0 (files served here)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Hermes Labs.

Install from source

33 of its files are not served here, so there is no ZIP. hermes-labs-ai/zer0dex at aae06c9