A guided Git workflow for consistent branches, commits, reviews, releases, and cleanup.
Geeto turns working-tree changes into a clean, merged branch through one interactive CLI. It handles the repetitive Git steps, uses your preferred AI provider for suggestions, and keeps every action available as a standalone command when you need more control.
Stage → Branch → Commit → Push → Merge → Cleanup
brew tap IDNCraft/geeto
brew trust --formula idncraft/geeto/geeto
brew install geetoOr install from npm:
npm install -g geetoRequires Git 2.0 or newer. npm installations also require Node.js 18 or newer. See all installation methods for Bun, APT, standalone binaries, and source builds.
Run Geeto inside a Git repository:
geetoOn the first run, choose an AI provider and follow the guided workflow. Geeto previews generated branch names, commit messages, and release notes before applying them.
- Why Geeto
- Workflow
- AI Providers
- CLI Reference
- Configuration
- Installation
- Migrating from rust142
- Development
- Finish the whole branch lifecycle — Move from local changes to a merged branch without manually chaining Git commands.
- Keep humans in control — Review generated names, messages, and release notes before Geeto writes or publishes anything.
- Use the provider you already trust — Choose Gemini, OpenRouter, Groq, OpenAI Codex, or OpenCode Zen.
- Recover interrupted work — Resume a saved checkpoint instead of repeating completed steps.
- Stay in one interface — Manage GitHub, GitLab, releases, Trello tasks, and everyday Git utilities from the terminal.
Running geeto starts six guided steps:
- Stage — Review working-tree changes and choose what to stage.
- Branch — Generate, edit, or manually enter a branch name.
- Commit — Generate and approve a Conventional Commit message.
- Push — Push the working branch to its remote.
- Merge — Select a target branch and complete the merge.
- Cleanup — Remove merged branches when they are no longer needed.
Geeto saves progress between steps. Use geeto --resume after an interruption or geeto --fresh to ignore the saved checkpoint. Every workflow step is also available as a standalone command.
Geeto supports five provider integrations:
| Provider | Authentication | Runtime notes |
|---|---|---|
| Gemini | Google AI Studio API key | Project-local or global config |
| OpenRouter | OpenRouter API key | Project-local or global config |
| Groq | Groq API key | Project-local or global config |
| OpenAI Codex | OpenAI API key or Codex CLI OAuth with codex login |
Generation runs with an isolated Geeto runtime home |
| OpenCode Zen | Free access or OpenCode Zen API key | Runs in an isolated Geeto runtime environment |
Generated content remains reviewable before use. Change providers or model favorites from the interactive settings menu, or use geeto --change-model and geeto --sync-models directly.
| 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 |
| 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 -sm, --submodules |
Manage Git submodules |
geeto --abort |
Abort in-progress operation |
geeto --prune |
Remove stale remote branches |
| Command | Description |
|---|---|
geeto -pr, --pr |
Create a Pull Request (GitHub) or Merge Request (GitLab) |
geeto -rvp, --review-pr |
Review and comment on a Pull Request or Merge Request with AI |
geeto -rvi, --review-issue |
Review and comment on an Issue with AI |
geeto -i, --issue |
Create an Issue |
geeto -t, --tag |
Manage semver releases, changelogs, tags, and GitHub or GitLab Releases |
geeto -rp, --repo |
Update repository description, topics, and homepage |
| Command | Description |
|---|---|
geeto -tr, --trello |
Open Trello menu |
geeto -tg, --trello-generate |
Generate AI agent task list |
| Command | Description |
|---|---|
geeto --setup-gemini |
Configure Gemini |
geeto --setup-openrouter |
Configure OpenRouter |
geeto --setup-groq |
Configure Groq |
geeto --setup-codex |
Configure OpenAI Codex with an API key or OAuth |
geeto --setup-opencode |
Configure free or API-key OpenCode Zen access |
geeto --setup-github |
Configure GitHub access |
geeto --setup-gitlab |
Configure GitLab access and instance URL |
geeto --setup-trello |
Configure Trello access and board |
geeto --change-model |
Switch AI provider or model |
geeto --sync-models |
Refresh available provider models |
geeto --separator |
Set the branch-name separator |
| 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 + update status |
geeto -h, --help |
Show help |
| Command | Description |
|---|---|
geeto -up, --update |
Update geeto to the latest version |
geeto --where |
Show installation path & method |
geeto --uninstall |
Uninstall geeto with auto-detection |
Turn selected Trello cards into individual Markdown task files:
geeto --trello-generateGeeto preserves each card's description and checklists, then writes one file per card to .geeto/tasks/.
The project-level .geeto/ directory is added to .gitignore automatically.
Gemini, OpenRouter, Groq, GitHub, and GitLab support project and user-level configuration. Project-local config takes priority:
| Location | Scope | Priority |
|---|---|---|
.geeto/ |
Project-local | Higher — overrides global |
~/.geeto/ |
Global (all projects) | Fallback when no local config found |
Use global config for shared credentials, then override individual projects when needed. OpenAI Codex and OpenCode Zen access stays user-level. Trello, branch strategy, checkpoints, and model favorites stay project-local.
Run a --setup-* command for direct setup, or open Configure providers, integrations, and defaults from the main menu. Geeto adds project-local .geeto/ data to .gitignore; ~/.geeto/ remains outside the repository.
| 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 |
codex.toml |
--setup-codex |
Global OpenAI Codex authentication state |
opencode-zen.toml |
--setup-opencode |
Global validated OpenCode Zen access state |
github.toml |
--setup-github |
GitHub personal access token |
gitlab.toml |
--setup-gitlab |
GitLab token + instance URL |
trello.toml |
--setup-trello |
Project-local Trello API key, token, and board ID |
branch-strategy.toml |
--separator / first run |
Branch separator char and last naming strategy (project-only, not global) |
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 |
codex-model.json |
--setup-codex / --sync-models |
Persisted OpenAI Codex model list |
opencode-model.json |
--sync-models |
Persisted OpenCode Zen model favorites |
last-ai-suggestion.json |
Every AI call | Last raw AI response — inspect when branch/commit suggestions look wrong |
Choose the package that matches your environment:
brew tap IDNCraft/geeto
brew trust --formula idncraft/geeto/geeto
brew install geetoIf the legacy tap is still installed, remove it before installing Geeto:
brew untap rust142/geeto
brew install idncraft/geeto/geetonpm install -g geeto
# or
bun install -g geetoDownload the latest .deb package for amd64 or arm64 from GitHub Releases, then install it:
sudo dpkg -i geeto_<version>_<architecture>.debDownload the matching binary from GitHub Releases:
| Platform | Binary |
|---|---|
| macOS x64 | geeto-mac |
| macOS ARM64 | geeto-mac-arm64 |
| Linux x64 | geeto-linux |
| Linux ARM64 | geeto-linux-arm64 |
| Windows x64 | geeto-windows.exe |
On macOS or Linux, make the downloaded binary executable and move it into PATH:
chmod +x geeto-<platform>
sudo mv geeto-<platform> /usr/local/bin/geetogit clone https://github.com/IDNCraft/geeto.git
cd geeto
bun install
bun run build
bun link| Installation method | Requirements |
|---|---|
Homebrew / .deb |
Git 2.0 or newer |
| Standalone binary | Git 2.0 or newer |
| npm | Node.js 18 or newer, Git 2.0+ |
| Bun / source | Bun 1.0 or newer, Git 2.0+ |
Geeto moved from rust142/geeto to IDNCraft/geeto. Existing .geeto/ project and user configuration remains compatible; do not delete it during migration.
Remove the legacy formula and tap, then install from IDNCraft:
brew uninstall geeto
brew untap rust142/geeto
brew tap IDNCraft/geeto
brew trust --formula idncraft/geeto/geeto
brew install idncraft/geeto/geetoThe package name remains geeto, so reinstalling updates the existing global package:
npm install -g geeto@latest
# or
bun install -g geeto@latestPoint the existing clone at the new repository before pulling updates:
git remote set-url origin git@github.com:IDNCraft/geeto.git
git remote -v
git pullDownload the replacement binary or .deb from IDNCraft releases and install it over the previous version.
Verify the migrated installation:
geeto --versionGeeto detects the active installation method for updates, diagnostics, and removal:
geeto --update # Install the latest available version
geeto --where # Show binary, version, config path, and install method
geeto --uninstall # Remove Geeto after confirmationUse geeto --version to print the installed version and update status. During uninstall, Geeto asks separately whether it should remove configuration and shell aliases.
git clone https://github.com/IDNCraft/geeto.git
cd geeto
bun install
bun run build # Build
bun run dev # Development mode (run from source)
bun run check:fast # Formatting, TypeScript, Markdown, and YAML lint
bun run check:full # Typecheck + production buildSee CONTRIBUTING.md for detailed guidelines.
- 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
mainbranch
See CONTRIBUTING.md for details.
If Geeto helps your workflow, consider supporting:
- ☕ Buy me a coffee on Saweria
- ⭐ Star this repository
- 🐛 Report bugs or suggest features
MIT — see LICENSE for details.
