> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autogrowth.farm/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> AutoGrowth runs social accounts on real phones. Everything a page describes happens on a physical device in the customer's own fleet, never through a social platform's API.
> The Companion is a macOS desktop app that runs on the customer's own Mac and manages the phones over USB — iPhones through WebDriverAgent, GrapheneOS phones through ADB and scrcpy. Nothing runs while the Companion is closed.
> The Companion builds, signs and installs WebDriverAgent on each iPhone itself. Never tell a customer to sign WebDriverAgent by hand in Xcode; Xcode is a prerequisite the Companion drives, not a step the customer performs.
> Autogrowth MAX is a one-time, invite-only lifetime license bought from the organization's credit balance, not a subscription tier. It is required to run any automation, workflow or Incubator program. Without a price set for that organization, the purchase is refused.
> An automation is one of AutoGrowth's built-in definitions; a script is a graph the customer builds in the Script Builder. The Script Builder is locked platform-wide, so never present building a script as something a customer can do today.
> An API key is a bare 64-character hex string with no prefix. It is shown once, at creation, is sent as `Authorization: Bearer <key>`, and can never be read back.
> An API key sees only the key owner's own accounts, content, collections, prompts, scripts and executions. Devices and tags are organization-scoped, and a non-owner sees only the devices assigned to them or carrying one of their tags. The automation catalog is global.
> There is no pagination. List endpoints return the whole set; the only limiting parameter anywhere is `limit` on `GET /v1/executions`, which defaults to 50 and has no offset to page with.
> Remote control and the live screen are dashboard-only, over WebSocket and MJPEG. Neither is part of the public API.
> The MCP server is hosted at https://mcp.autogrowth.farm and authenticates with OAuth. It is not an npm package and there is nothing to install locally. Its tools inherit exactly the scope of the API key behind them.
> Android support is partial and GrapheneOS-only: those phones appear in the fleet and can be watched and remote-controlled, but they cannot run scripts or automations.
> Never document Hi Katie or any persona feature. When a page and the code disagree, the code wins — check a claim against the source before repeating it.

# Android phones

> GrapheneOS phones can be watched and controlled from the dashboard, but they cannot run automations yet. What works today, and how to connect one.

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.

<Warning>
  **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](/guides/automations) and [Workflows](/guides/workflows) applies to
  iPhones only.
</Warning>

## What works today

|                          |                                                                                                                                                                   |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **It joins the fleet**   | It appears on the [Fleet](/guides/your-fleet) page like any other phone, with its own status and battery                                                          |
| **Live screen**          | The same streaming as an iPhone                                                                                                                                   |
| **Remote control**       | Tap, double-tap, long press, swipe, drag, scroll, pinch, typing, volume, lock and unlock                                                                          |
| **Android-only buttons** | The remote viewer adds **Back** and **Recent Apps**, which iPhones do not have                                                                                    |
| **Profile switching**    | GrapheneOS user profiles can be switched from the remote page, and a saved PIN lets the Companion unlock one after a switch. See [Containers](/guides/containers) |
| **No build step**        | There is nothing to install on the phone. The agent starts with the stream                                                                                        |

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

<Steps>
  <Step title="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.
  </Step>

  <Step title="Turn on USB debugging on the phone">
    Switch on **USB debugging** in GrapheneOS's developer options, on the phone's
    owner profile.
  </Step>

  <Step title="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")".
  </Step>

  <Step title="Press Start Agent">
    There is no Build for Android. **Start Agent** brings the screen up and the
    phone becomes controllable from the dashboard.
  </Step>
</Steps>

<Frame caption="A GrapheneOS phone in the Companion's Devices list.">
  <img src="https://mintcdn.com/autogrowth/XpowNsqf1wRaYnfV/images/companion-android-device.png?fit=max&auto=format&n=XpowNsqf1wRaYnfV&q=85&s=1dae33809898fb910bb2e1f01d768023" alt="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" width="1600" height="1000" data-path="images/companion-android-device.png" />
</Frame>

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.

<Warning>
  **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.
</Warning>

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.

## What to read next

<CardGroup cols={2}>
  <Card title="Remote control" icon="hand-pointer" href="/guides/remote-control">
    The viewer, its gestures and its Android-only buttons.
  </Card>

  <Card title="What AutoGrowth does not do" icon="ban" href="/guides/what-autogrowth-does-not-do">
    The rest of the limits, in one place.
  </Card>
</CardGroup>
