ghost · a phone os

latest work

ghost.

A Linux phone for people who live in the terminal.

Mainline kernel, Arch Linux ARM and Hyprland, with a shell built for touch. Every setting is a file you can open in your editor. An assistant can drive the phone, in the open, and you can always stop it.

work in progress Pixel 5a first
What works today
~/.config/ghost/theme.tomllive
hue = 296
preset = "ghost"
drag to re-theme this page
01 · config is the interface

Settings are files. The screens just edit them.

Every choice lives in plain text under ~/.config/ghost/. The Settings app writes those files; you can write them too, over ssh, from your editor, from a script. Changes apply live, with no restart.

try itEdit a value or pick a preset. The file is wired to this page, the same way the phone reads its own.

~/.config/ghost/theme.toml
applied
  • theme.tomlOne hue and a few numbers. Every color derives from it.
  • home.tomlWhat is on the home screen, and in what order.
  • gestures.tomlEdges, swipes, holds.
  • widgets/*.tomlAny command or MQTT topic as a widget.
02 · the shell

Calm on top. Deep underneath.

Each screen is quiet by default, with the detail one gesture down. Type > in the prompt line and it becomes a command line.

Clock, date and weather, and room to breathe. The prompt line by your thumb is search, command line and question box in one.

Captured on the phone. Notifications and music are sample data.

tap the phone to enlarge

03 · built for an assistant

An agent can use your phone. You can see it, and stop it.

ghost gives an assistant typed tools instead of fake taps: read a notification, check the battery, play a track, open an app. Anything that leaves the phone or changes it waits for you.

  1. 01

    You always know it's acting

    The ring round the camera and a thin screen edge light up while it acts. Only the shell can draw them, so an app can't fake them.

  2. 02

    It asks first

    A consent sheet names the action. If the request came from text the agent read, like a message or a web page, the sheet says so. Sending anything off the phone can never be "always allowed".

  3. 03

    One tap stops it

    Stop is always on screen while it works, and every action lands in a log you can read later.

Hermes acting on the phone: the capsule around the camera says what it is doing and a thin edge frames the screen
While it worksThe camera ring and the screen edge light up, and its own words say what it's doing.
Consent sheet: Hermes wants to tap the screen, marked medium risk, with Deny, Allow once and Allow session
Before it actsA sheet names the action, the risk and the agent's stated reason, and waits for you.

swipe for the consent sheet →

Captured on the phone with Hermes Agent connected over MCP; any MCP client can drive it.

04 · honest status

What works today.

Checked on the phone, with the date of the last check. Broken things are listed too. Tap a count to filter.

areawhatstatedetailchecked
systemBootworksMainline Linux 7.3 on slot b; stock Android kept on slot a23 Oct
systemKernel + userspace bootworks1.4 s kernel, 4.7 s userspace20 Oct
displayDisplay, touch, GPUworks1080x2400 @ 60 Hz; Mesa freedreno GLES 3.2, turnip Vulkan 1.318 Oct
displayAuto-rotatepartialDaemon works with simulated turns; not yet tried with a real turn24 Oct
systemTheme and configworkstheme.toml drives every color, applies live; presets and a Settings page24 Oct
radioWi-Fiworksath10k, NetworkManager18 Oct
radioBluetooth audioworksPairing from Settings; LE-first headphones get A2DP and reconnect on their own24 Oct
radioCalls and SMSplannedModem inventoried read-only; no voice stack yet23 Oct
radioMobile databrokenThe IPA data path resets the chip; held disabled23 Oct
powerBattery levelpartialVoltage estimate only; no fuel gauge yet18 Oct
powerSuspendbrokenSleeps, but the audio DSP crashes on wake; recovers, not shippable24 Oct
feelHapticspartialMotor driven end to end; new pulse set not yet felt by hand24 Oct
feelAudioworksSpeaker; a guard repairs the audio stack after a DSP crash24 Oct
appsAndroid appspartialWaydroid, warm-frozen; a music app plays local files. Signal and Spotify launch; sign-in not yet tested24 Oct
appsNotificationsworksPersist across restarts, DND schedule, per-app rules, Android app names24 Oct
appsAlarms and timersworksRing without the shell running, over the lock screen23 Oct
agentAgent toolspartial22 typed tools, consent sheet, Stop and audit log checked on the phone24 Oct
cameraCameraplannedNot started24 Oct

05 · devices

Two phones, one at a time.

ghost is built on the Pixel 5a until it's good enough to carry every day. The Pixel 8 comes next. Other phones later, if people want to port them.

  • Google Pixel 5abarbet
    in progress

    Snapdragon 765G. The phone ghost is built on.

  • Google Pixel 8shiba
    planned

    Tensor G3. Next, once the 5a is a daily driver.

06 · dev log

What changed.

Short notes as it happens, including what broke.

The shell, rebuilt

Home, the Deck, the bead, shade, lock screen, drawer and Settings rebuilt on the phone. Commands run in the capsule around the camera; every layout is a file.

Notifications, Bluetooth, haptics

Notifications that persist, Bluetooth from zero (the chip had no address), a haptic chain traced to the motor, auto-rotate, and a plan to make every setting a file.

Kernel image 2

Haptics, Bluetooth and the torch in the kernel; Android apps in Waydroid; alarms that ring with the shell down.

ghost 2

A phone shell in Quickshell on Hyprland: one state authority, gestures, shade, drawer with a command line, lock screen with PIN.

Not released yet.

There is nothing to download. When there is a build you can run on a Pixel 5a, it will be announced here, with the source and its licence.

Check the status