An agent that works with you for a week learns a lot, and almost all of it is gone the next time it starts. The usual fixes are a notes file it rereads or a vector store it searches, and neither can tell you who said a thing, when, or what it replaced.
Chaos Cypher v0.6.0 is the agent-memory release. It has three themes: memory for agents, retrieval that reads the question, and sources you can keep current. It also carries breaking changes for MCP clients, custom domain plugins and databases from before the core entity types, so if you run any of those, read the upgrade notes before you pull the image.
Memory for agents
Five new MCP tools let an agent hand Chaos Cypher a sentence or a note in plain words and get it back later as facts with where they came from:
-
rememberstores the text as a source of typememory. It is kept whole and searchable at once, and its facts are extracted against the entities the graph already knows, so a later "Pierre" lands on the same Pierre node. A text that looks like a key or a password is refused and nothing is stored. -
recallanswers in the shape of the question — an entity card, a grouped list, a relation chain, or a digest — with every fact tagged[who DATE],[doc TITLE]or[pack NAME]. -
forgetpreviews the matches first, then removes one memory and the facts only it stated, and leaves an audit row with the counts — never the text. -
list_memoriesanddigestshow what is stored and what a window of time added, replaced and forgot.
A later memory on a single-valued relation (where someone lives) replaces the earlier fact and keeps it as history, and recall(as_of=…) shows the facts as they stood on a date.
Three things make this practical on a small local setup:
-
No embedding model required. With
search.enable_vector_search: false, the CLI, the Python API andchaoscypher mcpmake no embedding call; search answers with keyword results and every memory tool works. -
Several agents, one database. One
chaoscypher mcp -m writeper agent can share a database on the same machine and a local disk. No write is lost; a write that cannot get the lock in 60 seconds answers one fixed "database is busy" line instead of hanging. -
Nothing is dropped when linking is slow.
rememberstores the memory before it links it into the graph; if the model does not answer in time, the memory is kept as a note, says why, and links later.
chaoscypher mcp --profile memory serves only these five tools, which keeps a small model's tool list short, and chaoscypher memory export writes memories to a .ccx package another database can load. The Memory guide walks through it.
In plain terms: your agent can now keep what it learns between sessions, and every fact it recalls tells you who said it and when.
Retrieval that reads the question
Before chat builds its graph context, it now decides what kind of question it was asked: a lookup, an aggregate (everything sharing a relation with a named entity), a path (how two named things are connected) or a global question. An aggregate gets the entity's relationships grouped by label, each with the sentence that states it; a path gets the shortest relation chains between the two entities, each hop with its sentence. The default router uses rules, with no extra model call.
The graph is also handed to the model in a tighter shape (40 triples instead of 200 by default), an identity resolver merges one entity written under two names after every commit, and hybrid search gains a real keyword half: chunks now have a full-text index.
In plain terms: chat looks for the kind of evidence your question needs, and shows the model the sentences behind it rather than a wall of triples.
Sources you can keep current
Paste a documentation site's address and each of its pages is imported as its own source under one site, found through the site's llms.txt, its sitemaps, or a three-link-deep crawl that never leaves the address you gave. Check for updates re-fetches every page: unchanged pages are left alone, changed ones re-imported in place, new ones added, and a page the site no longer lists is marked Gone from site, never deleted. Pages you left out stay out. The crawler sends its own user agent and honours robots.txt. See Import a Docs Site.
In plain terms: a docs site becomes one source you can refresh, and your citations keep pointing at the page they came from.
Also in this release
-
Nothing that says something is deleted by a filter. Entities and relationships the extraction filters used to drop are now kept with a flag (
unevidenced,low_plausibility) when they carry a description or evidence. - Pinned decoding by default: temperature 0 and seed 42 for chat and extraction, so re-imports and retries give the same output for the same input (only Ollama honours the seed). Regenerate still gives a different answer.
- Security: the PyPI packages carry PEP 740 attestations, chat runs only the tools it offered the model, and a failed MCP tool call answers a fixed sentence and a code, never the error's own text.
Upgrading
Upgrade with the published image:
docker pull ghcr.io/chaoscypherinc/chaoscypher:0.6.0
or pip install -U chaoscypher-cli. Before you swap the image, drain the queue (wait for /api/v1/queue/stats to report 0 pending). Eighteen migrations run on first start, six of them needs_confirmation. Read Breaking changes and Upgrade advisory in the v0.6.0 changelog first if you run custom domain plugins, MCP clients that match error strings, API clients that threshold the hybrid search score, or a database extracted before the core entity types — that last one is not migrated in place: export with v0.5.0, upgrade, then import.
New here? The ten-minute quickstart runs the whole stack locally with Ollama, and nothing leaves your machine unless you choose.
Top comments (0)