Spark Control G2FLOW Ltd

Internal tool · TikTok

Find the ads.
Authorise the posts.

Spark Control drives an iPhone to scan TikTok's For You feed, flags competitor ads with OCR and vision models, and generates Spark Ad authorisation codes for your own posts. Everything lands in one panel.

Download for macOS
v1.0.1 · Apple silicon & Intel macOS 13 or later · ~37 MB Updates install themselves
Tool scripts
The automation scripts the app drives Unzip into ~/Desktop/spark-phone/

First launch: macOS will block it — right-click the app and choose Open, then Open again. Only needed once; updates after that install silently.

No Windows build. The app signs and launches WebDriverAgent through Xcode, which only runs on macOS. Running it from Windows would need a separately signed IPA and a different device layer — not built yet.

Before you run it

What the Mac needs

The app checks every item below on first launch and installs what it can. Open a row to see how to sort the rest.

System
Xcode & command line tools You
Install Xcode from the App Store, then run xcode-select --install. Needed to sign and launch WebDriverAgent onto the phone.
Homebrew You
Install from brew.sh. The app uses it to fetch the two dependencies below.
libimobiledevice & Tesseract App installs
Device communication and on-screen text reading. Press Fix in Setup and the app runs the installs for you.
Python environment App installs
Creates its own virtual environment and installs the packages the tools need.
Spark
Supabase & Anthropic keys You
Paste them into the form in Setup. They're stored locally and never leave the machine except to reach those two services.
WebDriverAgent App installs
Cloned and patched automatically — the patch removes an accessibility call that otherwise stalls every gesture for a minute on iOS 18. You open it in Xcode once to sign it to your account.
Device
iPhone on USB, trusted You
Plug in with an Apple cable, unlock, tap Trust. Setup detects the UDID and saves it. Turn Auto-Lock off so it doesn't sleep mid-session.
TikTok ad permissions Optional
Only for Spark Codes. On the phone: TikTok → Settings and privacy → Creator tools → Ad settings → enable ad permissions.

Updates install themselves. When a new version is published the app shows a banner, downloads it, and relaunches.

Questions

FAQ

The things that actually come up. If something here doesn't cover it, Setup has a Copy setup report button — send that.

Installing
? macOS says it can't be opened
Right-click the app and choose Open, then Open in the dialog. Double-clicking won't work the first time. After that it opens normally, and updates don't ask again.
? Do I need Xcode?
Yes. It signs and launches WebDriverAgent onto the iPhone, which is how the app drives the phone at all. Install it from the App Store, then run xcode-select --install. Sign into it with the Apple ID you were given, and pick the right team when prompted.
? Setup shows red items — what do I fix first?
Work top-down. Xcode and Homebrew you install yourself; the app installs the rest with the Fix buttons. WebDriverAgent is the one that needs you to open it in Xcode once and press Cmd+U — that's what signs it to your account.
On the iPhone
? Three permissions that can't be automated
All three are one-time, and each one fails confusingly if missed:

1. Open Spark Importer once and tap Allow — lets it add images to your photos.
2. Settings → Spark Importer → Paste from Other Apps → Allow — lets it read the Spark code from the clipboard.
3. TikTok → Settings and privacy → Creator tools → Ad settings — without this, "Generate code" never appears.
? The phone keeps disconnecting mid-run
Turn Auto-Lock off (Settings → Display & Brightness) and make sure Low Power Mode is off — it forces Auto-Lock back on regardless of your setting. Use an Apple cable; charge-only cables carry no data. Keep the phone unlocked and charging while it runs.
Running it
? Nothing starts — the buttons are greyed out
The iPhone or WebDriverAgent aren't up. Go to Dashboard → Start everything and wait for the dots to go green. WDA takes a couple of minutes on a cold build — that's normal.
? The Ad Finder is logging ads I don't want
Turn on Niche ads only. Without it, every ad TikTok serves gets logged — restaurants, app installs, everything. You can bulk-select and delete the junk in Ads Found.
? Will it post without me meaning to?
No. The Poster stops at the Post screen and saves a screenshot unless Publish for real is switched on, which asks you to confirm twice. If a publish outcome is ever unclear it stops and says so rather than retrying — so nothing posts twice.
? Certificate expired / WebDriverAgent stopped working
Go to Signing — it shows the expiry and has a Re-sign & rebuild button. Paid accounts last a year; free ones expire every 7 days. After re-signing you may need to trust the certificate again on the phone (Settings → General → VPN & Device Management).
Updates
How do updates work?
The app checks on launch. When there's a new version you get a banner — click it and the app downloads, verifies and relaunches itself. There's also a Check for updates button in Settings. If an update fails it leaves the current version untouched.