> ## 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.

# Remote control

> Open a live screen for a phone in your fleet, drive it from the browser, and know what the error messages mean.

Remote control gives you the phone's screen in a browser tab, live, with your taps and
keystrokes sent back to the handset. It is how you log an account in by hand, check what
an automation left on screen, or clear a popup the phone is stuck on.

It is a dashboard feature only. It is not part of the [API](/api/overview) or the
[MCP server](/mcp/overview), and it does not work while the Companion on the Mac is
closed.

## Open a session

<Steps>
  <Step title="Find the phone on Fleet">
    Every card has a **Remote Control** button. A phone that is already publishing
    its screen shows a green bubble, tooltip "Streaming live".
  </Step>

  <Step title="Press Remote Control">
    The viewer opens on its own page. The first frames take a moment: the browser
    is issued a short-lived viewing pass and then measures the streaming relays to
    pick the fastest one.
  </Step>

  <Step title="Press Esc when you are done">
    Or use **Back**, top left, to return to Fleet. Nothing needs to be stopped.
  </Step>
</Steps>

When the button is inert, its tooltip reads **Remote Control unavailable** and names the
reason.

| Reason shown                                                                                      | What to do                                                                                |
| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| "Device is offline. Connect it through the Companion app to enable remote control."               | Open the Companion on the Mac and start the phone.                                        |
| "The device is connected, but the screen stream is not active."                                   | On iPhone, start the agent again from the Companion. On GrapheneOS, reconnect the device. |
| "The agent is being installed. Remote control will be available once provisioning completes."     | Wait for the build to finish.                                                             |
| "Device is awaiting setup approval before remote control can be used."                            | Approve the phone first.                                                                  |
| "Device is in an error state. Resolve the issue from the Companion app to enable remote control." | Fix it on the Mac — see [Troubleshooting](/guides/troubleshooting).                       |

<Warning>
  A phone whose slot has expired cannot be streamed at all: "Device slot has expired.
  Renew your slot to access streaming." The viewer shows a blocked screen with **Renew
  Slot** or **Assign a Slot** instead of a picture. See [Your fleet](/guides/your-fleet).
</Warning>

## What you can do in the viewer

<Frame caption="A live remote control session.">
  <img src="https://mintcdn.com/autogrowth/XpowNsqf1wRaYnfV/images/dashboard-remote-control.png?fit=max&auto=format&n=XpowNsqf1wRaYnfV&q=85&s=6d7bdfefde4281d30c799702f57ad0a5" alt="The remote control page showing a live phone screen in the centre, a Back button and Video live and Control live chips in the header, tiles labelled Control, Pinch, Send keys, Volume and Stream down one side, and a right-hand panel with Queue and Run tabs" width="1600" height="1000" data-path="images/dashboard-remote-control.png" />
</Frame>

Two chips in the header tell you whether it is working. The video chip reads **Video
off**, **Video connecting**, **Video live**, **Video stalled**, **Video reconnecting** or
**Video down**. The control chip reads **Control offline**, **Control connecting** or
**Control live**. You need both live before the phone reacts to you.

The tiles around the screen are:

| Tile          | What it holds                                                                                                                                                                   |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Control**   | Six gesture modes — **Normal**, **Swipe**, **Drag**, **Double Tap**, **Hold Touch**, **Pinch** — which decide what a click on the screen does.                                  |
| The arrow pad | **Scroll Up**, **Scroll Left**, **Scroll Right**, **Scroll Down** and **Home Button**. GrapheneOS phones also get **Back** and **Recent Apps**.                                 |
| **Pinch**     | **Zoom in**, **Zoom out** and a **Pinch scale** slider.                                                                                                                         |
| **Send keys** | Everything you type on the page goes to the phone while this reads **Keys → phone**. The **Paste & send…** box plus **Send** is for pasting long text.                          |
| **Volume**    | **Up** and **Down**.                                                                                                                                                            |
| **Stream**    | **Quality** and **FPS**, both **Auto** until you change them. The gear offers **Light**, **Balanced**, **Sharp**, **Max** and 10 / 24 / 30 / 60, applied with **Save changes**. |

The right-hand panel has **Queue** and **Run** tabs: what this phone is working through,
and what you can start on it right now.

<Info>
  There is no screenshot button and no rotate control. Landscape is detected from the
  video itself, not something you switch on.
</Info>

## Two people, one phone

There is no lock. Several people can open the same phone at the same time, and all of
them can tap it. Nobody is told that anyone else is there, and nothing warns you that a
second pair of hands is fighting you for the screen.

Stream quality and frame rate are shared too. Change them, and everyone watching that
phone gets the new setting.

If someone reports a phone "moving on its own", the first question is who else has it
open, and the second is whether an [automation](/guides/automations) is running on it.

## What the run panel costs

Watching and driving a phone needs a live slot and nothing else. It is not a MAX feature.

Starting an automation from inside the viewer is a MAX feature. Without the licence the
panel wears a **Max required** chip with the tooltip "Automations require Autogrowth
MAX", and each run button reads **Unlock** instead of **Run**. See
[Credits and billing](/guides/billing).

## Errors you will actually see

The viewer is chatty on purpose — it retries almost everything by itself.

| Message                                                                          | What it means                                                               |
| -------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| "Phone is not streaming — check the Companion app"                               | The agent is not running on that phone. Press **Start** in the Companion.   |
| "Reconnecting…" / "Video froze — reconnecting…" / "Stream ended — reconnecting…" | A network blip, or the phone slept. Wait; it reattaches by itself.          |
| "Streaming server unavailable — retrying…" / "No streaming servers are online"   | The relay is unreachable. If it lasts, it is a platform problem, not yours. |
| "Could not authorize the stream"                                                 | The viewing pass was refused. Reload, and check the phone's slot.           |
| "This phone is not part of your organization"                                    | You are signed into the wrong organization.                                 |
| "Device not connected"                                                           | Your taps arrived but the phone's Companion had dropped. Reconnect the Mac. |
| "Screen stream is not active"                                                    | Full-page version of the first row.                                         |

<Info>
  Capture stops when nobody is watching. About 30 seconds after the last viewer leaves,
  the Companion stops pulling frames from the phone, and starts again for the next
  viewer. A phone that "went dark" between sessions is behaving correctly.
</Info>

## GrapheneOS phones

GrapheneOS phones stream and are controllable in the same viewer, with **Back** and
**Recent Apps** added to the arrow pad and a **Profile** switcher for the phone's
identities. A locked profile shows an overlay — **Unlocking…**, **Locked — unlock it by
hand**, or **Locked — auto-unlock failed** — depending on whether a keyguard PIN is
saved for it.

They cannot run automations. See [Android phones](/guides/android-phones).

## What to read next

<CardGroup cols={2}>
  <Card title="Your fleet" icon="grid-2" href="/guides/your-fleet">
    Status words, slots and who can see which phone.
  </Card>

  <Card title="Automations" icon="robot" href="/guides/automations">
    What the phones can be told to do on their own.
  </Card>
</CardGroup>
