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.

9 of 10
rejected ideas the hook brought back before the agent answered
53 of 53
of kadence’s own decisions written by its agents

works with

  • 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.

    • 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.

    • 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.

    • 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.

    • 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.

    • 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.

    • 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.

    $ kadence hook prompt — what the agent receives
    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.
    1. You record why you ruled it out

      kadence decision add "…" --why "…" --rejected "…"
    2. Later, a session proposes it again

    3. 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.

    $ kadence prime — the start of every session
    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.
    1. Your agent records a decision

    2. You push; they pull

      git pull
    3. Their session starts with it

      kadence prime
  • After a break

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

    $ kadence ui — the board
    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.
    1. Open the board

      kadence ui
    2. See what’s ready and claimed

      kadence ready
    3. Ask why, get the decision

      kadence search "why …"
  • Several agents

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

    $ kadence init — the guided setup
    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. Run init once

      kadence init
    2. Each tool gets its hooks

    3. 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

Right answersHow it was measured
Journal, no prompt hook

9 of 10

With the prompt hook

10 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 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

start here

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.