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
- Names, logos, icons and artwork: not open source — all rights reserved
The code is yours to build on. The branding is not: "Rabbit Hole Solutions" and its logo are trademarks with a registration application pending, "Highmark SSH" and its logo are unregistered trademarks, and the icon, logo and artwork files in this repository are excluded from the MIT grant. They ship here so the project builds, not as a licence to reuse them.
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