aysdog docs

Everything you need to run, host, and contribute to aysdog tools. No fluff, no 47-step onboarding, no mandatory account creation.

Philosophy

Every tool we ship follows the same rules. If it breaks any of them, we don't ship it.

  • Zero telemetry. We genuinely don't want to know you exist.
  • Self-hostable forever. Your laptop, a $5 VPS, an air-gapped server in a bunker — all valid.
  • Single binary when possible. No npm circus. No multi-stage Docker nonsense. Drop it and run.
  • Zero external dependencies when we can get away with it. Pure stdlib. Auditable in an afternoon.
MIT licensed. Every repo is fully open source. Fork it, break it, ship your own version. We don't care as long as you don't add telemetry.

What's here

  • commitdog — git workflow CLI. commit messages, sync, stash, revert, release. one binary.
Interactive docs at docs.aysdog.com.

Installation

Binary tools install with a single command. No package manager, no sudo, no drama. Web apps need no install — open the link and use them.

commitdog — Linux / macOS

# one command, done
curl -fsSL https://aysdog.com/install-commitdog.sh | sh
 
✓ commitdog v0.2.5 installed

commitdog — Windows

irm https://aysdog.com/install-commitdog.ps1 | iex
 
✓ commitdog v0.2.5 installed

Verify

commitdog --version
commitdog v0.2.5

commitdog v0.2.5

A zero-dependency CLI that handles your entire git workflow. Commit, branch, log, PR, release — all from the terminal. Pure Go stdlib. No AI. No telemetry. Single binary.

Install

platformcommand
Linux / macOS (curl)curl -fsSL https://aysdog.com/install-commitdog.sh | sh
macOS (Homebrew)brew tap aysdog/commitdog && brew install commitdog
Arch Linux (AUR)yay -S commitdog-bin
Windows (PowerShell)irm https://aysdog.com/install-commitdog.ps1 | iex
Windows (winget)winget install aysdog.commitdog

First run

Run setup once to save your GitHub noreply email and classic PAT. After that, commitdog works fully offline for every commit and revert.

commitdog setup
# saved to ~/.config/commitdog/config.toml (0600)

Generate a GitHub token

commitdog needs a classic Personal Access Token to create repos, open PRs, and create releases. Fine-grained tokens will not work.

  1. Go to github.com/settings/tokens
  2. Click Generate new token → Generate new token (classic)
  3. Give it a name — e.g. commitdog
  4. Set expiration to your preference (90 days or no expiry)
  5. Check three scopes: repo, write:org, and read:user
  6. Click Generate token — copy it immediately, GitHub will not show it again
  7. Run commitdog setup and paste it when prompted
Stored locally at ~/.config/commitdog/config.toml with 0600 permissions. Only your user can read it. Never leaves your machine except when calling the GitHub API.

Commands

commandwhat it does
commitdogstage all, suggest 4 conventional commit messages, pick, commit, push
commitdog <file>stage a specific file only, then suggest + commit + push
commitdog loginteractive git log with colored branch graph — j/k scroll, a show all, q quit
commitdog pron feature branch: diff viewer → create PR. on main: list PRs, review, merge, close
commitdog releasebump version, build 5 binaries, changelog, tag, push, GitHub release + checksums
commitdog release --changelog-onlypreview grouped changelog since last tag, no release
commitdog release --init-cigenerate .github/workflows/release.yml for your project language
commitdog statusproject dashboard — latest commits, open PRs, branches, version, issues
commitdog branchinteractive branch menu — switch, create, delete
commitdog switchjump straight to branch switcher
commitdog branch createcreate new branch with optional base, push with upstream
commitdog branch lslist all local and remote branches
commitdog branch deletedelete branch locally + optionally remote, warns on unmerged
commitdog mergemerge a branch into current with diff preview
commitdog syncfetch + pull rebase + push — auto-fixes conflicts, auth errors, non-fast-forward
commitdog stashsave, pop, or drop stashes interactively
commitdog revertpick from last 5 commits, revert, handles merge commits with branch picker
commitdog initcreate GitHub repo via API, git init, first commit, first push — no browser
commitdog setupsave GitHub noreply email and classic PAT
commitdog --updateupdate to latest release automatically
commitdog --versionprint version with ascii art and command panel
commitdog --helpprint help

Daily workflow

Stage everything and get smart conventional commit suggestions based on what actually changed — function names, file types, scope inference.

commitdog
 
nothing staged. staging all changes...
 
suggestions:
1 feat(auth): add refreshToken and verifyToken
2 feat: implement refreshToken in auth
3 feat: update auth module
4 feat(auth): add refreshToken, add verifyToken — update middleware
 
[1/2/3/4] pick, [e] edit, [q] quit › 1
 
✓ committed: feat(auth): add refreshToken and verifyToken
✓ pushed to origin/main

If you pick e, your $EDITOR opens with the suggestion pre-filled. Edit and save — commitdog uses whatever you write.

Secret detection

Before showing you any commit suggestions, commitdog silently scans your staged diff for secrets. If it finds one, it blocks the commit and shows you exactly where.

commitdog
 
✗ possible secret detected in staged changes:
 
· AWS access key in config.go
var awsKey = "AKIAIOSFODNN7EXAMPLE"
 
commit anyway? this will push secrets to your remote. [y/N] ›

Catches AWS keys, GitHub tokens, private keys, Stripe keys, Slack tokens, generic passwords and API keys. Skips _test files automatically. You can override with y — it's a warning, not a hard block.

Tip: to remove a secret already committed, use git filter-repo or BFG Repo Cleaner. commitdog will tell you this if you type N.

Sync with auto-recovery

Fetch, pull rebase, and push in one command. If anything goes wrong, commitdog diagnoses the error and offers a fix — it doesn't just print the raw git message and exit.

commitdog sync
 
syncing origin/main
fetching... done
pulling (rebase)... done
pushing... done
✓ origin/main is in sync

If push fails with HTTPS auth, commitdog detects it and offers to switch your remote to SSH automatically:

push failed: GitHub no longer supports HTTPS password auth.
switch remote to SSH? (git@github.com:you/repo.git) [Y/n] › Y
✓ remote switched to SSH
retrying push...
✓ pushed to origin/main

Other auto-recoveries: non-fast-forward (pull and retry), stale remote tag (delete and retry), missing upstream (set upstream and push).

Git log with branch graph

Interactive terminal log with a colored multi-lane branch graph. Each branch gets its own RGB color.

commitdog log
 
● e3e28ab (HEAD → main) feat: ship v0.2.5 2h ago
● 160bf5a Merge branch 'feat/secret-scan' 3h ago
├─╮
│ ● 1d85daf (feat/secret-scan) feat: add secret detection
│ │
● │ 831ee73 fix: getLatestGitTag ancestry bug
│╯
● d80d8e1 (tag: v0.2.4) chore: release v0.2.4

Controls: j / k or arrow keys to scroll, a to toggle all commits (default shows 20), q to quit.

Pull requests

On a feature branch — interactive diff viewer, then prompts for PR title and description, opens the PR on GitHub. On main — lists all open PRs, pick one to review, merge, or close.

commitdog pr
 
creating PR: feat/auth → main
 
┌─ auth.go +47 -3 ████████████░░░░
├─ middleware.go +12 -0 ████░░░░░░░░░░░░
└─ README.md +5 -2 ██░░░░░░░░░░░░░░
 
3 files changed +64 -5
 
[↑/↓] navigate [enter] view diff [c] create PR [q] quit

After merge, the remote branch is deleted automatically. Supports merge, squash, and rebase strategies.

Release with atomic rollback

Every release step registers an undo. If anything fails — network cut, GitHub API down, build error — commitdog walks back every completed step in reverse. Your repo is always left in a clean state.

commitdog release
 
detected: Go · current version: v0.2.4
 
1 patch → v0.2.5
2 minor → v0.3.0
3 major → v1.0.0
4 custom
 
[1/2/3/4/q] pick › 1
 
changelog preview:
### Bug Fixes
- fix(changelog): native SHA256, clean release body
 
release v0.2.4 → v0.2.5? [y/n] › y
 
bumping version in main.go... ✓
building linux/amd64... ✓
building linux/arm64... ✓
building darwin/amd64... ✓
building darwin/arm64... ✓
building windows/amd64... ✓
committing... ✓
tagging v0.2.5... ✓
pushing... ✓
creating GitHub release... ✓
uploading commitdog-linux-amd64... ✓
uploading commitdog-linux-arm64... ✓
uploading commitdog-darwin-amd64... ✓
uploading commitdog-darwin-arm64... ✓
uploading commitdog-windows-amd64.exe... ✓
uploading checksums.txt... ✓
✓ v0.2.5 released
https://github.com/aysdog/commitdog/releases/tag/v0.2.5

Auto-detects Go, Node.js, Rust, Python. If the build fails halfway, version bump is reverted, tag is deleted locally and remotely, release is deleted from GitHub. Nothing is left in a half-released state.

Version drift detection. If your version file says v0.2.3 but the latest git tag is v0.2.5, commitdog warns before touching anything. You decide whether to proceed.

Changelog preview

Preview the grouped changelog since your last tag without triggering a release.

commitdog release --changelog-only
 
### Features
- feat(auth): add OAuth device flow
 
### Bug Fixes
- fix(sync): handle non-fast-forward on retry
 
### Refactoring
- refactor: move package manager code to packagemanagers.go

Generate CI workflow

Auto-detects your project language and writes a GitHub Actions workflow that builds binaries and creates a release on every tag push.

commitdog release --init-ci
 
✓ created .github/workflows/release.yml for go

Supports Go (cross-compiled 5 platforms + checksums), Node.js, Rust, Python, and a generic fallback.

Project status dashboard

commitdog status

Two-column terminal dashboard. Left: recent commits and open PRs. Right: project info, current version, branch list, open issues. Reads live from your local git repo and GitHub API.

Uninstall

# Linux / macOS
rm $(which commitdog) && rm -rf ~/.config/commitdog
 
# Windows (PowerShell)
Remove-Item "$env:USERPROFILE\AppData\Local\commitdog.exe"
Remove-Item -Recurse "$env:APPDATA\commitdog"

How to contribute

Open an issue first. Describe what you want to fix or add. If it fits the philosophy — zero telemetry, minimal deps, self-hostable — we'll merge it.

  • Fork the repo on GitHub.
  • Make your changes in a new branch.
  • Open a PR with a clear description of what changed and why.
  • Don't add telemetry. Seriously.
Rule #1: don't add telemetry. Not "anonymous" telemetry. Not a single ping. If your PR phones home in any way, it won't be merged.

Roadmap

No promises, no timelines. Things shipped and things coming.

Version history

versionwhat shipped
v0.2.5native Go SHA256 checksums · clean release body · packagemanagers.go separated
v0.2.4secret detection · atomic release rollback · detectAndRecover (8 error patterns) · version drift check · changelog.go · packagemanagers.go
v0.2.3initial rollback chain · sync hardened · recover.go introduced
v0.2.2commitdog status dashboard · log graph renderer · auto-changelog · SHA256 checksums · Homebrew + AUR automation
v0.2.1Homebrew tap · AUR · winget · smart version init for unknown project types
v0.2.0commitdog pr · commitdog release with binary uploads
v0.1.9HTTPS→SSH auto-fix · merge commit revert with branch picker
v0.1.8commitdog log with colored branch graph
v0.1.4branch / switch / merge / sync / stash / revert

Shipped features

  • commitdog log — interactive git log with RGB-colored multi-lane branch graph. v0.1.8
  • commitdog merge — merge with interactive diff preview. v0.1.4
  • commitdog branch / switch / sync / stash / revert — full git workflow. v0.1.4
  • HTTPS remote auto-fix — detects push auth failure, converts to SSH, retries. v0.1.9
  • merge commit revert — branch picker instead of crashing on merge reverts. v0.1.9
  • commitdog pr — interactive diff viewer, create PR, list/review/merge from main. v0.2.0
  • commitdog release — bump version, build 5 binaries, tag, push, GitHub release. v0.2.0
  • Homebrew tapbrew tap aysdog/commitdog && brew install commitdog. v0.2.1
  • AURyay -S commitdog-bin. v0.2.1
  • wingetwinget install aysdog.commitdog. v0.2.1
  • commitdog status — project dashboard with commits, PRs, branches, version. v0.2.2
  • auto-changelog — grouped conventional commit changelog on every release. v0.2.2
  • SHA256 checksums — checksums.txt uploaded to every release. v0.2.2
  • secret detection — scans staged diff before every commit, catches 10 secret patterns. v0.2.4
  • atomic release rollback — every release step has an undo, full rollback on any failure. v0.2.4
  • detectAndRecover — 8 git error patterns mapped to auto-fixes. v0.2.4
  • version drift check — warns before release if version file and git tag don't match. v0.2.4
  • release --changelog-only — preview changelog without releasing. v0.2.4
  • release --init-ci — generate GitHub Actions release workflow. v0.2.4
  • native SHA256 — pure Go crypto/sha256, no shell dependency. v0.2.5

Up next

  • GitHub OAuth device flow — zero-friction setup, no manual PAT copy-paste.
  • commitdog today — daily summary: recent commits, open PRs, stash list, pending diff.
  • better stack detection — Next.js, Remix, SvelteKit, Astro via package.json.
  • secret history scan — scan full commit history, not just staged diff.
  • aysdog Managed — optional hosted layer for teams. central secret rotation, signed binary provenance.