Rekal CLI
Decision memory in git: AI agent sessions are saved at commit time, and an agent can recall the reasons and rejected options
- 206 ★ on the repository
- Last commit
- Apache-2.0
Extended access
Why this level
- Git hooks and edits to agent rules files change the repository.
- Session transcripts are stored in the repository and pushed to a branch on the remote, while secret redaction works by patterns.
Install
- Works in
Manual install
/plugin marketplace add rekal-dev/rekal-cliThen `/plugin install rekal@rekal-dev`, `/rekal:install` once per machine and `/rekal:init` in the repository.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Git hooks and edits to agent rules files change the repository.
- Session transcripts are stored in the repository and pushed to a branch on the remote, while secret redaction works by patterns.
This is third-party code. Review the repository files before installing.
What it does
Rekal is a CLI that saves an AI agent session in the repository at every git commit and lets any agent recall why a decision was made, including the options that were rejected. The store is a `.rekal/` directory inside the repository: sessions are written in full, while the index and embeddings are built locally in the background. The `rekal init` command enables the `post-commit` and `pre-push` hooks, installs a skill under `.claude/skills/rekal/` and adds a line to `CLAUDE.md` or to another agent's rules file. A query such as `rekal "why did we drop batching?"` returns a short list of matching sessions with a confidence score and a turn number, and `rekal query -s s14 --role human_steering` opens the session you need. Team memory travels over plain `git push` and `git fetch` on orphan branches named `rekal/<email>`. `rekal sync` pulls teammates' branches, and only work already merged into the default branch leaves your machine.
Who it is for. Teams where several people work with Claude Code, Cursor or Codex on one repository and lose the reasoning of past sessions.
Good fit when
- A new agent is about to propose a solution the team already rejected in a past session.
- A teammate returns to a task after a month and looks for the reason behind the chosen approach.
- The team wants agents to see each other's reasoning after a branch is merged.
- A history of decisions is needed next to the code, with no external memory service and no account.
- The `rekal find` command collects every mention of a term across sessions.
Not a fit when
- Work runs on Windows: the binary is built for macOS on Apple Silicon and for Linux (x86-64 and arm64).
- Session transcripts cannot be stored in the repository even when scrubbed: secret redaction works by patterns and does not guarantee completeness.
- The project lives without git: the tool is tied to commits.
Example request
Before changing the webhook retry scheme, ask Rekal whether we discussed a fixed delay and why it was rejected.Limitations
The binary weighs about 170 MB and takes about 200 MB on disk: it holds the embedding model, the database and the full-text extension. macOS on Apple Silicon and Linux are supported. Secret redaction works by patterns and entropy with no completeness guarantee, and if a key lands in the ledger, rotate the key first. Building from source needs CGO, a pinned llama.cpp and git-lfs, and `go install` does not work. The store format and commands are frozen by version 1.0, while ranking and `index.db` may still change.
How to disable. Run `rekal clean` in the repository: it asks for confirmation and removes the store, both hooks, the skill and the line from rules files. Delete the binary from `~/.local/bin/rekal` yourself and drop the `rekal/<email>` branch with `git branch -D`.
FAQ
How do I install Rekal?
In Claude Code run `/plugin marketplace add rekal-dev/rekal-cli` and `/plugin install rekal@rekal-dev`, then `/rekal:install` once per machine and `/rekal:init` in each repository. From a shell use `curl -fsSL https://raw.githubusercontent.com/rekal-dev/rekal-cli/main/scripts/install.sh | bash` and `rekal init`.
What is saved at commit time?
The whole agent session, with no model summary. It goes into `.rekal/data.db` and passes secret redaction and home-path anonymization before it is written.
How do teammates get my memory?
Through plain `git push` and `git fetch`: the data sits on an orphan `rekal/<email>` branch, and `rekal sync` pulls teammates' branches. Only work merged into the default branch leaves your machine.
Which agents does Rekal work with?
Claude Code, Cursor, Copilot, Codex, Gemini, Kiro and OpenCode. The `rekal init` command adds a line to the rules file of each detected agent: `AGENTS.md`, `GEMINI.md`, `.github/copilot-instructions.md` or `.kiro/steering/rekal.md`.
Does it need an API key or an external service?
No. A local model inside the binary computes the embeddings, and the tool has no server, account or telemetry.
How do I remove Rekal from a repository?
`rekal clean` asks for confirmation and removes the store, both hooks, the skill and the line from rules files. Delete the `rekal/<email>` branch by hand with `git branch -D rekal/<email>`.
Discussion
No questions or reviews yet.
Related
CLI toolsShared team memory for people and AI agents in Git: decisions and handoffs live in Markdown, reachable from Claude Code and Codex.
Local agent memory built on a corrections ledger: tell Claude Code once and a new session reads the rule before it starts work
An MCP server that keeps project decisions in Redis or Valkey and brings them back in new sessions and after compaction.
A local workbench for Claude Code, Codex, Pi and OpenCode: memory changes wait for your review, then an audit follows each turn
Agent session history is linked to Git commits so a change can be traced to its original prompt, conversation and affected files.
Local project memory for coding agents: decisions and current state survive a model switch or a cleared chat
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| Rekal (this card) | no | 206 | ||
| Episodic Memory | no | 499 | Episodic Memory searches conversations with several agents over MCP; Rekal ties sessions to commits and shares them with the team through git | |
| agentmemory | yes | not required | 30,160 | agentmemory keeps memory locally for one developer; Rekal shares it with the team over git and links it to commits |
README in short
A comparison with a `MEMORY.md` file, hosted memory layers, editor memory and code RAG explains how the approach differs. Then come the command reference, the capture and indexing diagram, a knowledge layer over the repository prose and benchmark results.