Browser Farm
BuiltSignature capability
Sessions are stored as portable Playwright storage_state encrypted at rest with Fernet, so a login captured on the Mac transfers cleanly to a headless server without shipping fragile Chrome profile directories.
What it is
It is a Python 3.13 package (async Playwright + FastMCP) that separates login from execution. You log in interactively on the Mac where a display exists, which captures the browser's storage_state (cookies plus per-origin localStorage) into an encrypted vault. `farm sync` rsyncs that vault to a headless server, where a fresh headless Chromium context is hydrated from the decrypted state to run cron or parallel jobs. A three-tier backend escalates from HEADLESS to a visible PROFILE context to a LIVE bridge into the Mac's logged-in Chrome for CAPTCHA and 2FA. Eight platform drivers (Twitter, Facebook, Instagram, TikTok, Reddit, Substack, LinkedIn) extend a GenericDriver, and everything is exposed to Claude through an MCP server with 14 tools.
Highlights
- Encrypted session vault: storage_state encrypted at rest with Fernet (AES), key.bin held above the sessions dir at 0600 so plaintext tokens never touch disk; key and blobs both gitignored
- Three-tier Playwright backend (HEADLESS / PROFILE / LIVE) with a live-bridge escalation into the Mac's real Chrome via web.act() for CAPTCHA and 2FA
- Deterministic per-account fingerprinting: stealth JS seeded from a SHA-256 of platform:account, so each account looks like one stable machine (hardwareConcurrency, plugin set, navigator.webdriver masking) instead of all sharing one signature
- 8 platform drivers over a shared GenericDriver, plus a 'farm watch' subsystem (13 modules) for longitudinal engagement intelligence with Discord digests
- MCP server exposes 14 Claude-callable tools (open_session, navigate, click, platform_action, live_act, save_session, ...) via FastMCP
- 219 test functions, TDD red-green-refactor, hypothesis property tests; the live browser adapter is deliberately excluded from unit coverage and tested via e2e/manual runs
Tech · Python 3.13, async Playwright (Chromium), FastMCP, cryptography/Fernet, Click, Pydantic, pytest + pytest-asyncio + hypothesis, uv, rsync