Your agent remembers. Your teammate’s doesn’t.
kadence keeps your project’s decisions in git and hands the right one to any agent before it answers.
works with
- Claude Code
- Codex
- Cursor
- GitHub Copilot
- Jules
- Antigravity
- Cline
- opencode
- Zed
- Warp
- Qwen Code
- git
- Claude Code
- Codex
- Cursor
- GitHub Copilot
- Jules
- Antigravity
- Cline
- opencode
- Zed
- Warp
- Qwen Code
- git
How kadence works
One journal, everything in it

Context for every agent
Each session starts with your work and the decisions in force; each prompt gets the one that matters.
› let’s commit state.json?
kadence hook prompt
DEC-43 rejected this beforeconflicts on every merge
- guided init + hooks for Claude Code, Codex, Cursor, Copilot
- prime: 40 lines at session start
- the decision before each prompt
- search across everything
- --json on every command
- human or agent, on every event
- schema: the agent contract
Memory with reasons
Decisions keep their why and what lost. Notes and docs sit beside the tasks they explain.
DEC-43decision
state.json is a cache, never in git
whyderived from the events
rejectedcommit the snapshot
- decisions with --why
- --rejected alternatives
- your ADRs, brought in
- --supersedes
- notes on tasks
- docs in the journal
- doc sections by line
Tasks your agent can run
From ready to claimed to done, with the criteria checked before it moves.
KAD-12 Fix loginin progress
- ✓tests green
- ✓docs updated
- reviewed
claimed by agent · 3 pts
- type · priority · estimate · due
- templates
- acceptance criteria
- definition of done
- ready, claim, release
- epics and subtasks
- dependencies
- time log
- comments
- bulk move, all or nothing
- --branch: what this branch did
- cancel and delete keep history
Sprints and a board
Plan sprints and milestones, and work the board without leaving the terminal.
todo
doing
done
- sprints
- velocity on close
- milestones
- board in the terminal
- interactive ui
- export to HTML, Markdown, README
- your own columns
Reports from the journal
Folded from the events, for any day — nothing to keep in sync.
burndownvelocity
- burndown
- burnup
- velocity
- flow and cycle time
- CFD
- HTML with charts
- workload
- attention
- stats
Plain files, in git
Append-only JSON that merges without conflicts. No server, no account, no network.
.kadence/events/2026-10/
01M3PB637S….jsondecision.recorded
01M3PB6Q2K….jsontask.moved
01M3PC0F9T….jsonnote.recorded
main ← feature✓ no conflicts
- append-only events
- merges without conflicts
- conflicts surfaced, never dropped
- 0 network requests
- 73 ms to start
- MIT
- one file per event
- state.json is only a cache
- compact old months
- doctor: rebuild and check
- shell completion
See it in practice
A rejected idea
Monday you ruled it out. After a /clear, Wednesday’s session suggests it again.
You record why you ruled it out
kadence decision add "…" --why "…" --rejected "…"Later, a session proposes it again
The hook hands back the decision
kadence hook prompt
A teammate
Agent memory stays on the machine that made it. A fresh clone gets the code, not the reasons.
Your agent records a decision
You push; they pull
git pullTheir session starts with it
kadence prime
After a break
What’s in flight, who took what, and why is it like this?
Open the board
kadence uiSee what’s ready and claimed
kadence readyAsk why, get the decision
kadence search "why …"
Several agents
Each tool keeps its own memory, and none of them reads the others’.
Run init once
kadence initEach tool gets its hooks
All of them read .kadence/
Your agent, without kadence and with it
- Pushed back on an idea the project had already ruled outA hand-kept CLAUDE.md that restates most of the decisions also gets 9 of 10. How it was measured
- Without kadence
6 of 10
- With kadence
9 of 10
- Documents to open to find a “why”, five real questionsEverything grep turns up, against the one document a decision links to. How it was measured
- Without kadence
1.3 MB
- With kadence
39 KB
- Merge conflicts in task filesWithout: 130 public repositories using file-based trackers. With: one task edited on three branches, merged in every order. How it was measured
- Without kadence
15% of repos
- With kadence
0
- Sessions that used what the project already knewHow it was measured
- Journal, no prompt hook
1 of 10
- With the prompt hook
9 of 10
- Context the agent spent to answerHow it was measured
- Journal, no prompt hook
~10.9k tokens
- With the prompt hook
~7.9k tokens

Andriy Bohutskyybuilds kadenceTalk to the person who builds it
We are looking for teams that work with coding agents — and for the ones who think they do not need this. Both answers change what we build next.
- How work changes hands on your team: people, sessions, agents
- Where context gets lost, if it does
- No demo, no pitch, no follow-up you did not ask for
Questions, answered
What people ask before they install it.
Read the docsMy agent already remembers yesterday. What does this add?
Its memory stays on your machine, in your tool. The journal is in the repository, so a teammate, a fresh clone and another agent get it too.
How does my agent actually use it?
init writes the instructions and hooks: a short summary when a session starts, the matching records beside each prompt, and decision add when a choice is made. With the prompt hook, 9 of 10 agent sessions used the journal; without it, 1 of 10. No MCP server — every command speaks --json and the contract is published (kadence schema --json).
Do I have to run a command for every decision?
No. Your agent writes them as it works — 53 of 53 in kadence’s own journal. You can always say “record that”.
What happens when the journal outgrows the context window?
It never goes in whole: a summary of 40 lines at most, then only the records that match a prompt. Folding 10,000 events takes 21 ms cold · 12 ms warm, with a compacted archive.
Does it summarise my records or use embeddings?
No. Records stay word for word, and search matches your project’s own words, offline. Embeddings were considered and turned down — the reason is on record as DEC-26.
Cursor and Codex, or only Claude Code?
Any agent that runs a command. init writes hooks for Claude Code, Codex, Cursor and Copilot where it sees them in use; our measurements are on Claude Code, and an instruction line alone changed nothing — 0 of 10 agents searched first when only CLAUDE.md told them to.
What does it do to my repository?
It adds .kadence/, a marked section in AGENTS.md and CLAUDE.md, agent hooks (skip them with --no-hooks) and one .gitignore line. Your own lines are left alone, and it never runs git for you.
How is this different from Beads or Backlog.md?
They keep the current state: Markdown files that get edited (Backlog.md) or a Dolt database (Beads). kadence keeps events — each change a new file — so branches never conflict and decisions sit beside the tasks. Beads proved the category; ready and prime come from it.
Can anyone else see our work?
No. The CLI has no network code and no telemetry. This site counts anonymous page views, how fast they load, its own script errors and a few named actions (copying a command, playing the demo, opening a question, what you search the docs for, following a link out), keeps a random id in local storage, records anonymous sessions and click heatmaps with every input masked, and may ask one optional question. No cookies, no accounts, and Do Not Track turns all of it off.
Is this another tracker? We use Jira.
No. It keeps what happened to the work and why, where your agent can read it. They live side by side.





