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

# Scheduling

> The Schedule screen: when a run happens, on which phone, and what each execution status means.

An **execution** is one run of one automation on one phone at one time. **Schedule** is
where you create them and watch them go past.

<Frame caption="The Schedule screen, week view.">
  <img src="https://mintcdn.com/autogrowth/XpowNsqf1wRaYnfV/images/dashboard-schedule.png?fit=max&auto=format&n=XpowNsqf1wRaYnfV&q=85&s=071d889798db7a92a2dab238a55df3bb" alt="The Schedule screen in Week view, showing seven day columns filled with execution cards, a Week and Timeline view switcher, All sources and All Devices filters, and a Schedule button in the header" width="1600" height="889" data-path="images/dashboard-schedule.png" />
</Frame>

Two views ship: **Week**, a seven-column calendar starting on Monday, and **Timeline**, a
running list. Two filters narrow what you see — **All sources** (or just **One-off runs**,
hiding anything a workflow produced) and **All Devices**.

## Schedule one run

Press **Schedule**. The dialog is headed **Schedule a new execution**, or **Run
instantly** if you started it from a phone.

<Frame caption="The scheduling dialog.">
  <img src="https://mintcdn.com/autogrowth/XpowNsqf1wRaYnfV/images/dashboard-schedule-composer.png?fit=max&auto=format&n=XpowNsqf1wRaYnfV&q=85&s=77468dfea7407eb27898046cef24019c" alt="The Schedule a new execution dialog with Automations and Scripts tabs, a Target step, a Switch mobile data step, a When step with a plain-English time box, and an Options step holding the automation's own inputs" width="1600" height="1103" data-path="images/dashboard-schedule-composer.png" />
</Frame>

<Steps>
  <Step title="Pick what runs">
    The **Automations** tab lists the [catalogue](/guides/automations). The
    **Scripts** tab beside it opens a coming-soon notice — the Script Builder is
    locked. Without Autogrowth MAX the Automations tab is dimmed and opens the
    upgrade dialog instead.
  </Step>

  <Step title="Pick the target">
    An account, a phone, or both. If the account is already tied to a phone, the
    phone picker locks itself — the account controls the device. An account with
    nowhere to run warns you to assign that account to a phone or container
    before scheduling it.
  </Step>

  <Step title="Decide about mobile data">
    **Switch mobile data** is on by default, which cycles the phone's cellular data
    off and on just before the run so the carrier hands out a fresh IP.
  </Step>

  <Step title="Say when">
    The **When** step takes plain English — "Tomorrow", "in 2 days", "3pm", "in 2
    hours".
  </Step>

  <Step title="Fill in the options">
    The last step is the automation's own inputs: caption, media, duration,
    whatever that automation asks for.
  </Step>
</Steps>

**AI recovery** sits on the first step, off by default, with the tooltip "Use AI to
recover from unexpected popups (uses your Claude API key)".

## Schedule a lot of runs at once

Hover **Schedule** and choose **Bulk schedule**. The dialog is titled **Bulk Schedule**
and works as a table — "Mix devices and accounts freely — one row per execution".

* **Date**, **Switch mobile data** and **AI Recovery** are set once at the top and apply
  to every row.
* **Add All Devices** fills the table with your fleet.
* The interval filler spaces rows out: a **Start** time, **every** so many minutes or
  hours, then **Apply to selected**.

**Create Account** has its own **Single** and **Batch** tabs, with a cooldown between
rows, and the submit button counts what you are about to queue.

<Warning>
  A bulk submit can partly succeed. The toast counts both — scheduled and failed — usually
  because some rows hit a licence gate or a phone with an expired slot. Read the count,
  do not assume everything landed.
</Warning>

## What each status means

| Status        | What is happening                                                                                                                                                                               |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Pending**   | Queued, waiting for the phone to pick it up.                                                                                                                                                    |
| **Running**   | A Companion has claimed it and is driving the phone. Two Macs can never run the same job.                                                                                                       |
| **Completed** | It finished.                                                                                                                                                                                    |
| **Failed**    | It errored, or it was interrupted — "Execution interrupted — never finalized (Companion crash/disconnect or expired lease)" is what you get when the Mac slept, crashed or dropped off mid-run. |
| **Skipped**   | It never got a chance. Almost always "Execution expired — device never became available within 2h of the scheduled time".                                                                       |
| **Cancelled** | You cancelled it.                                                                                                                                                                               |

<Info>
  **A run is not lost because the phone was offline at the scheduled minute.** It stays
  **Pending** and is retried on every poll for two hours. Only after that does it turn
  **Skipped**. A run queued behind another job on the same phone gets extra time as it
  waits, and a **Running** job that stops reporting for 15 minutes is written off as
  failed.
</Info>

## Overlaps are allowed on purpose

A phone runs one job at a time. If you schedule two things at once on the same phone,
neither is refused — they queue and run in order.

The dialog may tell you a run conflicts with another. That is information, not a
rejection. Nothing is blocked, and you do not need to move it.

## Cancelling

* On the calendar, a **Pending** run can be deleted from its card.
* In the [remote control](/guides/remote-control) viewer, the **Queue** panel offers
  **Stop** on the live run and **Cancel** in the row menu.

Only pending and running work can be cancelled: "Only pending or processing executions
can be cancelled". Editing is narrower still — "Only pending executions can be edited" —
and a run the phone grabbed a second ago answers "Execution was just picked up by the
device". At that point, let it finish.

## Where the results are

**Logs** lists every finished run: its status, the automation, the phone, the scheduled
time, how long it took, and a red preview of the error if there was one. Filter by
**Completed**, **Failed**, **Skipped** or **Cancelled**, and by device.

Each row ends in **View Logs**, or the grey words **No logs** when the phone recorded
nothing. Logs are kept for 60 days.

<Info>
  When a run fails, the phone also saves a screenshot of the screen at the moment it
  broke. That screenshot is stored against the execution but is not shown anywhere in
  the dashboard today. If you need it for a support case, say so when you
  [get in touch](/guides/getting-help).
</Info>

## Why a run was refused

| Message                                                                                  | Meaning                                                                                   |
| ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| "Autogrowth MAX is required to run automations."                                         | The organization has no MAX licence.                                                      |
| "The Create Account add-on is required to run this automation."                          | MAX is not enough for **Create Account**.                                                 |
| "Device slot has expired. Renew your slot to schedule executions."                       | That phone's slot lapsed. See [Your fleet](/guides/your-fleet).                           |
| "Selected account is not linked to this device"                                          | The account is not one of that phone's accounts. Link it on [Accounts](/guides/accounts). |
| A message that the selected account is on one platform and the automation is for another | Wrong platform. Pick a TikTok account for a TikTok automation.                            |
| "Selected account container is assigned to a different device"                           | The account's [container](/guides/containers) lives on another phone.                     |

## What to read next

<CardGroup cols={2}>
  <Card title="Automations" icon="robot" href="/guides/automations">
    The twenty routines you can schedule, and what each one needs.
  </Card>

  <Card title="Workflows" icon="repeat" href="/guides/workflows">
    Stop scheduling the same day by hand.
  </Card>
</CardGroup>
