A native SSH terminal emulator for Meta Quest headsets, bringing full-featured remote server access to VR.
- Native SSH Client - Direct SSH connections to remote servers
- Full Terminal Emulation - VT-100 compatible terminal via Termux terminal-emulator
- Multi-Tab Sessions - Run multiple SSH sessions simultaneously with tab management
- Trust-on-First-Use (TOFU) - Secure host key verification with fingerprint display
- Connection History - Auto-saves last 8 connections for quick reconnect
- Favorite Connections - Star connections to save them permanently
- Encrypted Password Storage - AES-256-GCM encryption via Android Keystore (hardware-backed)
- 2D Panel Mode - Comfortable flat panel interface in VR
- Landscape Orientation - Optimized for Quest's display format
- Controller Scroll Support - Native VR controller wheel scrolling
- Virtual Keyboard - Quest keyboard integration for text input
- Edge-to-Edge Display - Maximizes usable terminal space
- Username@Host Parsing - Paste
user@host:portformat for quick fill - Per-Connection Password Memory - Choose which passwords to remember
- Host Key Change Detection - Warns about potential MITM attacks
- Session Cleanup - Proper SSH session termination on disconnect
- Meta Quest 2
- Meta Quest Pro
- Meta Quest 3
- Meta Quest 3S
Minimum: Android 10 (API 29)
(Coming soon)
- Enable Developer Mode on your Quest headset
- Download the latest APK from Releases
- Install via ADB:
adb install -r highmark-ssh-v1.0.0.apk
- Launch Highmark SSH from your Quest app library
- Enter your SSH server details:
- Host: Server hostname or IP address
- Port: SSH port (default: 22)
- Username: Your SSH username
- Password: Your SSH password
- Check "Remember password" to save credentials (encrypted)
- Tap "Connect"
- If prompted, verify the host key fingerprint
- Accept the key to connect
- Paste Format: Type or paste
username@host:portin the Host field - username and port will auto-fill - Saved Connections: Click any saved connection to auto-fill the form
- Favorites: Star frequently-used connections to keep them permanently
- New Tab: Click the "+" button in the tab bar
- Switch Tabs: Click on any tab label
- Close Tab: Click the "X" icon on a tab
- Tabs persist until closed or app restart
- Use your VR controller's scroll wheel to navigate terminal history
- Scroll accumulates smoothly for precise control
- Android SDK (API 34+)
- Java 17 or higher
- Gradle 8.x
- Meta Quest Developer Hub (for deployment)
# Clone repository
git clone https://github.com/rabbitHoleSolutions/highmark-ssh.git
cd highmark-ssh
# Set JAVA_HOME (macOS example)
export JAVA_HOME=/path/to/openjdk@21/libexec/openjdk.jdk/Contents/Home
# Build debug APK
./gradlew assembleDebug
# Build release APK (requires signing config)
./gradlew assembleRelease
# Install to connected Quest
adb install -r app/build/outputs/apk/debug/app-debug.apkapp/src/main/java/com/questterm/
├── data/ # Connection profiles and history storage
├── session/ # Multi-tab session management
├── ssh/ # SSH connection and encryption
├── terminal/ # Terminal emulation (Termux integration)
└── ui/ # Jetpack Compose UI components
- Passwords encrypted with AES-256-GCM
- Encryption keys stored in Android Keystore (hardware-backed on Quest)
- Automatic IV generation prevents replay attacks
- GCM authentication tag ensures data integrity
- Old plaintext credentials migrated automatically
- Trust-on-First-Use (TOFU) model
- Host keys stored in SharedPreferences with SHA-256 fingerprints
- Warns if host key changes (potential MITM attack)
- User must explicitly accept changed keys
INTERNET- Required for SSH connectionsACCESS_NETWORK_STATE- Check network availabilityACCESS_WIFI_STATE- WiFi status detection
No tracking, no analytics, no external servers.
Highmark SSH does not:
- Collect any user data
- Send any telemetry or analytics
- Connect to any servers except your SSH hosts
- Require a Highmark SSH account
All data stays on your device.
- SSH key authentication not yet supported (password only)
- SFTP file transfers not yet implemented
- No port forwarding support
- Single window/panel only (no multi-window VR layout)
- "Connection refused": Verify SSH server is running and port is correct
- "Host key changed": Your server's SSH key changed - verify it's legitimate before accepting
- "Authentication failed": Check username/password are correct
- Terminal too small: App uses landscape mode - ensure Quest is in correct orientation
- Text not visible: Check Quest brightness settings
- Laggy input: Close unused tabs to free resources
- Scroll stuttering: Try smaller scroll gestures
- Termux Terminal Emulator (GPL v3) - VT-100 terminal emulation
- ConnectBot SSHLib (Apache 2.0) - SSH protocol implementation
- Jetpack Compose - Modern Android UI toolkit
- Hilt - Dependency injection
- Gson (Apache 2.0) - JSON serialization
This project uses a dual-license approach:
- Custom Code (Highmark SSH-specific): MIT License
- Termux Terminal Emulator Integration: GPL v3
See LICENSE for full details. When using or modifying this project, please respect both licenses.
Contributions welcome! Please see CONTRIBUTING.md for guidelines.
- SSH key authentication (ED25519, RSA)
- SFTP file browser and transfers
- Local port forwarding
- Custom color schemes
- Font size adjustment
- Saved session profiles with custom labels
- Multi-window VR layout (floating terminals)
- Gesture-based shortcuts
- Command history search
- Tmux integration
- Connection groups/folders
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Created by @jasonburrows for the Meta Quest platform.
Built with ❤️ for the VR developer community.
Version: 1.0.0 Last Updated: February 2026