kadence - Git-native task journal your team and AI agents both read

by
Tasks, their whole history and the time they took live in your git repo as an append-only journal: one JSON file per event, never edited, never deleted. Everyone else keeps state — a task file, a row, a spec. State drifts, conflicts on merge and forgets. Events cannot: board and velocity are folded from the journal on read. Your team reads it in the terminal, your AI agents read the same thing as --json. No server, no account, no network. MIT.

Add a comment

Replies

Best
Hi Product Hunt 👋 I work with coding agents every day, and the expensive part was never the code - it was re-explaining. Every new session, my agent re-read the same files and proposed the approach we had rejected last week. My teammate's agent knew none of it either: that memory is per user, per machine. So kadence keeps the missing layer in the repository itself - an append-only journal, one JSON file per event, committed next to the code. Nothing is edited or deleted, so `kadence task show KAD-1` can answer "how did we get here", and `--json` hands an agent the same answer in about a kilobyte whether the project holds ten tasks or a thousand. Two things I would rather say up front than have you find out: • Because it is append-only, two people editing one task on two branches is not a merge conflict. We measured 8,396 merge commits across 130 public repositories using file-based trackers before building on that claim - 15% of them hit conflicts in task files, and 89% are the exact type a journal removes. • What we have NOT proved is that teams lose enough context between sessions to want a journal for it. That bet rests on reasoning, not on users - the interviews are not run yet. If it turns out agents do fine with `git log`, the thesis falls. MIT, free, zero network requests. Leaving costs `rm -rf .kadence` - your events are plain JSON, readable without us. What I would most like from you: if you work with agents in a team, tell me what your last session had to relearn. That is the thing I am trying to kill. npm install -g kadence && kadence init

Really like the idea. It feels genuinely useful for keeping context between sessions without adding extra friction. Simple concept, but it solves a real problem👍 Looking forward to seeing how this evolves!