When automation fails, teams blame Playwright first. In Multilogin stacks, 80% of launch failures trace to proxy, zombie browser processes, or engine mismatch — not selectors. This runbook is the order senior engineers use before opening a vendor ticket.

Decision tree (first 5 minutes)

Profile start API fails?
  ├─ YES → Section A (API / auth / rate limit)
  └─ NO, but CDP attach fails?
       ├─ YES → Section B (CDP / timing / firewall)
       └─ NO, but site blocks / captcha?
            ├─ YES → Section C (fingerprint / proxy geo)
            └─ NO → Section D (automation code / race)

A — API & launcher layer

SymptomCheckFix
401 / 403Token expiry, workspace scopeRotate token; confirm profile folder ACL
429Concurrent starts > limitSemaphore 3–5 — production recipe
Start OK, empty CDPPoll status endpointWait up to 60s; see error codes
Stuck STARTINGOrphan Mimic processForce stop API; kill local chrome/firefox PIDs

B — CDP attach layer

# Minimal CDP smoke test (Python)
import httpx
from playwright.sync_api import sync_playwright

PROFILE = "your-uuid"
TOKEN = "Bearer ..."
r = httpx.post("https://api.multilogin.com/profile/start",
    json={"profile_id": PROFILE, "headless": False},
    headers={"Authorization": TOKEN}, timeout=90)
cdp = r.json().get("cdp_url") or r.json().get("wsUrl")
assert cdp, f"No CDP: {r.text}"

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(cdp, timeout=60_000)
    page = browser.contexts[0].pages[0]
    page.goto("about:blank")
    print("CDP OK", page.url)
    browser.close()

httpx.post("https://api.multilogin.com/profile/stop",
    json={"profile_id": PROFILE}, headers={"Authorization": TOKEN})

C — Mimic vs Stealthfox triage

Platform behaviorTry engineNotes
Chromium-only sites, Google loginMimicDefault for most web SaaS
Firefox-tolerant flows, some EU portalsStealthfoxDifferent TLS/JA3 surface
Random crash on startClone profile, switch engineCorrupt extension on one engine
Canvas/WebGL detectionEither + auditFingerprint audit script

Full engine comparison: Mimic vs Stealthfox.

D — Proxy & fingerprint

  1. Pre-flight proxy: HTTP/SOCKS auth, geo, sticky session ID
  2. Align timezone + language to proxy country — proxy alignment
  3. Run automated audit vs profile manifest
  4. Manual check: WebRTC, DNS leak on ipleak.net inside profile

Zombie process cleanup (Windows / Linux)

# Linux — find orphan Mimic/Chromium
ps aux | grep -E 'mimic|mlx|chromium' | grep -v grep
kill -9 <pid>   # after API force-stop failed

# Windows PowerShell
Get-Process | Where-Object {$_.Name -match 'mimic|chrome|firefox'} | Stop-Process -Force

What to log for every failed job

{
  "profile_id": "uuid",
  "engine": "mimic",
  "api_start_ms": 8420,
  "cdp_url_present": true,
  "cdp_connect_ms": 1200,
  "proxy_geo": "DE",
  "error_class": "CDP_TIMEOUT",
  "launcher_log_snippet": "..."
}

Structured logs let you correlate ban spikes with proxy pool rotations — not guess from one screenshot.

Related

Disclosure: MLX-MMO affiliated with Multilogin. API paths illustrative — verify against official docs.