Skip to content

Latest commit

Β 

History

129 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Linxr

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.


πŸš€ Features in v3.0.0

  • Upgraded Linux Stack β€” Alpine Linux 3.20 with Linux Kernel 6.18-virt, OpenRC init, OpenSSH, sudo, bash, and full apk package 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/LinxrShare mounted inside guest VM at /mnt/sdcard, plus Android Storage Access Framework (SAF) folder picker in Settings.
  • Ultra-Low Network Latency β€” TCP_NODELAY socket 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 resize2fs expansion on boot.
  • No Root Required β€” QEMU runs entirely as a standard Android userland application sandbox.

πŸ“Έ Screenshots

Home β€” Stopped Home β€” Live Serial Logs Terminal (linxr:~#)
Home stopped Home running Terminal
Containers Dashboard Storage & Files Settings & SAF Picker
Containers Files Settings

πŸ’¬ Community & Discussion

Join our official community for technical discussions, feature requests, and support:


πŸ“± Requirements

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+

⚑ Quick Start

  1. Download Linxr v3.0.0 (.apk or .aab) from GitHub Releases or Google Play Store.
  2. Open Linxr β†’ tap Start VM.
  3. Watch real-time kernel boot logs stream inside the System & VM Logs console on the Home Screen.
  4. Switch to the Terminal tab β€” it auto-connects as soon as SSH is active on port 2222.
  5. Log in using default credentials: root / alpine.

External SSH Connection

ssh root@localhost -p 2222
# Password: alpine

πŸ—οΈ Architecture & Stack

Android 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

Disk & Asset Layout

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

πŸ› οΈ Building from Source

Prerequisites

  • Linux / macOS workstation with Docker (for cross-compiling rootfs and native QEMU libraries)
  • Android SDK (API 31+)
  • Flutter 3.x SDK

1 β€” Build the Alpine Base RootFS & QCOW2 Image

bash scripts/build_qcow2.sh

Outputs: android/app/src/main/assets/vm/base.qcow2.gz

2 β€” Build the Android APK

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

3 β€” Build Play Store Bundle (AAB)

bash scripts/build_aab.sh

Outputs: build/linxr-release.aab

4 β€” Install via ADB

adb install build/linxr-release.apk

πŸ”‘ Default Credentials

Parameter Default Value
Username root
Password alpine

πŸ”’ Security Note: Change your root password using passwd after first login.


πŸ“‚ Project Structure

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

πŸ“œ Open Source Components & Licenses

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

πŸ“„ License

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.

🏒 About AI2TH

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.

About

No description, website, or topics provided.

Resources

Stars

28 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages