I’ve been working on an open source project called Keep the Why.
The problem I wanted to solve is pretty simple:
Coding agents are getting very good at understanding code, but across sessions they often lose the reasoning behind it.
A repository might clearly show what was implemented, but not necessarily:
-
why a particular approach was chosen
-
which alternatives were already rejected
-
which constraints influenced a decision
-
which workaround exists for a non-obvious reason
-
what was learned during an incident
That can lead to agents repeatedly proposing ideas that were already discussed and rejected.
Keep the Why stores this kind of project knowledge directly inside the repository as Markdown.
There is no database, daemon, account or hosted memory service involved.
The basic idea is:
conversation/session = working memory
repository = durable project memory
The context is versioned, reviewed and distributed through the same mechanism that already distributes the source code: Git.
How it works
A coding agent gets a small skill that teaches it when and how to read or write project rationale.
The repository contains a context/ directory with an index and individual rationale entries.
The agent does not need to load all context into every prompt. It first uses the index to decide what is relevant and follows references from there.
The same context can therefore be used by different agents and models instead of living inside one vendor’s memory system.
I’ve tested it across multiple coding agents and models.
The current evaluation suite contains more than 100 cases, including negative cases where the agent should not create or modify project memory.
Across the current agent/model matrix, almost all combinations correctly inspect the repository context before making decisions that could conflict with previous rationale.
I also ran a small controlled experiment around a deliberately tempting code change.
Without project memory, agents accepted the wrong change in several runs.
With the previous rejection and its reasoning stored in the repository, all tested sessions rejected it.
Interestingly, none of the agents knew about the previous decision without that project context.
It has grown a little beyond Markdown
There is now also a read-only dashboard that visualizes the reasoning as a graph and timeline.
Decisions can link to earlier decisions, related repositories and external projects, so the rationale behind a codebase becomes something you can actually navigate.
The dashboard is still derived entirely from the repository. It doesn’t become another source of truth.
Why I’m posting this here
I’m particularly interested in how this fits into the OpenAI / Codex ecosystem.
The project intentionally doesn’t try to replace session memory, user memory or agent instructions.
It is specifically about project-scoped knowledge that should survive sessions, users, agents and model providers.
I’d be very interested in feedback from people using Codex or other coding agents on larger or longer-lived repositories.
Especially:
-
Where do you currently keep this kind of rationale?
-
Do your agents actually consult ADRs, docs and Git history reliably?
-
At what point would a simple index stop being sufficient and require semantic search?
-
Should durable project memory even be considered “memory”, or is it better understood as another layer of repository knowledge?
The project is FOSS and the specification is open.
GitHub:
h**ps://github.com/oliver-zehentleitner/keep-the-why
Project site:
h**ps://keepthewhy.com/
Dashboard:
h**ps://keepthewhy.com/dashboard/live/
Specification:
h**ps://keepthewhy.com/specification/
I’d genuinely appreciate technical criticism, especially from people experimenting with persistent context for coding agents.

