geeto
v0.10.0
Published
AI-powered Git workflow automation CLI with smart commit messages, branch naming, and Trello integration
Maintainers
Readme
Geeto
AI-Powered Git Workflow Automation
Geeto automates your entire Git workflow — from staging to cleanup — with AI-powered branch naming, commit messages, release management, and Trello integration. Supports Gemini, GitHub Copilot, OpenRouter, and Groq.
Highlights
- AI-Powered — Branch names, commit messages, and release notes generated by Gemini, GitHub Copilot, OpenRouter, or Groq
- Full Git Workflow — Stage → Branch → Commit → Push → Merge → Cleanup in one command
- Release Manager — Semver bumping (stable + alpha/beta/rc), CHANGELOG.md, RELEASE.MD, GitHub/GitLab Releases, tag recovery
- Trello Integration — Link branches to cards, generate AI agent task lists
- GitHub + GitLab — Pull Requests / Merge Requests, Issues, repo settings, all from the terminal
- Git Toolkit — Branch cleanup, switcher, compare, cherry-pick, stash, amend, undo, stats, history
- Checkpoint Recovery — Resume interrupted workflows from any step
- Cross-Platform — macOS, Linux, Windows
Installation
Homebrew (macOS / Linux)
brew tap rust142/geeto
brew install geetoAPT (Debian / Ubuntu)
ARCH="$(dpkg --print-architecture)"
case "$ARCH" in
amd64|arm64) ;;
*) echo "Unsupported architecture: $ARCH"; exit 1 ;;
esac
DEB_URL="$(
curl -fsSL https://api.github.com/repos/rust142/geeto/releases/latest \
| grep -Eo "https://github.com/rust142/geeto/releases/download/[^\"]+/geeto_[^\"]+_${ARCH}\.deb" \
| head -n 1
)"
[ -n "$DEB_URL" ] || { echo "Could not find latest Geeto .deb for ${ARCH}"; exit 1; }
curl -fL "$DEB_URL" -o geeto.deb
sudo dpkg -i geeto.deb
rm geeto.debNPM / Bun
npm install -g geeto
# or
bun install -g geetoBinary (manual)
Download from Releases:
| Platform | Binary |
| ----------- | ------------------- |
| macOS x64 | geeto-mac |
| macOS ARM | geeto-mac-arm64 |
| Linux x64 | geeto-linux |
| Linux ARM | geeto-linux-arm64 |
| Windows x64 | geeto-windows.exe |
curl -fsSL https://github.com/rust142/geeto/releases/latest/download/geeto-linux -o geeto
chmod +x geeto
sudo mv geeto /usr/local/bin/Prerelease binary
To install a specific prerelease version (alpha, beta, or rc):
# Replace TAG with the version, e.g. v0.7.0-beta.1
curl -fsSL https://github.com/rust142/geeto/releases/download/TAG/geeto-linux -o geeto
chmod +x geeto
sudo mv geeto /usr/local/bin/Browse all prereleases at Releases.
From Source
curl -fsSL https://raw.githubusercontent.com/rust142/geeto/main/tools/install.sh | bashThe installer shows step-by-step progress, detects existing installs, and verifies the installation.
Prerequisites (depends on install method):
- Homebrew / APT / Binary — just Git ≥ 2.0 (runtime is bundled)
- NPM — Node.js ≥ 18 + Git ≥ 2.0
- Bun / From Source — Bun ≥ 1.0 + Git ≥ 2.0
Uninstall
Choose one method based on how you installed:
| Method | Command |
| -------- | -------------------------------------------------------------------------------------------- |
| Homebrew | brew uninstall geeto && brew untap rust142/geeto |
| APT | sudo dpkg -r geeto |
| NPM/Bun | npm uninstall -g geeto |
| Binary | sudo rm /usr/local/bin/geeto |
| Source | curl -fsSL https://raw.githubusercontent.com/rust142/geeto/main/tools/uninstall.sh \| bash |
The uninstall script supports flags:
--force— skip confirmation prompt--purge— also remove config directory (~/.geeto/)
Update
Choose one method based on how you installed:
| Method | Command |
| -------- | ----------------------------------------------------------------------------------------- |
| Homebrew | brew update && brew upgrade geeto |
| APT | Re-download the latest .deb from Releases and run sudo dpkg -i geeto.deb |
| NPM/Bun | npm update -g geeto |
| Binary | Download the latest binary from Releases |
| Source | curl -fsSL https://raw.githubusercontent.com/rust142/geeto/main/tools/update.sh \| bash |
The update script auto-detects your install method and guides you to the right upgrade path.
Quick Start
geetoOn first run, Geeto guides you through AI provider setup:
| Provider | Setup | | ------------------ | --------------------------------------------------------------------------------------------------------------- | | Gemini | Enter API key from Google AI Studio | | OpenRouter | Enter API key from OpenRouter | | GitHub Copilot | Uses Copilot REST API via GitHub CLI token — requires Copilot access (free or paid). | | Groq | Free API key from console.groq.com/keys — free models: Llama, Gemma, Mixtral. |
All config is saved locally in .geeto/.
How It Works
Geeto walks you through 6 steps in sequence:
- Stage — Select files to commit
- Branch — AI generates a branch name from your changes
- Commit — AI generates a conventional commit message
- Push — Push to remote with progress bar
- Merge — Merge to target branch
- Cleanup — Delete merged branches
Each step can also be run individually.
CLI Reference
Workflow
| Command | Description |
| -------------------- | ------------------------------- |
| geeto | Full workflow (all 6 steps) |
| geeto -s, --stage | Stage files interactively |
| geeto -sa, -as | Stage all changes automatically |
| geeto -c, --commit | Create commit with AI message |
| geeto -b, --branch | Create branch with AI name |
| geeto -p, --push | Push current branch to remote |
| geeto -m, --merge | Merge branches interactively |
Git Tools
| Command | Description |
| -------------------------- | ----------------------------------- |
| geeto -cl, --cleanup | Clean up local & remote branches |
| geeto -sw, --switch | Switch branches with fuzzy search |
| geeto -cmp, --compare | Compare current branch with another |
| geeto -cp, --cherry-pick | Cherry-pick from another branch |
| geeto -lg, --log | View commit history with timeline |
| geeto -sh, --stash | Manage stashes interactively |
| geeto -am, --amend | Amend the last commit |
| geeto -rw, --reword | Edit past commit messages |
| geeto -u, --undo | Undo the last git action safely |
| geeto -rv, --revert | Revert the last commit (soft reset) |
| geeto -al, --alias | Install shell aliases for geeto |
| geeto -sts, --stats | Repository statistics dashboard |
| geeto -st, --status | Pretty git status overview |
| geeto -pl, --pull | Pull from remote interactively |
| geeto -ft, --fetch | Fetch latest from remote |
| geeto --abort | Abort in-progress operation |
| geeto --prune | Remove stale remote branches |
GitHub / GitLab
| Command | Description |
| ------------------- | ---------------------------------------------------------------- |
| geeto -pr, --pr | Create a Pull Request (GitHub) or Merge Request (GitLab) |
| geeto -i, --issue | Create an Issue |
| geeto -t, --tag | Release & tag manager (semver + prerelease, changelog, Releases) |
| geeto -rp, --repo | Update repo description, topics & homepage (AI-powered) |
Trello
| Command | Description |
| ------------------------------ | --------------------------- |
| geeto -tr, --trello | Open Trello menu |
| geeto -tl, --trello-list | List boards and lists |
| geeto -tg, --trello-generate | Generate AI agent task list |
Settings
| Command | Description |
| -------------------------- | ---------------------------- |
| geeto --setup-gemini | Configure Gemini AI |
| geeto --setup-openrouter | Configure OpenRouter AI |
| geeto --setup-copilot | Configure GitHub Copilot |
| geeto --setup-github | Configure GitHub token |
| geeto --setup-gitlab | Configure GitLab token |
| geeto --setup-trello | Configure Trello integration |
| geeto --change-model | Switch AI provider / model |
| geeto --sync-models | Fetch latest model list |
| geeto --separator | Set branch name separator |
Options
| Command | Description |
| ---------------------- | ----------------------------------- |
| geeto -f, --fresh | Start fresh (ignore checkpoint) |
| geeto -r, --resume | Resume from last checkpoint |
| geeto -dr, --dry-run | Simulate commands without executing |
| geeto -v, --version | Show version |
| geeto -h, --help | Show help |
Trello Integration
Generate task instruction files for AI coding agents:
geeto --trello-generateCreates .github/instructions/tasks.instructions.md with structured task lists from your Trello cards — including step-by-step instructions, implementation checklists, and per-task confirmation flows.
.geeto/ Directory
v0.10.0+ —
.geeto/is the only supported config location. Any config from previous versions outside this directory is no longer read.
Geeto supports two config locations with local priority:
| Location | Scope | Priority |
| ----------- | --------------------- | ----------------------------------- |
| .geeto/ | Project-local | Higher — overrides global |
| ~/.geeto/ | Global (all projects) | Fallback when no local config found |
Set up once globally, every new project picks it up automatically. Override per-project by creating a local .geeto/ config.
New project setup: run any --setup-* command and choose "Save globally" when prompted — no copy-paste needed.
Already have local config? Open Settings (geeto --settings or via main menu) → AI → Save AI config globally (~/.geeto/) — moves all local AI config files to global in one step.
The .geeto/ folder is automatically added to .gitignore on first run (never committed). ~/.geeto/ lives outside any repo.
Config files
| File | Created by | Purpose |
| ---------------------- | ------------------------- | ------------------------------------------------------------------------- |
| gemini.toml | --setup-gemini | Gemini API key |
| openrouter.toml | --setup-openrouter | OpenRouter API key |
| groq.toml | --setup-groq | Groq API key |
| github.toml | --setup-github | GitHub personal access token |
| gitlab.toml | --setup-gitlab | GitLab token + instance URL |
| trello.toml | --setup-trello | Trello API key, token, board ID |
| branch-strategy.toml | --separator / first run | Branch separator char and last naming strategy (project-only, not global) |
State & cache files
These are always project-local — not read from ~/.geeto/.
| File | Created by | Purpose |
| ------------------------- | ----------------------------------- | ------------------------------------------------------------------------ |
| geeto-state.json | Automatically | Checkpoint state for workflow recovery (-r, --resume) |
| openrouter-model.json | --sync-models | Persisted OpenRouter model list (filtered, text/code only) |
| gemini-model.json | --sync-models | Persisted Gemini model list |
| groq-model.json | --sync-models | Persisted Groq model list |
| copilot-model.json | --setup-copilot / --sync-models | Persisted GitHub Copilot model list |
| last-ai-suggestion.json | Every AI call | Last raw AI response — inspect when branch/commit suggestions look wrong |
Development
git clone https://github.com/rust142/geeto.git
cd geeto
bun install
bun run build # Build
bun run dev # Development mode (run from source)
bun run check:fast # Quick lint
bun run check:full # Full typecheck + lintSee CONTRIBUTING.md for detailed guidelines.
Contributing
- Fork the repository
- Create a branch:
dev#your-feature - Make your changes
- Run checks:
bun run check:fast && bun run check:full - Submit a Pull Request to
developbranch
See CONTRIBUTING.md for details.
Support
If Geeto helps your workflow, consider supporting:
- ☕ Buy me a coffee on Saweria
- ⭐ Star this repository
- 🐛 Report bugs or suggest features
- 📢 Share with fellow developers
License
MIT — see LICENSE for details.

