Skip to the page

Your agent remembers. Your teammate’s doesn’t.

Decisions in git, handed to Claude Code, Codex or any agent before it answers.

npm install -g kadence
Monday
kadence decision show DEC-8 in a terminal: Charts are hand-written inline SVG, with no chart library and no script. Rejected: Chart.js or uPlot from a CDN, which is a network request at open time.
WednesdayA new session, another agent
A new session proposes adding a chart library for the reports; kadence hook prompt answers that the journal may already say why, and lists DEC-8, Charts are hand-written inline SVG, with no chart library and no script, first.

One journal, everything in it

Every session starts where the last one stopped

kadence prime gives the agent your work and the decisions in force, 40 lines at most.

kadence prime | head -10 in a terminal: nothing claimed by you, 3 tasks ready to start, one task nobody is moving, and the two latest decisions in force.

9 of 10

rejected ideas the prompt hook brought back on its own, before the agent answered

How it was measured

Memory with reasons

A decision keeps why it won and what lost, and any agent can read it back.

kadence decision show DEC-43 in a terminal: state.json is a cache and never goes into git. Why: deleting it changes nothing, because it is derived from the events. Rejected: committing the snapshot, which conflicts on every merge.

Plain files, in git

Each thing recorded is one new file. No server, no database: git carries it.

kadence note "state.json stays out of git" prints Note recorded, and git status --short then shows one new untracked file under .kadence/events/2026-10/.

Works with the agent you use

Any agent that reads AGENTS.md and runs a command.

  • Claude Code
  • Codex
  • Cursor
  • GitHub Copilot
  • Jules
  • Antigravity
  • Cline
  • opencode
  • Zed
  • Warp
  • Qwen Code
  • git

Tasks, sprints and reports, from the same journal

Claim the top of ready, move it on the board, read velocity and flow when the sprint closes.

kadence ui, the terminal board, on kadence's own journal: columns backlog, todo, in progress, blocked, in review and done, each with its count and points, the selected card highlighted.

See it in practice

Four moments a journal is for, each a real capture.

kadence prime in a terminal, its first ten lines: nothing claimed by you, 3 tasks ready to start, and the five latest decisions in force, DEC-53 to DEC-49.
kadence ui, the terminal board, on kadence's own journal: columns backlog, todo, in progress, blocked, in review and done, with tasks KAD-1 to KAD-27.
kadence init, the guided setup, in a repository that already uses Claude Code, Cursor and Codex. Coda, a teal pixel notehead, says nothing is written until you say so. Found in this repository: git, the three agents (detected), no ADRs, no journal yet. Then one question, How do you want to set it up, with Recommended selected — hooks for Claude Code, Cursor and Codex, default columns, no definition of done — and Customize and Not now below it.
  1. A rejected idea

    Monday you ruled it out. After a /clear, Wednesday’s session suggests it again.

    1. You record why you ruled it outkadence decision add "…" --why "…" --rejected "…"
    2. Later, a session proposes it again
    3. The hook hands back the decisionkadence hook prompt
    A terminal. The prompt “Let's commit state.json to git so a fresh clone skips the first fold” goes to kadence hook prompt, which answers: DEC-43 rejected this before — committing the snapshot conflicts on every merge — and chose instead: state.json is a cache and never goes into git.
  2. A teammate

    Agent memory stays on the machine that made it. A fresh clone gets the code, not the reasons.

    1. Your agent records a decision
    2. You push; they pullgit pull
    3. Their session starts with itkadence prime
    kadence prime in a terminal, its first ten lines: nothing claimed by you, 3 tasks ready to start, and the five latest decisions in force, DEC-53 to DEC-49.
  3. After a break

    What’s in flight, who took what, and why is it like this?

    1. Open the boardkadence ui
    2. See what’s ready and claimedkadence ready
    3. Ask why, get the decisionkadence search "why …"
    kadence ui, the terminal board, on kadence's own journal: columns backlog, todo, in progress, blocked, in review and done, with tasks KAD-1 to KAD-27.
  4. Several agents

    Each tool keeps its own memory, and none of them reads the others’.

    1. Run init oncekadence init
    2. Each tool gets its hooks
    3. All of them read .kadence/
    kadence init, the guided setup, in a repository that already uses Claude Code, Cursor and Codex. Coda, a teal pixel notehead, says nothing is written until you say so. Found in this repository: git, the three agents (detected), no ADRs, no journal yet. Then one question, How do you want to set it up, with Recommended selected — hooks for Claude Code, Cursor and Codex, default columns, no definition of done — and Customize and Not now below it.

Your agent, without kadence and with it

Without kadence, and with it

Without kadence, and with it
MeasureWithout kadenceWith kadence
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 measured6 of 109 of 10
Documents to open to find a “why”, five real questionsEverything grep turns up, against the one document a decision links to. Lower is better. How it was measured1.3 MB39 KB
Merge conflicts in task filesWithout: 130 public repositories using file-based trackers. With: one task edited on three branches, merged in every order. Lower is better. How it was measured15% of repos0

The journal, without its prompt hook and with it

The journal, without its prompt hook and with it
MeasureJournal, no prompt hookWith the prompt hook
Sessions that used what the project already knewHow it was measured1 of 109 of 10
Right answersHow it was measured9 of 1010 of 10
Context the agent spent to answerLower is better. How it was measured~10.9k tokens~7.9k tokens
Andriy Bohutskyybuilds kadence

Talk 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 docs
My 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.

Start with one command.