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.
- 1-Click Marketplace & Recipe Store β Discover and 1-click deploy curated container stacks (k3s Kubernetes, Nginx, Redis, PostgreSQL, VS Code Server, Ollama AI, Portainer, Node.js, Python, Tailscale) or write, import, and share your own custom community recipes.
- Chrome & Web Browser Port Forwarding β Automatic port forwarding (
8080,3000,8000,5000,8443,9000,8088->80,11434) letting you test web applications and dashboards in Chrome directly on your phone. - Upgraded Linux & Kernel Stack β Alpine Linux with Linux Kernel 6.18-virt, OpenRC init, OpenSSH,
sudo,bash, and fullapkpackage repository access. - Native Docker & Kubernetes Engine β Complete Docker container management and k3s Kubernetes runtime support with cgroup2 subtree controllers and
/dev/kmsgsupport. - 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 |
Copyright (C) 2026 AI2TH.
This project is licensed under the GNU General Public License v3.0. See LICENSE for the full text.
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.





