Skip to main content
Android support is partial and deliberate about where it stops. Read this page before buying Android hardware for a fleet.

Two facts to get out of the way

Only GrapheneOS is supported. A phone running stock Android — a Samsung, a Pixel on the factory build, anything from a carrier — is detected, listed, and then ignored. The Companion shows it with the error “Unsupported (stock Android) — this companion only manages GrapheneOS devices” and never registers it. It will not work, and there is no setting that changes that.
GrapheneOS phones cannot run automations, workflows or scheduled runs. Not on a plan, not with a setting. Today an Android phone is a screen you can watch and drive by hand, not something that works while you are asleep. Everything on Automations and Workflows applies to iPhones only.

What works today

Android phones use the same phone slots as iPhones and are billed the same way. The jailbreak badge does not appear on them — it is an iOS idea and means nothing here.

What does not work

  • Automations, workflows and scheduled runs. Nothing in the scheduler reaches an Android phone.
  • Scripts. The Script Builder is locked for everyone anyway.
  • Landscape. The Companion switches auto-rotation off when it connects and the viewer is portrait only.
  • Creating, deleting or switching containers from the dashboard. GrapheneOS profiles are made on the phone. The dashboard mirrors what the phone reports and can switch between them from the remote page, nothing more.
  • Doritos and DoritosLite. Those are iOS container providers. GrapheneOS profiles are never billed as containers.
  • Overlapping commands. One action runs at a time; a second one sent while the first is still going is dropped rather than queued. Give the phone a beat between gestures.
Changing the stream quality restarts the capture, so expect the picture to drop for a second or two.

Connecting one

1

Install adb and ffmpeg on the Mac

brew install --cask android-platform-tools and brew install ffmpeg. The Companion’s dependency screen lists both under Android devices and will not manage Android phones without them.
2

Turn on USB debugging on the phone

Switch on USB debugging in GrapheneOS’s developer options, on the phone’s owner profile.
3

Plug it in and accept the prompt

The phone shows an authorisation prompt. Tick Always allow from this computer and accept. Until you do, the Companion shows “USB debugging not authorized — accept the RSA prompt on the phone (“Always allow”)”.
4

Press Start Agent

There is no Build for Android. Start Agent brings the screen up and the phone becomes controllable from the dashboard.
The Companion Devices list showing a GrapheneOS phone row with its model name, a Ready status pill, GrapheneOS in the OS column, and Start and Stop buttons rather than a Build button

A GrapheneOS phone in the Companion's Devices list.

When it connects, the Companion sets two things on the phone itself: it turns auto-rotation off, and it keeps the screen awake while the phone is charging. You do not need to set either by hand.

Live on the owner profile

Work on the phone’s owner profile. Other GrapheneOS user profiles show up in the dashboard and can be switched into, but USB debugging and the connection itself belong to the owner profile.
A reboot cannot be recovered remotely. After a GrapheneOS phone restarts it sits at the lock screen with debugging unavailable, so it vanishes from the Companion entirely until somebody physically unlocks it. The same is true after a keyguard lockout. Plan for a person being able to reach the phone.
For the same reason, the Companion tries a saved profile PIN once and only once. A wrong PIN retried would lock the phone out, and a locked-out phone needs a hand on it. Profiles protected by a pattern or a password cannot be unlocked remotely at all — only a numeric PIN can.

Remote control

The viewer, its gestures and its Android-only buttons.

What AutoGrowth does not do

The rest of the limits, in one place.