Disclosure: I'm on the team that builds Foundry, the tool this comes from. This is the setup guide we wish we had; the link is at the bottom.
If you search "iPhone farm" or "phone farm setup", you mostly get photos of a wall of phones and very little about what keeps one posting on a Tuesday afternoon with nobody watching. We have run our own for eight weeks: 9 iPhones, 48 accounts across Instagram, TikTok and YouTube, 1,669 posts since Aug 21, about 400 a week. This is the setup, in the order we would build it again.
Earlier write-ups covered what broke first, six failures that threw no error and one swipe that bounced on the glass. This one is the map.
1. The hardware is the boring part
- Phones: used iPhones are fine. Ours are a mix of older and newer models, and the mix matters later (screen sizes, see section 4).
- One Mac: every phone is plugged into it over USB. The Mac runs the automation and holds the video files.
- Power and cables: a powered USB hub and short cables. Check the cable before you debug the code.
- Network: leave Wi-Fi on. One of ours lost all data the moment Wi-Fi went off, because its SIM had none.
2. The official apps, driven like a person
We post through the real Instagram, TikTok and YouTube apps, driven by iOS UI automation (WebDriverAgent, the same layer Appium uses). No private APIs, no emulators, no cloud phones. The upload is the original file, not a re-compressed copy from a scheduler.
The cost of doing it this way: you own every pop-up, every app update and every new sheet the app invents. Budget for that before you budget for anything else.
3. Signing will bite you every week
WebDriverAgent is an app you build in Xcode and install on each phone. On a free Apple ID its provisioning profile expires after 7 days, and every phone stops at once. A paid developer account moves that to a year. Whichever you use, put the expiry date somewhere a script checks, not in your head.
4. Test on the smallest and the biggest screen you own
Our phones run at three screen sizes. A tap that lands on one lands on blank space on another. Find elements by their label, not their position, and keep a small per-app list of the buttons that change between sizes.
5. Accounts: fewer per phone than you think
Each phone holds a few accounts with a hard cap per app, and a new account warms for a week (scrolling, watching, no posting) before its first post. Before every posting session an account also scrolls its own feed for a while. Every account gets a safety check twice a day, and one that shows a warning stops posting until it clears.
6. Count a post only when you can see it
"Tapped share" is not "posted". A post counts when the profile count goes up (Instagram), the live Short is there (YouTube) or the posted screen comes back (TikTok). Every post writes a receipt, and a retry reads the receipt first so it never double posts.
7. The ceiling is the content, not the phones
Once posting was reliable, the limit moved. The same moment of a video posted again within about a week gets crushed, even on a different account. Every account needs its own cut of the source. Phones make volume reliable; they do not make it good.
What it costs to run
Our honest numbers: one Mac, nine phones, a hub, and about 1.2 posts a day per account (394 in the last 7 days across 48). The time sink was never the hardware. It was the weird screens in section 2 and the signing in section 3.
If you are building one
- Verify the outcome, not the action.
- Keep receipts so retries are safe.
- Put every expiry date (signing, sessions, cookies) where a script checks it.
- Plan for the content to be the bottleneck by week three.
We packaged our setup as Foundry: a Mac app plus a CLI and an agent skill that runs on your own iPhones and your own accounts, 7 days free at https://runfoundry.app. If you would rather we run it for your app on our phones, that is at https://runfoundry.app/book.
What does your setup look like? I'd like to hear what breaks first for you.
Top comments (0)