A beautiful, modern, open-source SSH client for Android with true browser-style tabs, enterprise security, and comprehensive accessibility features.
- 📑 Browser-Style Tabs - Multiple concurrent SSH sessions with intuitive tab management
- 🔐 Multiple Authentication Methods - Password, public key (RSA, ECDSA, Ed25519, DSA), keyboard-interactive
- 🔑 Universal SSH Key Support - OpenSSH, PEM, PKCS#8, PuTTY formats with import/generation
- 🖥️ Full Terminal Emulation - VT100/ANSI with 256 colors, proper escape sequences
- 📁 Integrated SFTP Browser - Beautiful file manager with upload/download progress
- 🔌 Port Forwarding - Local and remote port forwarding support
- 🖼️ X11 Forwarding - Run graphical applications remotely
- 🌐 SSH Config Import - Import existing ~/.ssh/config files
- 📋 Clipboard Integration - Copy/paste with proper encoding
- 🔒 Hardware-Backed Encryption - Android Keystore integration for secure key storage
- 👆 Biometric Authentication - Fingerprint and face unlock support
- 🔐 No Plaintext Storage - All passwords encrypted with AES-256
- 🛡️ Host Key Verification - SHA256 fingerprints with MITM detection
- 🚫 Screenshot Protection - Prevent sensitive data leaks
- 🔐 Auto-Lock - Configurable timeout and background locking
- 📜 Certificate Pinning - Enhanced connection security
- 🎨 Material Design 3 - Beautiful, modern interface following Google's latest design guidelines
- 🌈 Built-in Themes - Dracula, Solarized (Light/Dark), Nord, Monokai, One Dark, Tokyo Night, Gruvbox
- 🎨 Custom Themes - Import/export JSON theme definitions
- ⌨️ Custom Keyboard - SSH-optimized on-screen keyboard with special keys
- 📊 Visual Indicators - Connection state, unread output, usage statistics
- 🔄 Tab Management - Drag-to-reorder, Ctrl+Tab switching, persistent sessions
- ♿ TalkBack Support - Full screen reader compatibility
- 🔆 High Contrast Modes - Enhanced visibility for low vision users
- 📏 Large Text Support - Adjustable font sizes (8-32pt)
- ⌨️ Keyboard Navigation - Full keyboard accessibility
- 🌐 Multi-Language - English, Spanish, French, German, Chinese, Japanese
- 📱 Mosh Protocol - Mobile shell for unstable connections
- 💾 Backup & Restore - Export/import all settings and connections
- 🔄 Session Persistence - Resume sessions after app restart
- 📊 Connection Statistics - Track usage and connection history
- ☁️ Cloud Sync - Google Drive sync with WebDAV fallback for degoogled devices
- 📝 Custom Fonts - Cascadia Code, Fira Code, JetBrains Mono, Source Code Pro, and more
- 🎯 Zero Trackers - No analytics, no ads, complete privacy
- 📖 Open Source - MIT licensed, fully auditable code
- 🔍 No Telemetry - No data collection whatsoever
- 🆓 Forever Free - No premium features, no in-app purchases
Download the latest release from GitHub Releases:
- tabssh-universal.apk (23MB) - Works on all devices (recommended)
- tabssh-arm64-v8a.apk - Modern ARM 64-bit devices
- tabssh-armeabi-v7a.apk - Older ARM 32-bit devices
- tabssh-x86_64.apk - x86 64-bit devices
- tabssh-x86.apk - x86 32-bit devices
- Download
tabssh-universal.apkfrom the latest release - Enable "Install from Unknown Sources" in Android Settings → Security
- Open the downloaded APK file
- Tap "Install" and wait for installation to complete
- Launch TabSSH from your app drawer
- Grant required permissions (Storage, Notifications)
- Start connecting to your servers!
Coming soon to the official F-Droid repository.
- Minimum: Android 5.0 (API 21) - Lollipop
- Recommended: Android 8.0+ (API 26) for best experience
- Storage: 50MB free space
- RAM: 512MB minimum, 1GB+ recommended
-
Add a Connection:
- Tap the "+" button
- Enter hostname, port, username
- Choose authentication method (password or SSH key)
- Save the connection
-
Connect:
- Tap the connection profile
- Enter password or unlock with biometrics
- Accept host key fingerprint (first connection only)
- You're connected!
-
Use Tabs:
- Tap "+" in the top bar to open new tabs
- Swipe or tap tabs to switch
- Long-press to close tabs
-
SFTP File Transfer:
- Tap the folder icon in the connection
- Browse files, upload/download
# Clone the repository
git clone https://github.com/tabssh/android.git
cd android
# Build with Docker (recommended)
make build
# Or build with local Gradle
./gradlew assembleDebug
# Install to connected device
make install
# View logs
make logsOption 1: Docker (Recommended)
- Docker 20.10+
- Docker Compose 2.0+
- 8GB RAM minimum
Option 2: Local Build
- Android SDK 34
- JDK 17 (Temurin or OpenJDK)
- Gradle 8.1.1+
- 16GB RAM recommended
# Build debug APKs (Docker)
make build
# Build release APKs
make release
# Clean build artifacts
make clean
# Run tests
./gradlew test
# Check for compilation errors
./gradlew compileDebugKotlin
# Lint code
./gradlew lint
# Generate documentation
./gradlew dokkaHtmlandroid/
├── app/ # Android application source
│ ├── src/main/java/io/github/tabssh/
│ │ ├── accessibility/ # Accessibility features
│ │ ├── backup/ # Backup/restore system
│ │ ├── crypto/ # Cryptography & key management
│ │ ├── ssh/ # SSH connection handling
│ │ ├── sftp/ # SFTP file transfer
│ │ ├── terminal/ # Terminal emulator
│ │ ├── themes/ # Theme management
│ │ ├── ui/ # User interface
│ │ └── sync/ # Cloud sync (Google Drive/WebDAV)
│ ├── src/main/res/ # Resources (layouts, strings, themes)
│ └── build.gradle # App-level build configuration
├── .github/ # GitHub Actions workflows & templates
│ ├── workflows/ # CI/CD pipelines
│ ├── ISSUE_TEMPLATE/ # Issue templates
│ └── CONTRIBUTING.md # Contribution guidelines
├── docs/ # Documentation
├── scripts/ # Build & utility scripts
├── fdroid-submission/ # F-Droid metadata
├── Makefile # Build automation
├── build.gradle # Project-level build config
├── CLAUDE.md # Development tracker
├── SPEC.md # Technical specification
└── README.md # This file
# Unit tests
./gradlew test
# Instrumentation tests (requires connected device/emulator)
./gradlew connectedAndroidTest
# Test coverage
./gradlew jacocoTestReport
# Specific test class
./gradlew test --tests SSHConnectionTestWe follow the Kotlin Coding Conventions:
- 4 spaces for indentation
- 120 character line limit
- Use meaningful variable names
- Document public APIs with KDoc
- Use
@SuppressLintsparingly with justification
DO NOT open public issues for security vulnerabilities.
Instead, please email: security@tabssh.dev
We will respond within 48 hours and work with you to resolve the issue responsibly.
- All passwords encrypted with AES-256-GCM
- Private keys stored in Android Keystore (hardware-backed when available)
- Host key verification with SHA256 fingerprints
- No telemetry or analytics
- No network requests except SSH connections
- Regular security audits
- Dependency scanning with OWASP Dependency-Check
- Last audit: 2024-12-18
- No critical vulnerabilities found
- All dependencies up to date
TabSSH includes 10+ professionally designed themes:
- 🦇 Dracula - Dark theme with vibrant colors
- ☀️ Solarized Light - Precision colors for readability
- 🌙 Solarized Dark - Low-contrast dark theme
- ❄️ Nord - Arctic, north-bluish color palette
- 🌲 Monokai - Sublime Text inspired
- 🎯 One Dark - Atom's iconic dark theme
- 🌃 Tokyo Night - Clean, dark Tokyo-inspired theme
- 🏔️ Gruvbox - Retro groove warm theme
- ♿ High Contrast - Maximum accessibility
Create and share your own themes! Export theme JSON from Settings → Terminal → Themes.
Example theme structure:
{
"name": "My Custom Theme",
"colors": {
"background": "#1e1e1e",
"foreground": "#d4d4d4",
"cursor": "#00ff00",
"black": "#000000",
"red": "#cd3131",
...
}
}- SPEC.md - Complete technical specification (98KB, 3000+ lines)
- CLAUDE.md - Development tracker and project status
- INSTALL.md - Detailed installation guide
- docs/TODO.md - Development roadmap
- docs/CHANGELOG.md - Version history
- docs/UI_UX_GUIDE.md - Design guidelines
- docs/LIBRARY_COMPARISON.md - Technical decisions
- .github/CONTRIBUTING.md - How to contribute
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- 🐛 Report bugs
- 💡 Suggest features
- 📝 Improve documentation
- 🌐 Add translations
- 🎨 Design themes
- 💻 Submit pull requests
- ⭐ Star the repository
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
./gradlew test) - Commit with descriptive message
- Push to your fork
- Open a pull request
MIT License - see LICENSE.md for details.
Copyright (c) 2024 TabSSH Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
...
- 🐛 Bug Reports: GitHub Issues
- 💡 Feature Requests: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📧 Email: support@tabssh.dev
- 📖 Documentation: docs/
- 🐦 Twitter: @tabssh
- 💼 LinkedIn: TabSSH
- 📱 Matrix: #tabssh:matrix.org
Q: Is TabSSH really free? A: Yes! Completely free, open source, no ads, no in-app purchases, forever.
Q: Does TabSSH collect any data? A: No. Zero analytics, zero telemetry, zero data collection. Your data stays on your device.
Q: Can I use TabSSH without Google Play Services? A: Yes! TabSSH works perfectly on degoogled devices. Cloud sync supports WebDAV as an alternative to Google Drive.
Q: Which devices are supported? A: Any Android 5.0+ device (covers 99%+ of active Android devices).
Q: How do I import SSH keys? A: Settings → Security → SSH Keys → Import. Supports OpenSSH, PEM, PKCS#8, and PuTTY formats.
Q: Can I sync settings across devices? A: Yes! Settings → Google Drive Sync (or WebDAV Sync for degoogled devices).
TabSSH is built on the shoulders of giants:
- JSch - Pure Java SSH implementation
- Material Design Components - Beautiful UI framework
- AndroidX Libraries - Modern Android development
- All contributors - Thank you for making TabSSH better!
- The JuiceSSH team for inspiration
- The ConnectBot team for pioneering Android SSH
- The open-source community for making this possible
- 95+ Kotlin files - ~22,000 lines of code
- 74 XML resources - Layouts, themes, strings
- 10+ built-in themes - Professional color schemes
- 8+ languages - Internationalization support
- 100% open source - MIT licensed
- 0 trackers - Complete privacy
- Plugin system for community extensions
- Tmux integration
- Bluetooth keyboard enhancements
- Split-screen terminal support
- Script automation
- Macro recording and playback
- Advanced terminal customization
- Cloud backup improvements
- Complete UI redesign with Material You
- Performance optimizations
- Enhanced accessibility features
- Wear OS companion app
See docs/TODO.md for detailed roadmap.
If you find TabSSH useful, please consider starring the repository! It helps others discover the project.
Made with ❤️ for the open-source community
Empowering secure remote access for everyone