Skip to content

Install and run

uv tool install kraft-sdlc
kraft admin init   # register the MCP server and skills with your agent
kraft              # http://127.0.0.1:8765

No uv? The install script fetches the newest release and installs uv first if you do not have it:

curl -fsSL https://raw.githubusercontent.com/itsOmidKarami/kraft/main/install.sh | sh

install.sh is short and worth reading before you pipe it to a shell. kraft admin update installs the newest release later on (--restart also restarts a running server, the same way it was running), and kraft --version says what you have.

Prefer driving Kraft from a coding agent instead of this shell? kraft admin init above already installs the /kraft:* skills alongside the MCP server — or skip it and go straight to the Claude Code plugin marketplace, which installs both in one step and keeps itself updated. See Agent integration for the slash commands (/kraft:onboard, /kraft:board, /kraft:gates, ...) either way gives you.

Homebrew (macOS)

brew tap itsOmidKarami/kraft
brew install kraft
kraft admin init
kraft

kraft admin update detects a Homebrew install and runs brew upgrade kraft instead of its usual uv tool install, so either update path works.

From source (development)

just setup      # uv sync + npm install
just install    # build the SPA, install the `kraft` command
kraft           # http://127.0.0.1:8765

Releasing, and the labels a pull request needs: CONTRIBUTING.md.

Where state lives

$KRAFT_HOME (default ~/.kraft):

~/.kraft/run/ orchestrator.db, index.db, logs/, results/, worktrees/, attachments/
~/.kraft/templates/ the YAML the Settings screens edit — chain templates, registry.yaml, policy.yaml, repos.yaml, access.yaml

templates/ is seeded from the packaged defaults on first run and never overwritten after, so an upgrade cannot clobber an edited policy. It is a plain directory of files on purpose: the Settings screens are an editor for something you can diff, revert, and git init yourself.

Binding off loopback requires a password — set one in Settings → Access while still on 127.0.0.1. The process refuses to start on a LAN address without one. See Remote access for the supported way to reach the board from another device.

KRAFT_HOME=~/kraft-other kraft gives you a second, fully separate instance.

Requirements

Python 3.14+, uv, Node 20+, git, and claude for real runs (not needed for just dev). bd is optional: with it, every work item gets a tracked bead; without it Kraft still files the work anyway, saying so. Semantic search is opt-in: just setup-vector (downloads a ~130MB model on first search); without it /search still works in FTS mode.