Version control that knows why.
kal records the intent behind every change, tells human code from AI code line by line, and makes every operation reversible. It mirrors to git, so nothing you already use has to change.
Three things git structurally cannot do
git versions text. kal versions meaning — and when half your commits come from agents, that difference compounds every day.
History that explains itself
Every snapshot carries an intent — a first-class, searchable field.
kal why app.py answers the question everyone asks six months later,
with no archaeology through pull requests and chat logs.
Human and AI, told apart
Authorship is structured: human or agent, and which model.
kal blame shows it per line; kal stats scores each model
by verification and revert rate — an eval harness you get for free.
A safety net with no holes
Snaps, merges, resets, branch deletes — every operation lands in an append-only log.
kal undo reverses any of them, and undo is itself undoable.
Six groups. No alphabetical wall.
Run kal with no arguments and this is the greeting: plain-language
one-liners, inline examples, and the AI-native commands presented as first-class citizens.
$ kal kal — AI-native version control v0.7.0 ────────────────────────────────────────────────────────────── Every snapshot records what changed, why (intent), and who — human or AI. Every operation is reversible. Plays nicely with git. Start here init create a repository in this directory kal init snap record a snapshot — what changed and why kal snap -m "fix login" -i "IdP rate-limits bursts" status what changed since the last snapshot log history with intents and authors kal log --grep auth diff line-by-line changes vs a snapshot awards your journey — achievements & streaks Branch & combine branch list / create / delete / rename branches switch move to another branch merge line-level three-way merge tag name a snapshot (releases) kal tag v1.0 restore bring back files from any snapshot kal restore HEAD~2 app.py Your safety net — everything is reversible undo undo the last operation (even merges & resets) ops the operation log behind undo checkpoint quick work-in-progress snapshot revert make a snapshot that undoes another bisect auto-find the snapshot that broke a test kal bisect v1.0 HEAD --run "pytest" Understand your code (AI-native) why who changed a file, and why — the intent trail kal why app.py blame per line: written by a human or an AI? ask question your history in plain English kal ask "why do we retry logins" ask --llm let a model answer, citing snapshots stats verify & revert rates per author / AI model verify run tests, stamp the result on the snapshot kal verify "pytest" archive retire a branch but keep WHY it failed Work with others clone copy a repository (path or URL) push / pull sync with a remote — provenance travels too serve host this repo over HTTP for your team git mirror to/from git — works with every git tool kal git sync For AI agents & platforms mcp serve kal as MCP tools (Claude Code, Cursor, …) watch auto-checkpoint agent sessions context brief an LLM about this repo kal context --agents-md export consented training data from history …
A CLI that teaches instead of scolding
Mistype a command and kal suggests the fix rather than dumping usage text.
Meaningful milestones — your first snapshot, a ten-snap intent streak, a run of green
verifications — unlock one of sixteen achievements. All of it is terminal-only: silent in
scripts and pipes, NO_COLOR respected, and one config flag from off.
kal help <command> details any command ·
kal help tour runs the guided tour.
$ kal stauts kal: 'stauts' is not a kal command. did you mean? kal stats kal status `kal help` shows all commands.
$ kal awards Your kal journey 5/16 achievements 🌱 First Light earned your first snapshot in this repo 🔟 Ten Up █████░░░░░░░░░ 4/10 10 snapshots recorded 💯 Centurion ░░░░░░░░░░░░░░ 4/100 100 snapshots recorded ✍️ Why-Writer ████░░░░░░░░░░ 3/10 10 snapshots with an intent — history that explains itself 📖 Storyteller ████░░░░░░░░░░ 3/10 10 snaps in a row with intents ✅ Green Keeper █░░░░░░░░░░░░░ 1/10 10 passing verifications 🟢 On a Roll ██░░░░░░░░░░░░ 1/5 5 passing verifications in a row 🤝 Smooth Operator ██░░░░░░░░░░░░ 1/5 5 merges without a single conflict 🧵 Conflict Tamer ░░░░░░░░░░░░░░ 0/1 resolved a conflicted merge ⏪ Time Traveler earned used undo — nothing is ever lost in kal 🔍 Detective ░░░░░░░░░░░░░░ 0/1 found a culprit with bisect 🏺 Archaeologist ██░░░░░░░░░░░░ 2/10 asked your history 10 questions (why / ask) 🌉 Bridge Builder earned synced with git — best of both worlds 🚀 Team Player ░░░░░░░░░░░░░░ 0/1 first push to a remote 🗄️ Keeper of Lessons earned archived a branch with its lesson 🏷️ Release Captain earned tagged a release Live streaks: intents 0 · green verifies 1 (celebrations off: kal config ui.celebrations off)
kal and git, in the same folder
Run kal init inside any git repository today. One command mirrors
your snapshots into ordinary git commits, with intent and AI attribution carried in commit
trailers that survive GitHub, pull requests and rebases — then imports git commits back the
same way. Your CI, your reviewers and your IDE never notice, and you keep every kal feature.
What rides along
Intent, human-vs-AI authorship, session id and model name travel as
Kal-* commit trailers — so provenance survives GitHub, pull
requests and rebases, and imports back into kal intact.
$ kal git sync && git log -1 exported 7 kal snapshot(s) to git (tip 199d7bf520) — metadata in Kal-* trailers clone work Kal-Snap-Id: 589ece593b7ba511961e78c527d76fdd1e98b2fbc4e682ecebbeaba0c207359e Kal-Author-Kind: human Kal-Intent: contribution from the clone
One command on every platform
Twelve package formats, each install-tested on its native OS by CI before release.
macOS
brew tap AzmxAI/kal brew install kal
Linux
# deb · rpm · nix · tarball
curl -fsSL kal0.dev/install.sh | shWindows
# installer or portable exe
irm kal0.dev/install.ps1 | iex