π A blazing-fast Textual TUI for managing and syncing dozens of Git repositories at once β think lazygit, but for your entire workspace.
- Bulk Repository Management - Add, edit, rename, and remove multiple repositories interactively
- Live Status Grid - Real-time display of branch, ahead/behind, and dirty indicators for all repos
- One-Click Sync Operations - Bulk sync (
add β commit β pull β push) for selected or all repositories - Flexible Repository Paths - Support for any repository path including %APPDATA%, client folders, external drives
- Real-time Command Output - Live progress bars and detailed command feedback
- Full CLI Fallback - Complete command-line interface (
goro sync-all,goro status my-repo, etc.) - Cross-Platform Support - Works seamlessly on Windows, macOS, and Linux
- Intuitive Keyboard Shortcuts - Efficient TUI navigation with quick access keys
- Textual - Modern Python TUI framework for rich terminal interfaces
- Typer - Modern CLI framework for beautiful command-line interfaces
- Pydantic - Data validation using Python type annotations
- Rich - Rich text and beautiful formatting in the terminal
- Asyncio - Concurrent Git operations for optimal performance
- Hatch - Modern Python project management and packaging
- Python 3.8 or higher
- Git installed and available in PATH
- Terminal that supports ANSI colors and modern terminal features
pip install goro
# or using uv (faster)
uv tool install gorogit clone https://gitlab.com/user4302_Projects/coding/python/textual/goro.git
cd goro
pip install -e ".[dev]"goro # launches the interactive TUI instantly# Initialize configuration
goro init
# Check status of all repositories
goro status
# Check status of specific repository
goro status my-repo
# Sync all repositories
goro sync-all
# Sync specific repository
goro sync my-repo
# Edit repository configuration
goro edit my-repo --name new-name --path /new/path| Key | Action |
|---|---|
a |
Add repository |
s / S |
Sync selected β’ all repos |
t |
Show detailed git status |
F2 |
Edit / rename repository |
c |
Clear logs |
q |
Quit |
goro/
βββ src/goro/ # Main package
β βββ cli.py # Command-line interface
β βββ config.py # Configuration management
β βββ commands/ # CLI command implementations
β β βββ edit.py # Repository editing commands
β β βββ status.py # Status checking commands
β β βββ sync.py # Synchronization commands
β βββ tui/ # Textual TUI components
β βββ app.py # Main TUI application
β βββ css/ # Styling and themes
β βββ dialogs/ # Modal dialogs
β βββ utils.py # Utility functions
β βββ widgets/ # Custom UI widgets
βββ pyproject.toml # Project configuration
βββ README.md # This file
βββ CHANGELOG.md # Version history
βββ CONTRIBUTING.md # Development guidelines
βββ ROADMAP.md # Future development plans
Goro stores configuration in ~/.goro/config.yaml by default. The configuration includes:
- Repository names and paths
- Plugin configurations
- Display preferences
- Git operation settings
Configuration is automatically created on first run.
# Clone and enter
git clone https://gitlab.com/user4302_Projects/coding/python/textual/goro.git
cd goro
# Recommended: use uv (super fast)
uv venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows PowerShell
# Install editable with dev dependencies
uv pip install -e ".[dev]" # or: pip install -e ".[dev]"
# Launch the app while developing
uv run goro # picks up your local changes instantly# Format code
black src/
isort src/
# Type checking
mypy src/
# Run tests
pytest
# Build package
hatch build# Run all tests
pytest
# Run with coverage
pytest --cov=goro
# Run specific test file
pytest tests/test_config.py# Build the package
hatch build
# Build produces wheel in dist/
# dist/goro-0.5.1-py3-none-any.whlGoro is distributed via PyPI and can be installed using standard Python package managers. For system-wide deployment:
# Using pip
pip install goro
# Using uv (recommended for speed)
uv tool install goro
# Using conda (if available)
conda install -c conda-forge goroWe welcome contributions! Please read CONTRIBUTING.md for detailed guidelines.
Important: For any questions, bug reports, feature requests, or security concerns, please open an issue on GitLab: https://gitlab.com/user4302_Projects/coding/python/textual/goro/-/issues
No email or direct messaging support is available.
This project is licensed under the MIT License - see the LICENSE file for details.
For any questions, bug reports, feature requests, or security concerns, please open an issue on GitLab: https://gitlab.com/user4302_Projects/coding/python/textual/goro/-/issues
No email or direct messaging support is available.
| Platform | Purpose | Link |
|---|---|---|
| GitLab | Source of truth β’ Issues β’ MRs β’ CI/CD | https://gitlab.com/user4302_Projects/coding/python/textual/goro |
| GitHub | Mirror for discoverability & extra stars | https://github.com/user4302/goro |
Please file issues and feature requests on GitLab β that's where I actively track and fix everything.
GitHub mirror is kept in sync automatically.
- Built with Textual - the modern Python TUI framework
- Inspired by tools like lazygit and gitui
- Thanks to all contributors who help make Goro better!
β Star on whichever platform you prefer β every star helps!
(If you star both, I won't complain π)
