Migrating

Your git muscle memory mostly works

kal keeps git's mental model — snapshots, branches, merges, remotes — and removes the sharp edges. Here is the mapping, then the four differences that actually matter.

In gitIn kalWhat improves
git initkal initSame idea — and both can share one folder.
git add -A && git commit -mkal snap -m "…" -i "…"One step, and the why is recorded as data.
git status · log · diffkal status · log · diffLog shows intents and human/AI authorship.
git switch · mergekal switch · mergeConflicts are minimal, line-level hunks.
git stashkal checkpointReal history — nothing to pop, nothing to lose.
git reflog + hopekal ops + kal undoCovers every operation, reversibly.
git blamekal blameAdds human-vs-AI attribution per line.
git bisect runkal bisect --runValidates both endpoints, so it cannot mislead.
git push · pull · clonekal push · pull · cloneProvenance, trust stamps and lessons travel too.
delete a dead branchkal archive -r "why"Failed experiments become searchable lessons.
— no equivalent —why · ask · stats · verifyThe AI-native layer.

Where did the staging area go?

There isn't one, deliberately. Staging exists so a human can hand-pick hunks into a commit. In an AI-native workflow, agents — and humans finishing a task — produce whole coherent states, and the “which part means what” story belongs in the intent, not in hunk surgery. That removes git's most confusing concept and one of its easiest ways to lose work. If you want the same outcomes, kal restore and kal checkpoint compose them.

Reset stops being frightening

In git, reset --hard is the command people learn to fear. In kal every operation is journalled with its before-and-after state, so the recovery path is always the same single word.

terminal
$ kal undo
undid operation #12 (tag: v1.0 at 8cc7226d95ba)
refs restored to their prior state; commits are retained (undo is undoable)
worktree files were left untouched — add --files to also reset them,
or run `kal restore HEAD` yourself

Adopt without asking permission

Run kal init inside an existing git repository. kal git sync mirrors both directions, carrying kal metadata in commit trailers that survive GitHub, pull requests and rebases. Your teammates, CI and IDE keep seeing a normal git repo, while you get intents, per-line AI attribution, universal undo and archived lessons.

terminal
$ kal git sync && git log -1
exported 7 kal snapshot(s) to git (tip e949595ae6) — metadata in Kal-* trailers

clone work

Kal-Snap-Id: f28e2022e3f610cceb9e86df6605bceeedf6554ba7acfbecfc1be02debf4ce67
Kal-Author-Kind: human
Kal-Intent: contribution from the clone
Nothing to migrate. kal never rewrites your git history — it mirrors into it. If you stop using kal tomorrow, your git repository is exactly as it should be.