Bare Alpine Linux VM & Docker Container Workstation on Android β no root required.
Linxr runs a full Alpine Linux 3.20 environment on Linux Kernel 6.18-virt inside a QEMU virtual machine on any arm64 Android device. Access it through the built-in multi-tab SSH terminal, native Docker Containers dashboard, POSIX file manager, or any external SSH client. No root, no Termux, no special hardware.
- Upgraded Linux Stack β Alpine Linux 3.20 with Linux Kernel 6.18-virt, OpenRC init, OpenSSH,
sudo,bash, and fullapkpackage repository access. - Native Docker Dashboard (Pockr Merged) β Complete Docker container management under the Containers tab (pull images, launch containers, stream live container logs).
- Live System & VM Serial Log Console β Real-time kernel serial logs (
dmesg,init,sshd) streaming directly on the Home screen for 100% boot transparency. - Virtio-9P Storage & SAF Folder Picker β Direct POSIX storage sharing at
/storage/emulated/0/LinxrSharemounted inside guest VM at/mnt/sdcard, plus Android Storage Access Framework (SAF) folder picker in Settings. - Ultra-Low Network Latency β
TCP_NODELAYsocket optimization dropping terminal typing lag from 250ms to under 15ms. - Multi-Tab Terminal β Up to 5 concurrent SSH sessions with auto-reconnect, keepalive, and specialized touch control key bar (
Tab,Esc,Ctrl+C,Ctrl+D,Ctrl+Z). - Dynamic Resource Controls β Configure vCPU count, RAM, and disk size (8 GB to 50 GB+) with automatic online
resize2fsexpansion on boot. - No Root Required β QEMU runs entirely as a standard Android userland application sandbox.
| Home β Stopped | Home β Live Serial Logs | Terminal (linxr:~#) |
|---|---|---|
| Containers Dashboard | Storage & Files | Settings & SAF Picker |
|---|---|---|
Join our official community for technical discussions, feature requests, and support:
- π¬ AI2TH Google Group: https://groups.google.com/g/ai2th
- π DEV.to 11-Part Engineering Series: https://dev.to/ai2th/series/28773
- π Official Website: https://ai2th.github.io/linxr.html
| Requirement | Minimum | Recommended |
|---|---|---|
| Android OS | 8.0 (API 26) | Android 11.0+ |
| Architecture | arm64-v8a | arm64-v8a |
| Free Storage | ~300 MB (APK + VM base image) | 10 GB+ for Docker images |
| Device RAM | 2 GB | 4 GB+ |
- Download Linxr v3.0.0 (
.apkor.aab) from GitHub Releases or Google Play Store. - Open Linxr β tap Start VM.
- Watch real-time kernel boot logs stream inside the System & VM Logs console on the Home Screen.
- Switch to the Terminal tab β it auto-connects as soon as SSH is active on
port 2222. - Log in using default credentials:
root/alpine.
ssh root@localhost -p 2222
# Password: alpineAndroid Host (Flutter + Kotlin Userland App)
β
βββ VmManager.kt β QEMU lifecycle, asset extraction, SSH readiness probe lock
βββ VmService.kt β Android Foreground Service (keeps VM alive in background)
βββ MainActivity.kt β SAF document picker MethodChannel (pickFolder)
β
βββ QEMU Engine (libqemu.so)
β βββ Virtio-Net (SLIRP)β TCP_NODELAY, hostfwd 127.0.0.1:2222 -> 22, 127.0.0.1:8080 -> 8080
β βββ Virtio-9P (pci) β Shares /storage/emulated/0/LinxrShare with guest VM
β
βββ Guest VM (Alpine Linux 3.20 / Kernel 6.18-virt)
βββ OpenRC init β Service management & online diskexpand (resize2fs)
βββ OpenSSH daemon β SSH server listening on port 22 inside VM
βββ Docker Daemon β Native Docker Engine (overlay2 storage, bridge networking)
βββ api_server.py β REST API bridging Flutter Containers tab to /var/run/docker.sock
| Asset File | Purpose |
|---|---|
base.qcow2 |
Read-only Alpine 3.20 rootfs (OpenSSH, Docker, sudo, python3 pre-installed) |
user.qcow2 |
Writable QCOW2 overlay preserving all your files and Docker containers |
vmlinuz-virt |
Guest Linux Kernel 6.18-virt compiled with Virtio & PREEMPT_DYNAMIC |
initramfs-virt |
Initial RAM filesystem |
- Linux / macOS workstation with Docker (for cross-compiling rootfs and native QEMU libraries)
- Android SDK (API 31+)
- Flutter 3.x SDK
bash scripts/build_qcow2.shOutputs: android/app/src/main/assets/vm/base.qcow2.gz
bash scripts/build_apk.sh debug # Debug build
bash scripts/build_apk.sh release # Release build (requires release keystore)Outputs: build/linxr-debug.apk or build/linxr-release.apk
bash scripts/build_aab.shOutputs: build/linxr-release.aab
adb install build/linxr-release.apk| Parameter | Default Value |
|---|---|
| Username | root |
| Password | alpine |
π Security Note: Change your root password using
passwdafter first login.
Linxr/
βββ android/
β βββ app/src/main/
β βββ assets/bootstrap/ # api_server.py, init_bootstrap.sh
β βββ assets/vm/ # kernel 6.18-virt, initramfs, base.qcow2.gz
β βββ kotlin/com/ai2th/linxr/
β βββ MainActivity.kt # SAF pickFolder MethodChannel
β βββ VmManager.kt # QEMU launcher & SSH probe lock
β βββ VmService.kt # Foreground Service
βββ lib/
β βββ main.dart # Main app layout & Home Screen
β βββ constants.dart # App constants & theme colors
β βββ screens/
β β βββ terminal_screen.dart # Multi-tab SSH terminal emulator
β β βββ containers_screen.dart # Docker Container Dashboard & log viewer
β β βββ files_screen.dart # Virtio-9P filesystem explorer
β β βββ settings_screen.dart # vCPU/RAM/Disk sliders & SAF picker
β βββ services/
β βββ vm_platform.dart # Platform Channels & VmState provider
βββ scripts/
β βββ build_apk.sh # APK build script
β βββ build_aab.sh # Play Store AAB build script
β βββ build_qcow2.sh # QCOW2 Alpine image builder
β βββ _build_rootfs.sh # Docker-based rootfs builder
βββ CHANGELOG.md
βββ LICENSE
βββ pubspec.yaml
| Component | License | Role |
|---|---|---|
| Flutter | BSD-3-Clause | UI framework |
| QEMU | GPL-2.0 | ARM64 CPU & Machine Virtualization Engine |
| Alpine Linux | MIT / GPL | Guest Linux Distribution |
| Docker Engine | Apache-2.0 | Container Runtime |
| dartssh2 | MIT | Pure-Dart SSH2 client |
| xterm.dart | BSD-3-Clause | Terminal emulator UI widget |
MIT License
Copyright (c) 2026 AI2TH
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:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Applied Intelligence To Tackle Hardships
AI2TH builds developer tools and virtualization platforms that bring Linux environments to mobile and edge hardware without root access.
Linxr β run Linux anywhere.