A desktop app for managing GitHub SSH keys — generate, store, and clone with one click.
Built with Tauri v2 + SvelteKit 5 + Rust
- 📖 Read existing config — Automatically reads
~/.ssh/configon launch and displays all entries. - 🔑 Generate SSH keys — Enter a GitHub repo URL (
https://orgit@), and the app generates a new Ed25519 SSH key and adds it to your config. - ✏️ Edit & delete — Modify host details or remove entries (with optional key file cleanup).
- 📋 One-click copy — Copy public keys and
git clonecommands with a single click. - 🪟 Custom title bar — Dark, draggable title bar with minimize/maximize/close controls using Heroicons.
- 🌙 Dark theme — Modern dark UI built entirely with Tailwind CSS and Heroicons.
# Clone the repo
git clone https://github.com/YOUR_USER/git-config-manager.git
cd git-config-manager
# The source is in the "Git Config Manager" directory
cd "Git Config Manager"
# Install dependencies
npm install
# Run in development mode
npm run tauri devPrerequisites: Node.js ≥ 18, Rust (latest stable), and system dependencies for Tauri v2.
| Step | Description |
|---|---|
| 1 | Click Add Entry |
| 2 | Paste a GitHub repo URL (https://github.com/user/repo.git or git@github.com:user/repo.git) |
| 3 | Click Generate Key |
| 4 | A new Ed25519 SSH key is created at ~/.ssh/<user>_<repo> |
| 5 | A Host <user>_<repo> entry is added to ~/.ssh/config |
| 6 | The public key and git clone command are shown with copy buttons |
- All existing entries from
~/.ssh/configare displayed on launch - Edit — Click the pencil icon to modify Host, HostName, User, IdentityFile, or Port
- Delete — Click the trash icon to remove the entry (optionally deletes the key files too)
git-config-manager/
├── AGENT.md # Original specification
├── LICENSE # GPL v3
├── README.md # ← You are here
└── Git Config Manager/ # Full application source
├── src/ # SvelteKit frontend
│ ├── lib/components/ # UI components (Svelte 5)
│ ├── lib/utils/ # Helpers (clipboard, etc.)
│ ├── lib/types.ts # TypeScript interfaces
│ └── routes/ # Pages & layout
├── src-tauri/src/ # Rust backend
│ ├── lib.rs # Tauri command registration
│ ├── ssh_config.rs # ~/.ssh/config parser
│ └── ssh_keygen.rs # SSH key generation
├── package.json
├── vite.config.js
└── tauri.conf.json
Detailed documentation is available in the app README.
| Layer | Technology |
|---|---|
| Desktop | Tauri v2 |
| Frontend | SvelteKit 5 + TypeScript |
| Styling | Tailwind CSS v4 |
| Icons | Heroicons via heroicons-svelte |
| Backend | Rust with serde |
| Bundler | Vite |
cd "Git Config Manager"
npm run tauri buildThe compiled binary will be at src-tauri/target/release/git-config-manager.
| Command | Description |
|---|---|
get_ssh_config |
Read all entries from ~/.ssh/config |
add_ssh_config |
Add a new config entry |
update_ssh_config |
Update an existing entry |
delete_ssh_config |
Delete an entry (and optionally key files) |
generate_ssh_key |
Generate Ed25519 key from a repo URL |
get_public_key |
Read the contents of a .pub file |
parse_repo |
Parse a GitHub URL into (user, repo) |
# Rust unit tests (config parser, round-trip serialization)
cd "Git Config Manager/src-tauri"
cargo test
# Frontend type checking
cd "Git Config Manager"
npm run checkThis project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.