Documentation

Scheduling runs

A schedule pairs one task with one phone and a time. Everything else follows from that.

The task catalogue

Tasks are picked from a catalogue rather than scripted, so each one has fields the dashboard validates before anything reaches a phone.

Health check
Unlocks, takes a screenshot, and confirms a swipe actually reaches the screen. Run this first when a device misbehaves.
Keep awake
Wakes the phone periodically so it stays on Wi-Fi and keeps receiving push instead of idling for days.
Scroll a feed
Scrolls a vertical feed with human-like pacing. Works with any short-video app, not one in particular.
Open an app
Opens an app and leaves it in the foreground, so a session that would otherwise expire stays alive.
TikTok feed
Scrolls the TikTok feed, using its own like and save buttons rather than a double-tap. Requires TikTok installed and signed in.
Post to TikTok
Publishes for real: imports your media, fills the caption, and taps Post. It confirms which account the phone is signed in as before publishing, and refuses to continue if it cannot read it.
Prepare a TikTok post
The same setup without the last tap: media in the camera roll, caption on the clipboard, composer open. Use this when you would rather look before it goes out.
Wait
Keeps a device busy for a set time. Useful for checking a schedule works.

When it runs

There are four ways to time a schedule:

  • Now queues it immediately. Best for trying something out.
  • Once runs at a specific date and time, then completes.
  • Daily runs at a local time every day.
  • Weekly runs at a local time on the weekdays you choose.

Daily and weekly schedules carry a timezone, and the next run is worked out in that timezone rather than by adding twenty-four hours. A schedule set for 09:00 stays at 09:00 across a daylight saving change.

Missed runs are skipped, not stacked

A run has a thirty minute window. If the Mac was asleep or the agent was offline when a schedule came due, and it is still down half an hour later, that occurrence is dropped and the schedule moves to its next slot.

Why not catch up?

A laptop closed over a weekend would otherwise wake to dozens of queued runs firing at once on the same phone. Skipping keeps a resumed machine behaving like a schedule, not a backlog.

One run per phone at a time

A phone can only do one thing at once, so a second schedule due at the same moment waits rather than fighting for the screen. Overlap is prevented at the database level, so two machines cannot both claim the same device.

Pausing and stopping

Pausing a schedule clears its next run; resuming recomputes it from now, so nothing missed while paused fires afterwards. A run already in progress can be stopped, and the agent picks that up on its next report rather than killing the phone mid-tap.

How posting to TikTok works

TikTok has no API for this, so the task drives the app the way a person would: it taps through the composer. Two things keep that from going wrong.

Coordinates are calibrated per phone model, not scaled from one to another. TikTok anchors its controls to the screen edges rather than distributing them, so a scaled coordinate lands a few points off, and a few points off is a different button. A model with no profile is refused rather than approximated.

The screen is read before each irreversible step. The task checks which account is signed in and confirms the Post button is actually on screen before tapping it. If it cannot read either, it stops instead of guessing.

Name the account you expect

The account field is required. Without it a run publishes to whoever the phone happens to be signed in as, and a post cannot be unsent. A repeating schedule also asks you to confirm, because it publishes every time it fires rather than once.

Media and captions

Tasks that post something take files from Media. Upload video or images there, attach them when creating the schedule, and the agent downloads them onto the phone at run time.

Ready to plug in a phone?

Connect one iPhone and run a health check in about ten minutes.