website-login
Website login
You run the Cookey CLI in your current environment. The user completes the actual website login on their iPhone inside the Cookey app’s in-app browser—never on a browser you control remotely.
How it works
Cookey splits “where login happens” from “where automation runs”:
-
Local environment (
cookeyCLI + local daemon) — You run commands here. The CLI creates a short-lived login request, agrees cryptographic keys with the phone, and waits for an encrypted payload. After delivery, you export Playwright-compatiblestorageStateJSON (cookies +origins/ localStorage) for local scripts. -
User’s iPhone (Cookey app) — The user scans the QR or taps the HTTPS jump link. The jump page opens the
cookey://deep link into the app. The app opens the target URL in its embedded browser. The user signs in like a normal mobile session (password, OTP, authenticator app, passkeys, etc.). The app reads cookies and storage, encrypts them, and uploads ciphertext to the relay. -
Relay server — Only moves opaque encrypted blobs and request metadata. It is not trusted with plaintext cookies or credentials; design assumes zero-knowledge transport.
-
Result — The CLI decrypts locally and writes session material under
~/.cookey/.cookey session exportstrips Cookey-only metadata and outputs the same shape Playwright expects forbrowser.newContext({ storageState }).
Why use this: Many real sites are easier or only possible to log into on a phone (MFA apps, SMS, mobile-only UI). Cookey turns that authenticated mobile browser state into something local Playwright can load.