khipumaq
Quechua: one who makes a khipu, the knotted-cord record. The name states the job: keep the record, so it can be read back.
khipumaq keeps every Claude Code and Codex session you have had — your words
and the assistant's responses, not summaries — in one searchable store, and
gives the instances that come after a tool to search it.
The problem
A coding agent starts every session without its past. What was decided last week, what you already explained, what a prior instance got wrong: all of it is in transcripts on disk, and none of it is reachable from inside a session. The agent asks you again, or guesses, or searches the filesystem and finds nothing. The information exists; the path to it does not. And Claude Code deletes transcripts after about 30 days, so the record does not even wait.
What it does
- Ingests Claude Code transcripts (including subagents and Cowork tasks) and Codex CLI rollouts into an ArangoDB collection: one episode per assistant turn, paired with the user turn before it, labelled by project, with the host, machine id, and source path it came from.
- Stays current without you: a SessionEnd hook for Claude Code and Codex
ingests each session as it closes, and a daily sweep catches anything a hook
missed. On WSL the sweep also reads the Windows side (Claude Code, Cowork,
Codex on Windows) through
/mnt/c. - Serves it read-only over MCP:
search(BM25 over both sides of the conversation, filterable by project and date, returning how many matched),recall(one whole episode), anddescribe(what the store holds). At start the server says one sentence about itself — how much it holds, how fresh it is, and when to reach for it — and says plainly when ingestion looks stale.
There is no write tool. Episodes come only from the transcripts, so an instance cannot edit the record of what it did.
Install
You need Python 3.14, uv, and an ArangoDB 3.12 server you control (a local container is fine) with a database and a user that can read and write it. khipumaq creates its collection and search view on first use.
-
Write
~/.config/khipumaq/db-config.ini(mode 0600):[database] host = 127.0.0.1 port = 8529 database = khipumaq user_name = khipumaq user_password = ...
$KHIPUMAQ_CONFIGpoints elsewhere if you prefer. An optional[khipumaq]section withperson = <your name>lets the server's sentence name you ("Before asking what happened…"); the default is "the user". -
Wire this machine:
uvx --python 3.14 khipumaq install uvx --python 3.14 khipumaq sweep # first run ingests everything on disk
installadds the Claude Code SessionEnd hook, the MCP server entry, the Codex hooks (and the trust Codex requires before running them), a daily systemd user timer for the sweep, and — on WSL — the MCP entry for Claude Code and Claude Desktop on Windows.khipumaq uninstallremoves all of it and leaves the store alone. -
Restart Claude Code. Run
installon each machine whose sessions should land in the store; they can all point at one database.
Remote or hosted ArangoDB (ArangoDB Cloud, a server across a WAN) should work through the same config file but is not tested; pull requests welcome.
Privacy
The store holds your conversations in full. It lives where you put it and
nowhere else: khipumaq sends nothing to any service but your database. Its
operational event log (~/.local/state/llm-memory/events.jsonl) records
identifiers, digests, and counts, never query text or episode content. Point
it at a database on a network you trust.
Status
Pre-alpha, and used daily. Design notes and the record of how it got here are
in docs/superpowers/specs/2026-09-01-khipumaq-design.md.
License
MIT. Contributions are accepted under the Developer Certificate of Origin; see CONTRIBUTING.md.
Release files for khipumaq 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| khipumaq-0.1.2.tar.gz | 25.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| khipumaq-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.7 kB
Release files / khipumaq-0.1.2.tar.gz
| Download URL | khipumaq-0.1.2.tar.gz |
|---|---|
| Size | 25.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d8faf2691687bf0c523844020bf115986b6d2dd790e82505d546678f8bd9996
|
|
BLAKE2b-256 checksum How to use checksums |
376aee7b4df9023a0f2411da1c3a2d8850919d84808fee73a38ed357af15e386
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / khipumaq-0.1.2-py3-none-any.whl
| Download URL | khipumaq-0.1.2-py3-none-any.whl |
|---|---|
| Size | 30.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
35972de38184ca5fc100b361d13ee3456fb5fd999f99b540438e439616d7d099
|
|
BLAKE2b-256 checksum How to use checksums |
05afa38507cf22ee753dc749431afa99f984e03b1771e8ce31e738356207dab7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|