your entire git workflow. one binary.

zero telemetry no AI single binary Go 1.21+ pure stdlib MIT licensed Linux · macOS · Windows
install
$curl -fsSL https://aysdog.com/install-commitdog.sh | sh
works on Ubuntu, Fedora, Arch, Debian, Raspberry Pi, macOS Intel + Apple Silicon.
what it looks like
terminal
how it works
01
reads your diff
runs git diff --staged internally. parses changed files, added/removed functions, renamed symbols, and structural patterns. diff capped at 200KB — no surprises.
02
infers the message
detects commit type (feat/fix/refactor/docs/chore/test), scope from your folder structure, and a precise description of what actually changed. no hallucinations — purely deterministic.
03
you pick one
4 variations in conventional commits format. pick, edit inline, or quit. then push or skip — your call. the whole thing takes under 10 seconds.
commands
command what it does
commitdog reads staged diff, suggests 4 conventional commit messages, you pick one, commits, asks to push
commitdog log interactive git log with colored branch graph — j/k scroll, a show all commits, q quit
commitdog pr on a feature branch: interactive diff viewer → create PR. on main: list open PRs, review diff, merge or close
commitdog release bump version, build 5 binaries (linux/darwin/windows), commit, tag, push, create GitHub release, upload all binaries. auto-detects Go, Node.js, Rust, Python, Java
commitdog init creates GitHub repo via API, runs git init, stages everything, commits, and pushes — full first-push in one command, no browser needed
commitdog revert shows last 5 commits as a picker, pick the one to undo, creates a clean revert commit. handles merge commits with a branch picker
commitdog branch interactive branch menu — switch, create new, delete
commitdog switch jump straight to branch switcher
commitdog branch create create a new branch with optional base, offers to push with upstream set
commitdog branch ls list all local and remote branches, current highlighted
commitdog branch delete delete a branch locally with unmerged warning, optionally delete from remote too
commitdog merge merge a branch into current with diff preview and conflict detection
commitdog sync fetch + pull rebase + push in one shot — conflict-aware with recovery instructions
commitdog stash save, pop, or drop stashes interactively — goes straight to save if no stashes exist
commitdog setup saves your GitHub noreply email and classic PAT to ~/.config/commitdog/config.toml do once
commitdog --update update commitdog to the latest release automatically
commitdog --version print version with ascii art and command reference panel
commitdog --help print full help with all commands and workflow examples
uninstall Linux/macOS: rm $(which commitdog) — Windows: delete the exe from wherever you placed it
star history
Star History Chart
manual downloads — latest
Linux
amd64 (x86_64)
↓ download
Linux
arm64 (Raspberry Pi, etc)
↓ download
macOS
arm64 (Apple Silicon M1/M2/M3/M4)
↓ download
macOS
amd64 (Intel)
↓ download
Windows
amd64 (x86_64)
↓ download
from source
Go 1.21+ required
→ github
security
shell injection
every git command uses exec.Command with explicit args — no shell interpolation, ever. input is sanitized before use.
token storage
saved to ~/.config/commitdog/config.toml with 0600 permissions — only your user can read it
network calls
zero on normal commits, log, and reverts. init, pr, and release call the GitHub API. sync and push call git over your existing remote. no background pings, ever.
diff size
capped at 200KB — no memory issues on massive diffs
dependencies
pure Go stdlib — zero third-party packages. the entire source fits in ~20 files. read it in 20 minutes.
something broken? open an issue · want to contribute? read the source