Drion · Architecture

Android apps as Linux processes

Drion runs unmodified Android apps on Linux as ordinary processes. Each app gets its own window and uses the host’s audio, network and GPU; on a Linux desktop it also sits next to your other programs and shares their clipboard and notifications. Apps can be inspected and stopped with standard Linux tools, and it all runs under your user account.

No VM, no emulator

Apps run as ordinary Linux processes, next to your other programs.

Unmodified APKs

Apps are not rewritten, patched or relinked.

No kernel modules

Binder works without the Android kernel driver.

One sandbox per app

Enforced by the Linux kernel, before any app code runs.

The idea

What an Android app needs

An Android app doesn’t need a whole Android operating system. It needs the Android runtime, Android’s standard libraries (the framework), and system services that answer its requests.

Android in a virtual machine
Android app
Android framework
Android system services
Second kernel, virtual devices
Hypervisor
Linux host
Drion
Android app, unmodified
Android framework, real AOSP code
Drion system services
no second kernel
no hypervisor
Linux host: desktop, audio, GPU
Architecture

The processes behind Drion

Drion is a small set of cooperating processes with separate jobs and separate authority. Permissions and other decisions are made outside the apps.

Your apps
Drion services
Linux host

App sandboxes

Each running app process gets its own sandbox: the Android runtime with the app loaded.

com.example.chatcom.example.gamecom.example.maps
API calls · lifecycle

System server

Android’s system side: which app is in front, installed packages, permissions, notifications, alarms and background jobs.

Helper processes: ADB, storage, web content, media

host services

Audio, network, power, camera

framesinput

Display

Puts app frames on screen and sends keyboard, mouse, touch and gamepad input back.

windows

Desktop compositor

renders on the GPU directly

GPU driver

Supervisor

Starts the system server and restarts it if it fails, opens a display window for each app, and installs apps. Apps never talk to it.

desktop integration

App menu, notifications, clipboard

Host adapters are the parts of Drion that talk to one particular host: its notification service, clipboard, audio system, compositor. Every arrow from Drion’s services into the Linux host goes through one, and each platform gets its own set.

Authority is separate from app code

Permissions, the foreground app and installed packages are decided by the system server, which runs outside every sandbox. Apps can only ask.

The kernel identifies every caller

The receiving process asks the kernel who is calling. Nothing an app claims about itself is trusted.

Failures stay contained

A crashing app ends its own process. The system server keeps its state and the supervisor restarts what must restart.

Sandbox

Every app is untrusted code

Before any app code runs, each app process gets its own Linux user, mount, PID and IPC namespaces, then is locked down further. Every layer is enforced by the kernel or by a Drion process outside the sandbox.

On the host
Inside the app’s sandbox
Drion system files
/systemread-only
This app’s data folder
/data/user/0/‹app›private
Shared-storage folder
/storage/emulated/0shared, as on a phone
GPU and video-decoding devices
/devminimal
Host processes, other apps
/proc lists only the app’s own processesnot visible
Your home folder
not mountednot visible
Cameras, microphones
only through the system serverbrokered
Drion control channels
not presentnot reachable

Own processes only

The app cannot see or signal host programs or other apps. Some apps deliberately probe and kill other processes; under your account that could end your session.

Android-shaped filesystem

Read-only system files, its own private data and shared storage. Your home folder is not mounted in.

Minimal devices

Basic pseudo-devices, private pseudo-terminals, and only the GPU and video-decoding devices that graphics and video need.

No privilege gain

no_new_privs blocks setuid. As on Android, a system-call filter refuses mounting, namespaces, kernel modules and kernel administration. Apps get an ordinary error rather than a crash.

Inherits nothing

Files and sockets held open by the processes that launch it are closed before it starts.

Can’t be switched off

Release builds refuse the development switches. If the kernel can’t build the sandbox, the app doesn’t start. On Ubuntu Touch, AppArmor confinement applies as well.

Permissions & data

How Drion decides what an app may do

When an app connects, the system server asks the kernel which process is calling and accepts only app runtimes it started itself. Identities claimed inside requests are ignored, and no passwords or tokens are involved.

App (sandboxed) → System server01connect
System server → Linux kernel02who is calling?
Linux kernel → System server03process identity
System server04a runtime I started?
App (sandboxed) → System server05open the camera
System server06permission and app op granted?
If not granted
System server → App (sandboxed)07refused, as on Android
If granted
System server → Camera adapter08connect, out of the sandbox’s sight
System server → App (sandboxed)09hand over the open connection
Camera adapter → App (sandboxed)10camera frames

Runtime permissions

Work as on Android: the app asks, you answer a prompt, the system server stores the answer.

Camera and microphone

Brokered. The app never sees the host camera or audio connections.

Location, contacts, calendar

Checked before any host data is read. Approximate-only apps get an approximate position.

Special access

Drawing over other apps, reading all files or installing apps needs your approval in a Drion dialog.

Protecting data

Private data stays private

An app sees its own data, never another app’s.

Shared storage, as on a phone

Except each app’s Android/data and Android/obb folders.

Secrets encrypted at rest

Account credentials, keystore contents and lock settings.

Optional full app-data encryption

Off by default. Machine-bound key, not hardware-backed.

Installs are verified

APK signatures are checked and recorded at install.

ADB is local and authenticated

Only trusted keys; a new key is never trusted automatically.

What it does not protect against

Other programs running as you

Apps are isolated from the host, not the other way round. Drion’s data lives in your account, like your other files.

Network access

Apps use the host’s network directly, including services that listen only locally. Drion does not filter app traffic.

An unattended, unlocked machine

Drion has no lock screen of its own. Protect app data with your login and disk encryption.

Threats that need security hardware

Keys are not kept in hardware such as a TPM, and device attestation fails.

Platforms

The same code on every platform

The Android-facing code is the same everywhere and is only built for different CPUs. What changes is a set of host adapters that connect the system services to each host’s display, input and hardware.

Shared core

Android runtime · framework · system server · sandbox

Ubuntu Touch

arm64
Display
Lomiri, maximized windows
Input
Touch and the Android on-screen keyboard
Delivered as
Click package; no root to install, run or remove

SteamOS

x86_64
Display
Inside Gamescope, one fullscreen app at a time
Input
Controller and touch screen

Linux desktops

x86_64
Display
Wayland, resizable windows
Input
Keyboard, mouse and gamepad
Delivered as
Archive or signed Flatpak
Needs
A Wayland session and unprivileged user namespaces
Tools

Standard Android tools

Drion exposes a standard, authenticated ADB endpoint, so unmodified adb and Android test tooling work against it.

# the same commands you use with a phone
$ adb install app.apk
$ adb shell
$ adb logcat

APKs and split bundles

Install APK, APKS, XAPK and APKM files from the launcher or the drion command-line tool.

Real Android installs

App stores running inside Drion can install and update other apps.

Testable compatibility

Subsets of Android’s Compatibility Test Suite run on demand. This is not certification.

Observability

Per-session rotated logs, crashes with native backtraces, and a monitor for frame rate, CPU and memory.

Closed alpha

Try Drion on Linux desktops and Ubuntu Touch

Email us to join the closed alpha. There is no public release yet.