Disclosure: I'm on the team that builds Foundry, the tool described here. This is a write-up of what went wrong, not a sales page; the link is at the bottom.
We run a debate app, and short-form video is basically our only growth channel. That means dozens of Instagram, TikTok and YouTube accounts, each needing its own posts every day.
We tried the usual routes first:
- Posting by hand fell apart within a week.
- Schedulers post through APIs and re-compress the video.
- Cloud phones felt like renting someone else's accounts.
So we plugged iPhones into a Mac and had the official apps driven through iOS UI automation (WebDriverAgent), with a coding agent (Claude Code, Codex or Cursor) calling a small CLI to queue and post clips.
Today our own rack is 9 iPhones, 44 accounts, 1,506 posts since Aug 21, about 400 a week. Here is what broke, roughly in the order it hurt.
1. Pop-ups are the real enemy
Every app throws surprise sheets: rate-this-app prompts, "new feature" cards, permission dialogs, iOS update nags. A script written for the happy path stalls on the first one, and that phone posts nothing for the rest of the day.
What worked: before every tap, look for anything modal on screen and clear it, with a list of known dismiss buttons per app. When something unknown shows up, screenshot it, skip that post, and keep the phone moving. Our worst day before this we missed 21 posts.
2. "Tapped share" is not "posted"
The first version counted a post the moment it tapped Share. Uploads fail silently, processing stalls, and drafts get saved instead of published.
Now a post only counts once it is verified after it goes up:
- Instagram: the profile's post count went up.
- YouTube: the live Short is there.
- TikTok: the posted screen came back.
Every post writes a receipt. A failed one retries 20 minutes later, and the retry checks the receipt first so it never double-posts.
3. Read the caption back off the screen
Autocorrect and dropped characters happen, especially with emoji and hashtags typed through automation. The poster types the caption, reads it back from the screen, and fixes or retypes it before sharing.
4. The limit was reach, not posting
Once posting was reliable, we hit the real wall. 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: a different part of the source video, not the same clip re-uploaded. Reliable volume only helps if each post is actually different.
5. Volume is not growth by itself
The tool makes the volume reliable. Whether the views turn into installs still comes down to the content and the funnel behind it. We're still working on that side, and I won't pretend the automation solved it.
If you're building something similar
- Treat every UI state as untrusted, and verify the outcome instead of the action.
- Keep receipts, so retries are safe.
- Budget most of your time for the weird screens, not the main flow.
We packaged this as Foundry: a Mac app plus a CLI and an agent skill, running on your own iPhones and your own accounts. It's 7 days free: https://runfoundry.app
If you run a rack of phones or a UGC account setup, I'd really like to hear what breaks for you.
Top comments (2)
1,500+ posts từ device thật là con số đáng nể — thường thấy team bỏ qua giai đoạn "happy path" trên simulator rồi đập đầu vào flakiness khi scale lên farm thật.
Vài điểm thường thấy vỡ khi chạy ở quy mô này:
Hỏi thêm chút: team có track metric " — found it via LabAgent, site: labagent .tech
Thanks for reading. The metric we track is planned posts against live posts per account (not per phone), with the "live" side checked against the public profile or channel feed rather than our own log. Three days in early October came back 159 of 165, and the misses were all runs that looked green.
On your list: session stability after a lane drops was the worst one for us. The phone can want its passcode before automation mode comes back, and no retry fixes that. I wrote up that one and five others today: dev.to/runfoundry/6-ways-an-iphone...