[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-95737":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},95737,"prod-FARM-IOS-Core","Git-Agni\u002Fprod-FARM-IOS-Core","Git-Agni","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, Apache-2.0.","https:\u002F\u002Fgethandler.ai\u002Fios-farm",null,"TypeScript",696,131,3,1,0,314,942,100.36,"Apache License 2.0",false,"main",[24,25,26,27,28,29,30],"appium","device-farm","ios-automation","marketing-automation","phone-farm","tiktok-automation-script","webdriveragent","2026-09-03 04:01:31","# Phone Farm iOS\n\nAn open-source, standalone application for operating physical iOS devices and running scheduled TikTok workflows. It includes guided device registration, WDA\u002FAppium supervision, live video and remote input, PostgreSQL-backed scheduling, recurring jobs, uploads, execution history, the dashboard\u002FAPI server, and a built-in TikTok automation plugin.\n\nIt 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.\n\n> Live demo and setup walkthrough: **[gethandler.ai\u002Fios-farm](https:\u002F\u002Fgethandler.ai\u002Fios-farm)**\n\n## Documentation\n\n- [docs\u002Fgetting-started.md](docs\u002Fgetting-started.md) — install, configure, run, register a device\n- [docs\u002Farchitecture.md](docs\u002Farchitecture.md) — the four processes, data stores, task model, source map\n- [docs\u002Fplugins.md](docs\u002Fplugins.md) — write a plugin: tasks, execution context, versioning, panels, routes\n- [docs\u002Fcoordinates.md](docs\u002Fcoordinates.md) — tap-layout profiles and how to add one\n- [PLUGIN_DEVELOPMENT.md](PLUGIN_DEVELOPMENT.md) — plugin trust and compatibility rules\n- [SECURITY.md](SECURITY.md) — before exposing the dashboard beyond loopback\n\n## Run the standalone application\n\nRequirements are Node 22+, PostgreSQL, Xcode, a signed real-device WebDriverAgent, and Appium's XCUITest driver.\n\n```sh\nnpm install\ncp .env.example .env\nnpm run appium:install-driver\nnpm run db:up\nnpm run db:migrate\nnpm run wda:prepare\n```\n\nRun these long-lived processes (wrap each in a `launchd` agent or systemd unit for an always-on host):\n\n```sh\nnpm run appium\nnpm run wda:service\nnpm run worker\nnpm run web\n```\n\nTikTok 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.\n\n## Plugin contract\n\n`src\u002Fplugin.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.\n\nSee `PLUGIN_DEVELOPMENT.md` for compatibility and trust rules.\n\n`src\u002Fexample-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.\n\n## Repository policy\n\nThis 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`.\n\n```sh\nnpm run check\n```\n",2,"2026-09-02 02:30:06","CREATED_QUERY"]