Decision memory for AI coding agents — semantic search across Claude Code, Gemini CLI, and Codex CLI conversations
Project description
WWT — One Brain for All Your AI Agents
Your agents share one brain. Stop re-explaining and writing so many .md files.
Supported: Claude Code · Gemini CLI · Codex CLI 한국어 README
What it does
Three coding agents. Three log formats. Three sets of memory that vanish at session end. WWT collapses them into one searchable brain every agent can read from.
Claude Code ─┐
Gemini CLI ─┼──→ one local index ──→ any agent can recall
Codex CLI ─┘
No more re-explaining context. No more CLAUDE.md graveyards. No more "wait, why did I choose Postgres again?"
Quick Start
pip install whatwasthat # or: uv tool install whatwasthat
wwt setup # DB + hooks + MCP for every installed agent
That's it. Existing logs are auto-ingested. Future sessions auto-capture on session end.
How it works
When a session ends, the agent's hook fires. WWT parses the log, extracts code, chunks the conversation, embeds it locally (no API), and stores it in ChromaDB.
When you ask "how did I do X last time?" — any agent calls search_memory over MCP and gets the original conversation back. Including the why, not just the what.
session ends → hook → parse → chunk → embed → ChromaDB
question → MCP → search → score → top sessions → agent answers
Why one brain matters
| Without WWT | With WWT |
|---|---|
| Each agent forgets after every session | Permanent memory across all agents |
| You re-explain context every session | Agent recalls the why automatically |
.md files pile up unread |
Conversations themselves are the source of truth |
| Claude can't see what Gemini did yesterday | Any agent reads any other's history |
Search modes
| MCP tool | When the agent calls it |
|---|---|
search_memory |
"How did I configure Redis last time?" |
search_decision |
"Why Redis instead of Memcached?" |
search_all |
Cross-project, cross-agent recall |
search_memory auto-routes — if your project filter returns nothing useful, it expands to all projects automatically (Self-ROUTE, EMNLP 2024). One call, no retries.
Three ways to recall
1. Cross-platform — Claude reads what Codex did yesterday
You (in Claude Code): "How did I set up the JWT refresh token last night?"
WWT: Found in [codex-cli] backend-api @ 2026-04-07 23:40
→ Claude reads the original Codex conversation and answers.
2. Cross-project — Reuse a fix from another project
You (in project frontend): "How did I solve that mTLS cert chain in another project?"
WWT: Found in [claude-code] infra-gateway (main) @ 2026-03-22
→ Same fix, different repo. Recalled in seconds.
3. Both at once — Cross-platform AND cross-project
You (in project ml-pipeline, Gemini CLI): "Why did we drop Kafka for NATS last month?"
WWT search_decision: Found in [claude-code] data-platform @ 2026-03-15
→ Decision made by Claude in another project,
now answerable from Gemini in this project.
Memory that strengthens itself
Inspired by human spaced repetition: chunks you retrieve often decay slower. Decisions you actually re-use stay sharp; one-off chats fade.
On top of that, scoring is 3-axis (Generative Agents, Stanford 2023):
final = relevance × (recency + importance)
Old critical decisions beat recent chatter. Because that's how memory should work.
Install
pip install whatwasthat # pip
uv tool install whatwasthat # uv (recommended)
Then run wwt setup once. It registers the MCP server and installs the auto-capture hook for every agent already on your machine — Claude Code, Gemini CLI, Codex CLI. Re-runnable, idempotent.
Requirements
- Python 3.10+
- OS macOS, Linux (Windows untested)
- Disk ~200MB install + ~470MB embedding model
- Network 100% local after model download. No API keys. No telemetry.
Documentation
- ARCHITECTURE.md — system design, search engine internals
- CLI_REFERENCE.md — every CLI command and flag
- MCP_REFERENCE.md — MCP tool signatures and examples
Contributing
uv run pytest tests/ -v
uv run ruff check src/
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file whatwasthat-1.0.10.1.tar.gz.
File metadata
- Download URL: whatwasthat-1.0.10.1.tar.gz
- Upload date:
- Size: 51.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1750cc7f7a7e9c3b2e22aa4869c7ce16860f86b934c6c4a698fd8159f1114f91
|
|
| MD5 |
86a7a3220b8f47fb2ce5439aecaf6351
|
|
| BLAKE2b-256 |
5c130f12fb12894b6f4db557510bb7d3dcadf02875e38a5112a0eb2f33c8a86c
|
Provenance
The following attestation bundles were made for whatwasthat-1.0.10.1.tar.gz:
Publisher:
publish.yml on Hyuk0816/whatwasthat
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whatwasthat-1.0.10.1.tar.gz -
Subject digest:
1750cc7f7a7e9c3b2e22aa4869c7ce16860f86b934c6c4a698fd8159f1114f91 - Sigstore transparency entry: 1260454207
- Sigstore integration time:
-
Permalink:
Hyuk0816/whatwasthat@066b9363774eeb5fd418c3c93bcad8996a83c477 -
Branch / Tag:
refs/tags/v1.0.10.1 - Owner: https://github.com/Hyuk0816
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@066b9363774eeb5fd418c3c93bcad8996a83c477 -
Trigger Event:
push
-
Statement type:
File details
Details for the file whatwasthat-1.0.10.1-py3-none-any.whl.
File metadata
- Download URL: whatwasthat-1.0.10.1-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f118342f330383ee46511a4a416e082379dafddd299a899f777f3de884e8e25
|
|
| MD5 |
c492e2b3f854fc443531c0be1511035b
|
|
| BLAKE2b-256 |
79459e9fbdfe3237488a1174e00c526dd5ab22b18fc37550732ed663c2d77582
|
Provenance
The following attestation bundles were made for whatwasthat-1.0.10.1-py3-none-any.whl:
Publisher:
publish.yml on Hyuk0816/whatwasthat
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whatwasthat-1.0.10.1-py3-none-any.whl -
Subject digest:
4f118342f330383ee46511a4a416e082379dafddd299a899f777f3de884e8e25 - Sigstore transparency entry: 1260454254
- Sigstore integration time:
-
Permalink:
Hyuk0816/whatwasthat@066b9363774eeb5fd418c3c93bcad8996a83c477 -
Branch / Tag:
refs/tags/v1.0.10.1 - Owner: https://github.com/Hyuk0816
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@066b9363774eeb5fd418c3c93bcad8996a83c477 -
Trigger Event:
push
-
Statement type: