imp
@katforge/imp is
KATFORGE's git and fleet workflow tool. All git goes through it: AI-split commits, changelog generation, releases, and fleet-wide shipping across every repo in the
KATFORGE root.
Use a conversational agent for open-ended work. Use
@katforge/imp for the repeated git
ritual where input, output, validation, and rollback behavior should stay the
same across repositories.
See it work
Turn one mixed working tree into focused, reviewable commits without manually
sorting every file first. The recording is generated from
@katforge/imp's
deterministic VHS tape; click it for the full-size terminal.
imp split — turn a dirty tree into reviewable commitsExplore the common workflows →
Install
pip install imp-git
imp config
imp doctor
Try it without installing with uvx --from imp-git imp doctor or
pipx run --spec imp-git imp doctor. Python 3.10+ and Git are required. The
GitHub CLI is required for GitHub-backed operations such as pull requests.
Daily flow
imp commit # AI-split staged changes into logical commits
imp push # push with upstream handling
imp release # squash + changelog + tag + push (interactive)
imp ship # commit + release in one shot, no prompts
imp fleet # run ship on every dirty repo under the current directory
imp release --rc publishes a GitHub pre-release (deploy CI targets qa); --stable publishes a full release (prod). imp ship --version 2.0.0 re-baselines a major line a level bump can't reach.
Versioning
The git tag is the canonical version. Manifests (package.json, composer.json, pyproject.toml, cli/pyproject.toml) carry downstream copies, and every release — stable or rc — rewrites them to match the tag before tagging, so the two can never drift. Repos with a dynamic pyproject version (hatch-vcs) are left alone; they already derive from the tag.
imp version # show each manifest's version against the tag (exit 1 on drift)
imp version --sync # rewrite drifted manifests to match the tag
--sync leaves the changes uncommitted; land them with imp commit or the next release. The plain form exits non-zero on drift, so it can gate CI. Fleet-wide drift is visible in hearth versions.