Kin is a semantic, graph-first repository and collaboration substrate for AI-native software development. Unlike traditional file-first, diff-first systems (like Git), Kin represents software as a semantic graph of entities (functions, methods, classes, structs, traits, enums, interfaces, types, constants) and relations (calls, imports, references, inheritance).
In Kin, the graph is the source of authority. The filesystem is a derived projection over that graph truth, made transparently available to existing editors and compilers through the kin-vfs virtual filesystem.
- Semantic VCS: Version control at the level of entities and relations instead of lines and files.
- AI-native context packs: Build structured context packs containing a target entity plus its caller/callee neighborhood in a single call (
kin context). - Trace & dataflow: Trace call chains and dataflow dependencies in one step instead of looping over file reads (
kin trace,kin trace-data-flow). - Ejectable brownfield compatibility: Works alongside Git and traditional toolchains.
kin ejectremoves Kin and restores files to their pre-init state, so there is no data lock-in.
Install Kin with a single command:
curl -fsSL https://get.kinlab.dev/install | shThe installer downloads the latest release from GitHub, places the kin and kin-vfs
binaries into ~/.kin/bin, updates your shell profile (.zshrc / .bashrc), and then
runs the interactive setup wizard.
Configure the installer with environment variables:
KIN_VERSION: Pin a specific version to download (e.g.0.1.0). If omitted, the latest release is resolved automatically.KIN_DIR: Custom installation directory (defaults to~/.kin).KIN_NO_SETUP: Set to1to skip the interactive setup wizard after the binaries are downloaded.
See docs/quickstart.md for the full end-to-end walkthrough.
Build a semantic graph over your codebase:
kin initOptions:
[PATH]: Directory to initialize (defaults to the current directory).--force: Initialize even if a.git/directory is detected.--git-history <off|recent|full>: Git history import depth (default:recent).--no-lsp: Skip LSP enrichment for a faster, tree-sitter-only init.
kin init builds the graph instantly without embeddings. Run kin embed to add the
vector index that powers semantic search and kin locate:
kin embedEmbeddings are generated locally with nomic-embed-text-v1.5 (768 dimensions; override
via KIN_EMBED_MODEL_ID). kin status --json reports embedding coverage under its
enrichment block (embeddingsIndexed / embeddingsPending / embeddingsTotal).
Run the setup wizard, or run health checks at any time:
kin setupOptions:
status: Show what's installed.doctor: Run a quick health check.--mode <native|compatibility>: Repository operation mode.--shell <zsh|bash|powershell>: Target shell for profile updates.--auto-daemon: Auto-startkin-daemonwhen entering workspaces.
- Status of the working copy:
kin status [--json]
- Commit changes semantically:
kin commit -m "commit message" - Show the change log:
kin log [-n <count>]
- Semantic diff:
kin diff [<base>] [<head>]
- Search entities (add
--semanticfor vector similarity over what is embedded):kin search "<pattern>" [--semantic] [--show-body] - Locate files relevant to an issue:
kin locate "<problem text>" [--explain] - Eject and restore files:
kin eject [--force]
Kin ships with a built-in MCP (Model Context Protocol) server that exposes semantic tools to AI assistants (Claude, Cursor, Gemini, Codex, etc.). It runs as a stdio server that the MCP client launches as a subprocess:
kin mcp startFor the full tool surface, see docs/mcp-tools.md.
To understand the philosophy behind Kin, see the thesis document.