License: MIT TypeScript React Electron Tailwind CSS Vite
Git Account Manager with complete GitHub CLI integration, SSH key management, and repository browser
Git X is a modern Electron desktop application for managing multiple Git accounts, SSH keys, GitHub CLI authentication, and browsing both local and remote repositories β all from a single interface.
- Multiple accounts β Manage several Git accounts simultaneously
- Quick switching β Activate/deactivate accounts with a single click
- Automatic configuration β Git configures automatically when switching accounts
- Export β Export your accounts in JSON format
- Automatic generation β Create 4096-bit RSA SSH keys
- Multiple keys β Manage different keys for different services
- Secure export β Export public keys to add to GitHub/GitLab
- Validation β Verify that keys are valid
- Automatic login β Web authentication with one-time codes
- Automatic configuration β Git configures with your account automatically
- Multiple account handling β Switch between different GitHub accounts easily
- Intuitive interface β Step-by-step process with visual indicators
- Local repo scanning β Automatically discovers Git repositories in common directories (Desktop, Documents, Projects, Developer)
- Custom search paths β Add your own folders to expand repo discovery
- Remote repos β Lists your GitHub repositories via
ghCLI - Commit history β Browse commits with author, date, and full message
- Uncommitted changes β View modified/added/deleted files with status indicators
- Inline diffs β Color-coded diff viewer for each file (additions in green, deletions in red)
- Quick commit & push β Stage, commit, and push changes directly from the app
- Open in editor β Launch repos in VS Code, Cursor, or Claude editor
- Caching β Repository lists are cached in localStorage for fast startup
- Matrix-style animated startup screen with GSAP animations
- Developers β Switch between personal and work accounts
- Teams β Manage multiple projects with different configurations
- Students β Manage academic and personal projects
- Node.js (v18+)
- GitHub CLI (
gh) β required for GitHub authentication and remote repo listing
# Clone the repository git clone https://github.com/mauriciorossdev/git-x.git cd git-x # Install dependencies npm install # Run in development mode npm start
- Click "π Login with GitHub CLI" for automatic authentication
- Or use "β Add New Account" for manual configuration
- Complete your Git account information
- Done! Your account is configured
- Go to the "SSH Keys" tab
- Click "π Generate New Key"
- Choose the key type (4096-bit RSA recommended)
- Export the public key and add it to GitHub/GitLab
- Switch to the "Repos" tab
- Local repositories are auto-discovered; click "Add Folder" to add custom paths
- Remote GitHub repositories are fetched via
ghCLI - Select any repo to view commits, changes, and diffs
# Development npm start # Run in development mode (Electron Forge + Vite) # Linting npm run lint # Run ESLint npm run lint:fix # Auto-fix linting errors # Build npm run package # Package application (no installer) npm run make # Build distributable for current platform npm run make:mac # Build for macOS (DMG + ZIP) npm run make:win # Build for Windows (Squirrel + ZIP) npm run make:linux # Build for Linux (deb + rpm) # Release npm run release # Build and publish to GitHub Releases npm run release:beta # Build and publish as pre-release
src/
βββ main.ts # Electron main process (IPC handlers, shell access)
βββ preload.ts # Context bridge (window.electronAPI)
βββ renderer.ts # React entry point
βββ App.tsx # Root component (tabs: Account Manager / Repos)
βββ components/
β βββ GitAccountManager.tsx # Account & SSH key management
β βββ GitAccountList.tsx # Account list UI
β βββ GitStatus.tsx # Current Git config status
β βββ RepoView.tsx # Repository browser orchestrator
β βββ RepoSidebar.tsx # Local/remote repo navigation sidebar
β βββ RepoDetail.tsx # Commit history, diffs, changes viewer
β βββ SplashScreen.tsx # Animated startup screen
βββ services/
β βββ GitConfigService.ts # Git config read/write
β βββ GitHubCLIService.ts # GitHub CLI wrapper (auth, user info)
β βββ RepoService.ts # Repo scanning, commits, diffs, push
βββ contexts/
β βββ ThemeContext.tsx # Dark/light theme
βββ types/
βββ electron.d.ts # IPC API type definitions
βββ repo.ts # Repository data interfaces
All system commands (git, gh, ssh-keygen) flow through:
React β Service β window.electronAPI.executeCommand() β IPC β main.ts execAsync()
| Layer | Technology |
|---|---|
| Frontend | React 19 + TypeScript |
| Styling | Tailwind CSS v4 |
| Animation | GSAP |
| Desktop | Electron 37 |
| Bundler | Vite 5 |
| Packaging | Electron Forge |
| CI/CD | GitHub Actions (macOS, Windows, Ubuntu) |
Git X builds cross-platform installers via GitHub Actions:
| Platform | Format |
|---|---|
| macOS | .dmg, .zip |
| Windows | .exe (Squirrel), .zip |
| Linux | .deb, .rpm |
Releases are triggered automatically when a version tag is pushed (e.g., v1.0.0).
To use automatic login and remote repo features, install GitHub CLI:
# macOS brew install gh # Windows winget install GitHub.cli # Linux (Debian/Ubuntu) curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null sudo apt update && sudo apt install gh
gh --version # Check installationGo to System Preferences > Security & Privacy > Accessibility and add Terminal and/or Git X.
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_* ssh-add -l # Check SSH agent
Contributions are welcome! Please read our Contributing Guide for details.
- Fork the project
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- README-GitHub-CLI.md β Complete GitHub CLI guide
- README-SSH.md β SSH key management documentation
- CONTRIBUTING.md β Contribution guide
- SECURITY.md β Security policy and vulnerability reporting
This project is under the MIT License. See LICENSE for details.
- GitHub Issues β Report bugs
- GitHub Discussions β Ask questions
GitHub stars GitHub forks GitHub issues GitHub pull requests
Developed with β€οΈ for the developer community