Skip to main content

An AI-powered interactive git CLI with agentic tools for commits, code suggestions, and workflow automation.

Project description

messygit

messygit is an interactive CLI that turns messy git workflows into clean Conventional Commits — stage, commit, push, and get AI-powered project suggestions, all from one interface powered by Claude.

Why use it

  • Interactive REPL — one command drops you into a persistent session where you can stage, commit, push, and more without leaving.
  • AI commit messages — sends your staged diff to Claude and suggests a clean Conventional Commits subject line.
  • Project suggestions — an AI agent inspects your repo and recommends concrete next steps.
  • Token usage & cost — tracks the tokens each session uses and shows a rough cost estimate, with a one-command jump to billing.
  • Themed UI — a colored startup animation and prompt you can recolor with the theme command.
  • Safe by default — only the staged diff is sent to the model. Your API key is never printed in full.

Requirements

  • Python 3.10 or newer
  • Git (run inside a repository)
  • An Anthropic API key with access to the Messages API

Installation

pip install messygit

Install from source

cd messygit
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -e .

API key

messygit resolves the key in this order:

  1. Environment variable ANTHROPIC_API_KEY
  2. Config file ~/.messygit/config.json

You can set the key from within the messygit interface:

messygit > config YOUR_ANTHROPIC_API_KEY

Usage

messygit

This drops you into the interactive interface — an animated banner followed by a status dashboard, then the prompt:

 mmm    mmmm  eeeeeee  sssssss  sssssss  yy   yy  ggggggg  ii  tttttttt
 mm mm mm mm  ee       ss       ss        yy yy   gg       ii     tt
 mm  mmm  mm  eeeee    sssssss  sssssss    yy     gg  ggg  ii     tt
 mm       mm  ee            ss       ss    yy     gg   gg  ii     tt
 mm       mm  eeeeeee  sssssss  sssssss    yy     ggggg    ii     tt

  repo     messygit  ⎇ main
  status   3 staged · 2 modified
  api key  sk-ant-a...x3f2 (config)
  model    Haiku 4.5  $1 in · $5 out / 1M
  tokens   0 used this session
  ────────────────────────────────────────────────────────────
  Type help for commands · quit to exit

messygit (main) ❯

Commands

Commands are grouped on the help screen:

git

Command Description
add <file> or add . Stage files for commit
commit Generate an AI commit message from staged changes, then commit / cancel / edit
push Push commits to remote

messyagent

Command Description
suggest Get AI-powered next-step suggestions for your project

account

Command Description
config <key> Save your Anthropic API key to ~/.messygit/config.json
show Display a masked API key and its source
model or model <name> Switch the Claude model (run model to list models and pricing)
tokens Show this session's token usage and estimated cost, and open the billing console

app

Command Description
todo Open your todo list in $EDITOR (saved to ~/.messygit/todo.md)
theme or theme <name> Change the UI color (run theme to list presets)
help List available commands
quit / exit Exit messygit

Typical flow

messygit > add .
Staged everything

messygit > commit
feat(cli): add interactive REPL with ASCII banner
Commit with this message? [y/n/e] y

messygit > push

Tip: run suggest for AI next-step ideas, or theme to recolor the UI.

Commit message style

The model follows Conventional Commits: type(scope): description

Allowed types: feat, fix, docs, style, refactor, test, chore. Subjects are one line, imperative, lowercase, no trailing period.

Token usage & cost

messygit tracks the tokens used by AI commands (commit, suggest) for the current session and shows a running total after each call. Run tokens for a breakdown and a one-key jump to the Anthropic billing console:

messygit > tokens
╭─ token usage ─────────────────────────────╮
│ used     8,420 tokens                     │
│          6,200 in · 2,220 out             │
│ requests 2                                │
│ est cost ≈ $0.02                          │
╰───────────────────────────────────────────╯

The cost is a rough estimate at the selected model's pricing. The Anthropic API does not expose remaining account credits, so usage and cost are measured per session only.

Choosing a model

messygit defaults to Claude Haiku 4.5 (fast and cheap). Use model to list the available models and their token pricing, or model <name> to switch (your choice persists in ~/.messygit/config.json):

messygit > model
Available models — usage: model <name>
  ● haiku  Haiku 4.5   $1 in · $5 out / 1M  (current)
    sonnet Sonnet 4.6  $3 in · $15 out / 1M
    opus   Opus 4.8    $5 in · $25 out / 1M

messygit > model opus
! Opus 4.8 costs more than Haiku 4.5 ($5 in · $25 out / 1M vs $1 in · $5 out / 1M). Token usage will be billed at the higher rate.
Switch anyway? [y/N]:

Switching to a more expensive model prompts for confirmation first. The session cost estimate prices each request at the model used for it, so it stays accurate even if you switch mid-session.

Publishing to PyPI

This project uses GitHub Actions with PyPI trusted publishing — no API tokens needed in your repo.

One-time setup

  1. Go to your project on pypi.org
  2. Add a Trusted Publisher:
    • Owner: your GitHub username
    • Repository: messygit
    • Workflow name: publish.yml
    • Environment: leave blank

To release a new version

  1. Bump version in pyproject.toml
  2. Commit and push
  3. Create a GitHub release:
git tag v0.2.0
git push origin v0.2.0
  1. Go to GitHub → Releases → Draft a new release → select the tag → Publish

The workflow at .github/workflows/publish.yml will automatically build and upload to PyPI.

Manual publish (without CI)

rm -rf dist/
python -m build
twine upload dist/*

License

MIT (see pyproject.toml).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

messygit-0.3.2.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

messygit-0.3.2-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file messygit-0.3.2.tar.gz.

File metadata

  • Download URL: messygit-0.3.2.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for messygit-0.3.2.tar.gz
Algorithm Hash digest
SHA256 86509a7e37cf7aebf1d03c7debaea1a68d28a2ef7a332e339e41339013a6f331
MD5 46ad522c68a2d33e1a4cc366e948cee7
BLAKE2b-256 9f2a627b10af40464a6a7de813ce3aa0536f53dc9abd0307744d4f0a05535fe5

See more details on using hashes here.

Provenance

The following attestation bundles were made for messygit-0.3.2.tar.gz:

Publisher: publish.yml on jaytan3966/messygit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file messygit-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: messygit-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for messygit-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 81000fcd0b13045f7ca4f870a599b595c2016c851c738b6b70d9071f90250e8f
MD5 3b8806d4ce68b8323fc1b1ae78641273
BLAKE2b-256 8ecc315403d2513689802723f5dd2b33f81f2dffd5c1ab14335ecaa4652ce4ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for messygit-0.3.2-py3-none-any.whl:

Publisher: publish.yml on jaytan3966/messygit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page