prod-FARM-IOS-Core is a free, open source marketing & customer engagement project written in TypeScript and released under Apache-2.0. It has 1,502 GitHub stars, 285 forks and 3 open issues, and was last pushed 11 days ago. On this registry it ranks #36 of 50 tracked projects in Marketing & Customer Engagement, with 5 head-to-head comparisons available. It gained 47 stars over the last 3 tracked days.

What is prod-FARM-IOS-Core?

What it is

prod-FARM-IOS-Core, also called Phone Farm iOS, is an open-source TypeScript application for operating physical iOS devices from a Mac. It lives in the iOS device automation ecosystem around Appium, WebDriverAgent, the XCUITest driver, Node.js, PostgreSQL, and TikTok workflow tooling.

It solves the problem of running scheduled workflows on real iPhones while keeping control of devices, schedules, and execution history. The application provides guided device registration, WDA and Appium supervision, live video, remote input, PostgreSQL-backed scheduling, recurring jobs, uploads, execution history, a dashboard and API server, and a built-in TikTok automation plugin. It runs locally as-is, and authentication is optional on a loopback bind. Operators must supply an AuthProvider through PHONE_FARM_AUTH_PLUGIN and add process supervision for shared or exposed deployments. Tasks are persisted as pluginId, taskType, taskVersion, and JSON payload, so an old schedule cannot silently execute a new contract.

Key capabilities

  • It supervises Appium and a signed real-device WebDriverAgent, enabling control of physical iOS devices from a Mac.
  • It registers devices through guided flows and exposes live video and remote input for manual inspection.
  • It stores schedules, recurring jobs, uploads, and execution history in PostgreSQL, so tasks persist across restarts.
  • It includes a built-in TikTok automation plugin and can load additional ESM task plugins through PHONE_FARM_PLUGINS.
  • It records tasks as pluginId, taskType, taskVersion, and JSON payload, preventing an old schedule from running a new contract.
  • It exposes a dashboard and API server with plugin-provided panels, namespaced HTTP routes, and declared WDA extensions.

Who uses it and how

  • Operators can run scheduled TikTok workflows across multiple real iPhones while keeping the farm on local hardware.
  • Device automation engineers can use live video and remote input to diagnose taps, layouts, and account-switching steps on real iOS UI.
  • Plugin authors can add task types, registration checks, device-page panels, and HTTP routes without changing core routing or scheduler code.
  • Self-hosters can operate the system as four long-lived processes on a Mac or always-on host, supervised by launchd or systemd.
  • Teams preparing exposed deployments can supply an authentication provider and harden the dashboard before binding outside loopback.

Getting started

Installation requires Node 22+, PostgreSQL, Xcode, a signed real-device WebDriverAgent, and Appium's XCUITest driver. The README shows npm install, environment setup, driver installation, database migration, and WDA preparation, then npm run appium, wda:service, worker, and web as long-lived processes.

When to use it — and when not to

It is suitable when operators need self-hosted control of real iPhones for scheduled TikTok or plugin-driven iOS workflows and can operate Node, PostgreSQL, Xcode, WebDriverAgent, Appium, and process supervision. It is not a turnkey hosted service, because the README describes local standalone operation and requires custom authentication and hardening before binding outside loopback. The project is also new, with a zero-year repository age and no listed contributors, so teams should plan for hands-on maintenance.

project readme (upstream, from github) — read inline

Phone Farm iOS

An open-source, standalone application for operating physical iOS devices and running scheduled TikTok workflows. It includes guided device registration, WDA/Appium supervision, live video and remote input, PostgreSQL-backed scheduling, recurring jobs, uploads, execution history, the dashboard/API server, and a built-in TikTok automation plugin.

It runs locally as-is; authentication is optional on a loopback bind. Harden it for a shared or exposed deployment by supplying your own AuthProvider (PHONE_FARM_AUTH_PLUGIN) and process supervision — no fork required. Tasks are persisted as pluginId, taskType, taskVersion, and a JSON payload, so an old schedule can never silently execute a new contract.

Live demo and setup walkthrough: gethandler.ai/ios-farm

The full engineering writeup, TikTok on 9 real iPhones reverse engineered from the screen up (Apple's test daemon, the two WebDriverAgent patches, pixel-level UI detection, OCR account switching, never posting twice): gethandler.ai/tiktok-iphone-farm

Documentation

Run the standalone application

Requirements are Node 22+, PostgreSQL, Xcode, a signed real-device WebDriverAgent, and Appium's XCUITest driver.

npm install
cp .env.example .env
npm run appium:install-driver
npm run db:up
npm run db:migrate
npm run wda:prepare

Run these long-lived processes (wrap each in a launchd agent or systemd unit for an always-on host):

npm run appium
npm run wda:service
npm run worker
npm run web

TikTok support is enabled by default. Set PHONE_FARM_PLUGINS to comma-separated ESM package names to add more task plugins. Set PHONE_FARM_AUTH_PLUGIN to an ESM authentication provider before binding WEB_HOST outside loopback; startup deliberately fails otherwise.

Plugin contract

src/plugin.ts defines the stable interfaces. A plugin can provide versioned tasks, registration checks, device-page panels, namespaced HTTP routes, and declared WDA extensions. Task execution receives the exact device, that plugin's own per-device data, resolved assets, a temporary workspace, cancellation, durable logging, safe device primitives, and an observed subprocess runner.

See PLUGIN_DEVELOPMENT.md for compatibility and trust rules.

src/example-plugin.ts is a minimal open-app plugin. Production plugins should be separate packages and should never require changes to core routing or scheduler code.

Repository policy

This repository uses GitHub-hosted CI only. Never connect production devices, Apple signing material, production databases, self-hosted runners, or deployment credentials to workflows triggered by pull requests. See SECURITY.md.

npm run check

Frequently asked questions

Is prod-FARM-IOS-Core free to use?

prod-FARM-IOS-Core is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does prod-FARM-IOS-Core do?

A farm of real iPhones, run from your Mac. Open-source iOS device automation with live control, a Postgres-backed scheduler, and TikTok workflows. Self-hosted,

What is prod-FARM-IOS-Core written in?

prod-FARM-IOS-Core is primarily written in TypeScript. Its source is publicly available at https://github.com/Git-Agni/prod-FARM-IOS-Core, and it has 1,502 GitHub stars.