A native macOS application for managing SSH profiles with seamless iTerm2 integration.


- Create, edit, and organize SSH profiles with full configuration options
- Organize profiles into customizable, draggable groups
- Real-time search and filtering across all profiles
- Batch operations for connecting to multiple servers simultaneously
- Import from
~/.ssh/config
and export profiles for backup - Favorites system for quick access to frequently used connections
- Open SSH sessions directly in iTerm2
- Multiple connection modes: tabs, windows, or split panes
- Automatic profile syncing with iTerm2's dynamic profiles
- Custom startup commands and login scripts
- Terminal customization (fonts, colors, cursor styles)
- Quick localhost console access from the home screen
- Dual-pane file browser interface
- Transfer files between local and remote systems
- Server-to-server transfers via SSH tunneling
- Directory transfer support with structure preservation
- Transfer queue with detailed error reporting
- Context menu actions for file operations
- SSH key management with multiple identity files
- Jump host support for complex network topologies
- Port forwarding configuration (local and remote)
- Global default settings for all profiles
- Secure password storage in macOS Keychain
- Embedded terminal view within the application
- macOS 13.0 (Ventura) or later
- iTerm2 (latest version recommended)
- Xcode Command Line Tools (for building from source)
Download the latest release from the releases page.
# Clone the repository
git clone https://github.com/StakeSquid/iTermGUI.git
cd iTermGUI
# Build the application
./Scripts/build_app.sh
# The app will be created at Build/iTermGUI.app
# Drag it to your Applications folder
# Build using Swift Package Manager
swift build --configuration release
# Or open in Xcode
open Package.swift
- Launch iTermGUI from Applications
- Import existing profiles from
~/.ssh/config
via File → Import - Create new profiles with the "New Profile" button or ⌘+N
- Double-click any profile to connect
- Create: ⌘+N or click "+" button
- Edit: Select profile and click "Edit"
- Delete: Right-click → Delete or press Delete key
- Group: Drag groups in the sidebar to reorder them
- Favorites: Mark frequently used profiles as favorites
- Click "SFTP" from the home screen or profile view
- Navigate using the dual-pane interface
- Transfer files using the arrow buttons or right-click menu
- Monitor transfers in the queue at the bottom
⌘+N
- New Profile⌘+K
- Quick Connect⌘+F
- Focus Search⌘+,
- Preferences⌘+Delete
- Delete Selected ProfilesReturn
- Connect to Selected Profile⌘+Click
- Multi-select ProfilesESC
- Close SFTP Window
- Host (hostname or IP address)
- Port (default: 22)
- Username
- Authentication method (password, SSH key, keyboard-interactive)
- Identity file path
- Jump host configuration
- Port forwarding rules
- Color schemes
- Font family and size
- Cursor style
- Window dimensions
- Startup commands
Configuration files are stored in ~/Documents/iTermGUI/
:
profiles.json
- SSH profilesgroups.json
- Group organizationsettings.json
- Application preferencesdefaults.json
- Global default settings
Passwords are securely stored in the macOS Keychain.
"iTermGUI can't be opened because it is from an unidentified developer"
- Right-click the app and select "Open"
- Or go to System Settings → Privacy & Security → "Open Anyway"
SSH connection fails
- Verify credentials and network connectivity
- Check SSH key permissions (should be 600)
- Ensure jump host configuration is correct
SFTP transfer fails
- Check error details in the transfer queue
- Verify file paths and permissions
- Ensure sufficient disk space
Profiles not syncing with iTerm2
- Ensure iTerm2 is running
- Check
~/Library/Application Support/iTerm2/DynamicProfiles/
- Restart iTerm2 if needed
Run from terminal to see debug output:
/Applications/iTermGUI.app/Contents/MacOS/iTermGUI
iTermGUI/
├── Sources/iTermGUI/
│ ├── App/ # Application entry point
│ ├── Models/ # Data models
│ ├── Services/ # iTerm2 and SFTP services
│ ├── ViewModels/ # Profile manager
│ ├── Views/ # SwiftUI views
│ └── Terminal/ # Embedded terminal components
├── Resources/ # Icons and Info.plist
├── Scripts/ # Build scripts
├── Tests/ # Unit tests
└── Package.swift # SPM configuration
# Development build
swift run
# Production build
swift build --configuration release
# Run tests
swift test
Contributions are welcome. Please submit issues and pull requests on GitHub.
- Fork the repository
- Create your feature branch (
git checkout -b feature/your-feature
) - Commit your changes (
git commit -m 'Add feature'
) - Push to the branch (
git push origin feature/your-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made for the macOS community by StakeSquid