Work with code
Try Kin alongside Git.
Explore Kin on a disposable copy of a project you already keep in Git. The steps below show how to bring it into Kin, inspect it and export a Git copy.
Documentation
Start
Work with code
Connect tools
Understand Kin
Reference
Troubleshoot
Start
Work with code
Connect tools
Understand Kin
Reference
Troubleshoot
How this works in Kin
Admission reads a Git repository and builds Kin authority from it, keeping the origin of every change. Git keeps working the whole time, Kin recording a change does not move Git, and export writes a new Git repository back out so you can check that nothing is trapped.
Start with a disposable copy of your code. Examples below were checked on a specific build; language and workflow support are limited.
Check the example version and setup
Supported build
Every command below was run on Kin v0.7.6, macOS on Apple silicon, on 2026-09-09, against a four-file JavaScript repository created from scratch. The output shown is what that run printed. Current release: v0.7.19.
Before you start
- A Git repository you can afford to experiment on. Use a copy: this page is an evaluation path, not a migration plan.
- Kin on your PATH, and a shell at the root of that repository.
- Disk for a second store beside .git. kin status reports the store size and how it compares to the Git object store, and that ratio varies widely between repositories.
- A language Kin has an adapter for, if you want semantic answers. Files in other languages are admitted with their content and history and produce no entities.
The steps
- 01
Admit the repository
Admission reads the Git repository and builds graph-owned authority from it. It does not rewrite the Git repository, and it does not ask you to stop using it.
kin init .Compare with the saved example output
[ 4/17] plan semantic import 4 files, 1 commits | 0.0s [ 7/17] prove Git source re-deriving 1 commits | 0.0s [ 9/17] copy Git objects 0/7 objects | 0.0s Initialized Kin repository authority at /private/tmp/docsverify-workflows/kin-orders/.kin Imported: exact reachable Git history, refs, raw objects, workspace, and admission policyA file and commit count in the import plan, then a line naming what came in: reachable history, refs, raw objects, the workspace and the admission policy. Unreachable Git objects are not part of that set. Larger repositories take proportionally longer, and the run reports each phase as it goes.
- 02
See where each change came from
Kin keeps the origin of every change, so an imported commit and a change Kin recorded are never confused for each other.
kin logCompare with the saved example output
change 5c15d027b9849974ea2b4d8e31ce8ce11ca3428d9bce65bac7d2d3a96fffd855 Origin: native Parents: 61ad778d54790180e31c78b2f1b6f8912d61fa0eb22eb049f70af07a46d8d865 change 61ad778d54790180e31c78b2f1b6f8912d61fa0eb22eb049f70af07a46d8d865 Origin: git commit 3fcc18849eea798f823e07a128900c9e6ef170dfOrigin: git commit <sha> on everything that came in with the import, and Origin: native on everything Kin recorded afterwards. The excerpt above drops the author, date and delta lines each change also carries.
- 03
Record a change in Kin, and watch Git stay where it was
This is the part worth understanding before you evaluate anything else. Kin recording a change does not move Git.
kin commit -m "Accept a currency argument when formatting an amount" git status --short --branch git log --onelineCompare with the saved example output
Created semantic change 5c15d027b9849974ea2b4d8e31ce8ce11ca3428d9bce65bac7d2d3a96fffd855 on branch 'refs/heads/main' (2 entities, 55 relations, 1 artifacts) ## main M src/money.js 3fcc188 Add order pricing and receipt renderingKin has two changes; Git has one commit and a modified file. Both are true at once, and neither tool has been lied to. If you want Git moved, commit with Git as well, or export.
- 04
Hand the work back to Git
Export writes a new Git repository from Kin authority. It is how you check that nothing is trapped, and it is worth running once during an evaluation rather than taking on trust.
kin git export --output /tmp/docsverify-workflows/exported git -C /tmp/docsverify-workflows/exported log --onelineCompare with the saved example output
Exported repository 1a21f89c-9c02-488f-ab48-ac2d837da11b authority generation 4 to /private/tmp/docsverify-workflows/exported 1 imported commits reused, 1 native commits written, 1 refs written 670e425 Accept a currency argument when formatting an amount 3fcc188 Add order pricing and receipt renderingA Git repository with both changes as commits. The commit that came in from Git keeps its original sha, 3fcc188 here, and the change Kin recorded is written as a new commit. The path above is the one this run used; yours only has to be outside the Kin working repository.
- 05
Read the boundary before you plan anything
Kin says which command surfaces are ready rather than leaving you to find out. Read this before you decide how far to take an evaluation. The excerpt below drops most of the thirty-five rows.
kin capabilitiesCompare with the saved example output
Kin repository-v6 command capabilities Bounded dogfood ready: yes (12/12) All declared command surfaces enabled: yes (35/35) Fully general Git replacement ready: no (34/35 general) READY git export required READY clone READY migrate READY push READY pull READY merge BOUND renameEach surface with its state, and required marking the ones the bounded set depends on. BOUND is a surface that works within stated bounds and fails closed outside them. The line saying a fully general Git replacement is not ready is the headline worth carrying into any plan: this is a coexistence path today.
When the answer looks wrong
An empty or partial answer can reflect coverage, repository state, or an error. Each row below says what the state means and what to do next.
Git export destination ... is inside the Kin working repository
Export writes a new repository, so it refuses a path underneath the one it is reading from.
Give --output a sibling path. The message also names the other command, the one that installs exact Git in place and steps Kin out of the way; read what it prints before you run it.
error: unexpected argument '<path>' found
The destination is a flag, not a positional argument.
Use kin git export --output <path>.
git status stays dirty after kin commit.
The change is recorded in Kin authority. Git has not been asked to do anything, so it still sees a modified file.
Leave it while you evaluate, commit with Git as well if you want both moving together, or export when you want the Git repository to carry the change.
no live graph was reachable, so the entity and relation counts above are the admitted overlay's
kin diff answered from durable authority because no daemon was running for this repository. It says so rather than reporting zero changes.
Start the repository daemon by running any query, then ask again.
Error: no graph snapshot found at .../.kin/kindb/graph.kndb
kin backup create works on a graph snapshot, and this store has not written one yet.
Treat the Git repository you admitted from as the backup during an evaluation, and keep the disposable copy this page asked for.
Next action
Ask the graph a question you already know the answer to.
Admission is only worth it if the answers are good. Pick a function in the repository you just admitted, ask for its callers, and check the answer against the source.
Find recorded callers