A native macOS SSH/SFTP client with an elegant interface
Features • Screenshots • Installation • Building • Contributing • License
macSCP is a modern, native macOS application built with SwiftUI that provides seamless SSH/SFTP file management capabilities. With its intuitive interface and powerful features, macSCP makes managing remote servers as easy as working with local files.
- Multiple Authentication Methods: Support for both password and SSH key-based authentication
- Keychain Integration: Securely store passwords in macOS Keychain
- SSH Key Support: Use your existing SSH private keys for authentication
- Connection Profiles: Save and organize multiple server connections with custom icons and descriptions
- Full File Browser: Navigate remote file systems with an intuitive Finder-like interface
- File Operations:
- Create, delete, rename files and folders
- Copy, cut, and paste operations with clipboard support
- Upload and download files with progress tracking
- Drag-and-drop file uploads
- File Permissions: View and understand Unix file permissions (rwxrwxrwx)
- Quick Actions: Context menu with common operations (Open, Download, Copy, Cut, Delete, Rename, Get Info)
- Syntax Highlighting: Edit remote files directly with built-in text editor
- Real-time Editing: Open and modify files without downloading them first
- Search Functionality: Find text within files with integrated search
- Multiple File Support: Open multiple files in separate editor windows
- Auto-save: Changes are saved directly to the remote server
- Folder Management: Organize connections into custom folders (Production, Development, etc.)
- Tagging System: Tag connections for easy filtering and organization
- Custom Icons: Assign SF Symbols to connections for visual identification
- Quick Search: Filter connections by name or tags
- Connection Counter: See how many connections you have at a glance
- SwiftUI Interface: Built entirely with SwiftUI for a modern, native feel
- Dark Mode Support: Fully supports macOS appearance modes
- Multiple Windows: Open multiple SSH sessions and file explorers simultaneously
- Window Management: Separate windows for file browser, editor, and file info
- macOS Integration: Follows macOS design patterns and conventions
- Dual Navigation: Sidebar with favorites and locations, plus main file list view
- File Metadata: View file sizes, permissions, and modification dates
- Breadcrumb Navigation: Easy path navigation with breadcrumb bar
- Folder Shortcuts: Quick access to common system folders (home, root, etc.)
- File Info Panel: Detailed information about files and folders
- Upload Progress: Real-time progress tracking for file uploads
- Download Manager: Monitor download progress with visual feedback
- Batch Operations: Upload or download multiple files at once
- Error Handling: Clear error messages and recovery options
- SwiftData Persistence: Modern data persistence using SwiftData
- Citadel SFTP: Built on the robust Citadel SSH/SFTP library
- NIO Foundation: Leverages SwiftNIO for high-performance networking
- Combine Framework: Reactive programming for smooth UI updates
Manage all your SSH connections with folders, tags, and custom icons
Easy-to-use connection setup with password or SSH key authentication
Browse remote files with a native macOS interface, complete with context menus and file operations
Edit remote files directly with syntax highlighting and search functionality
- Download the latest release from the Releases page
- Open the
.dmgfile - Drag macSCP to your Applications folder
- Launch macSCP from Applications
- macOS 13.0 (Ventura) or later
- SSH access to remote servers
- Xcode 15.0 or later
- macOS 13.0 SDK or later
- Swift 5.9 or later
macSCP uses Swift Package Manager for dependency management. Required packages:
- Citadel - SSH/SFTP implementation
- SwiftNIO - High-performance networking
-
Clone the repository:
git clone https://github.com/macnev2013/macSCP.git cd macSCP -
Open the project in Xcode:
open macSCP.xcodeproj
-
Wait for Swift Package Manager to resolve dependencies
-
Select your development team in the project settings:
- Select the project in the navigator
- Go to "Signing & Capabilities"
- Select your Team
-
Build and run:
- Press
⌘Ror click the Run button - Or use the build script:
./create-dmg.sh
- Press
A build script is included to create a distributable DMG:
./create-dmg.shThis will:
- Build the app in Release mode
- Create a DMG installer
- Sign the application (if configured)
macSCP is built with modern Swift and SwiftUI patterns:
- SwiftUI: Entire UI built with declarative SwiftUI
- SwiftData: Model persistence and data management
- Combine: Reactive state management
- Citadel: SSH/SFTP protocol implementation
- SwiftNIO: Non-blocking I/O for network operations
- MVVM Pattern: Clean separation of concerns
- Async/Await: Modern concurrency for smooth performance
- Models:
SSHConnection,ConnectionFolder,RemoteFile - Managers:
CitadelSFTPManager- SFTP operationsFileOperationsManager- File operationsKeychainManager- Secure password storageRemoteClipboard- Clipboard operationsNavigationManager- Window management
- Views: Modular SwiftUI views for each feature
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow Swift style guidelines
- Write clear commit messages
- Add comments for complex logic
- Test your changes thoroughly
- Update documentation as needed
macSCP takes security seriously:
- Passwords are stored securely in macOS Keychain
- SSH keys are never copied or stored
- All connections use SSH protocol encryption
- No telemetry or tracking
- All code is open source for transparency
Future features under consideration:
- SFTP protocol improvements
- Terminal emulator integration
- Port forwarding support
- File synchronization
- Bookmarks and favorites
- Split-pane view
- Theme customization
- Import/export connections
- Multi-tab support
- iCloud sync for connections
- Can't connect: Verify host, port, username, and credentials
- Authentication failed: Check password or SSH key permissions
- Timeout: Check firewall settings and network connectivity
- Permission denied: Ensure your user has appropriate file permissions
- Upload failed: Check available disk space on remote server
- Editor won't open: Verify file is a text file and not too large
- App won't launch: Check macOS version requirements (13.0+)
- Crashes: Check Console.app for crash logs and report issues
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Citadel by Joannis Orlandos
- Uses SwiftNIO by Apple
- Icons from SF Symbols by Apple
- Inspired by classic SCP clients and modern macOS design
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: [email protected]
Made with ❤️ for the macOS community
