📲 Connect your phone
| Name | Account | Device | Timezone | ADB | Scheduler | Actions | |
|---|---|---|---|---|---|---|---|
loading phones… | |||||||
Log in to manage your phones.
The code expires in a minute or two — if it fails, reopen the pairing popup for a fresh one.
This phone isn't paired with the server yet — pair it once.
The code expires in a minute or two — if it fails, reopen the pairing popup for a fresh one.
Do this once per phone. After that you only press Start / Stop. Steps use Oppo (ColorOS); other brands differ only in menu names.
Settings → About device → tap the version row 7 times:
You’ll see “You are now a developer!”
Settings → Additional settings → Developer options. Turn ON:
Install Tailscale from the Google Play Store and open it. We use a private (Headscale) server, so connect with the custom login server + auth key:
https://headscale.yourdomain.com, and save.100.x.x.x address. Keep it connected.“Wireless debugging” is what lets the server control the phone over the network instead of a USB cable. Go to Developer options → Wireless debugging and tap the row title (not just the on/off switch) to open its own screen.
On that screen you’ll see an IP address & Port line that looks like
192.168.1.20:39145. That number after the colon — 39145 in this
example — is the connect port. Note it down.
Which IP do I use? The phone shows its local Wi-Fi IP
(192.168.x.x), but the server reaches the phone over Tailscale — so you
use the phone’s Tailscale IP (open the Tailscale app to see it, e.g.
100.64.0.61) with that same port. Final answer looks like:
100.64.0.61:39145.
⚠️ This port changes every time the phone restarts or you toggle Wireless debugging off/on. If a phone stops connecting later, just come back to this screen, read the new port, and update it in the dashboard (🔌 Reconnect).
In the “Connect your phone” form on the left, fill in:
office.ip:port from step 4
(e.g. 100.64.0.61:39145).Click + Connect & add. The server now tries to reach the phone:
What is pairing? A one-time handshake where the phone and server exchange a secret so the phone trusts this server. You do it once; after that the phone reconnects automatically. It’s separate from the normal connect, and it uses a different, temporary port plus a 6-digit code.
On the phone: on the Wireless debugging screen, tap “Pair device with pairing code”. A popup appears showing:
418362192.168.1.20:37021. Note this
port (37021) is NOT the same as the connect port from step 4 — it’s a
fresh one just for pairing, and it disappears when you close the popup.In the dashboard’s yellow panel, type:
100.64.0.61:37021) — Tailscale IP, pairing port.Click Pair & connect. You’ll see ✓ paired — connecting…, then the phone joins the table. Done — you never pair this phone again (unless it’s reset or you “Forget” this server under the phone’s paired-devices list).
💡 Tip: the pairing code expires in a minute or two. If it fails, reopen “Pair device with pairing code” on the phone for a fresh code + port and try again.
Click Open › on the phone → pick the 📸 Instagram or 💼 LinkedIn column. First, what a session is: open the app → scroll the feed human-paced for a while → close the app → gap → next session. A day has several sessions at random times.
⚡ Start Browse Now
▶ Start Auto Schedule
[wait] N min until 1:31 PM), then runs that session, waits, runs the next, etc.↻ Resume — continues the last session from where it stopped. ■ Stop ends everything.
injectEventSync … failed): the phone is blocking simulated input — turn ON USB debugging (Security settings) (MIUI, needs Mi account), then Start again.| Name | Account | Device | Timezone | ADB | Scheduler | Actions | |
|---|---|---|---|---|---|---|---|
loading phones… | |||||||