Passage Platform
Low-level session control with Playwright-style browser commands.
What is Platform?
Passage Platform gives you direct control over browser sessions. Your backend connects via WebSocket to a session actor, sends commands (navigate, click, type, evaluate), and yields to the user when human interaction is needed. The client SDK executes commands in a webview on the user’s device.
Architecture
The session actor is the core — a stateful process that relays commands between your backend (the “worker”) and the client SDK. Commands flow one at a time: your backend sends a command, the client executes it, and the result comes back. When the user needs to interact, you yield control and wait for conditions to be met.
┌─────────────┐ ┌────────────────┐ ┌─────────────────┐
│ Your Backend│ │ Session Actor │ │ Client SDK │
│ (worker) │ │ (stateful) │ │ (webview) │
└──────┬──────┘ └───────┬────────┘ └────────┬────────┘
│ │ │
│ worker.command │ server.command │
│───────────────────────►│──────────────────────────►│
│ │ │
│ │ client.command_response │
│ server.command_result │◄──────────────────────────│
│◄───────────────────────│ │
│ │ │
│ worker.yield_to_user │ server.set_interactive │
│───────────────────────►│──────────────────────────►│
│ │ │
│ │ ┌──────────────────┐ │
│ │ │ User interacts │ │
│ │ │ in webview │ │
│ │ └──────────────────┘ │
│ │ │
│ │ client.events (stream) │
│ server.command_result │◄──────────────────────────│
│◄───────────────────────│ (condition matched) │
│ │ │Key concepts
- Sessions — The session lifecycle and state machine
- Commands — Playwright-style browser commands (navigate, click, type, evaluate)
- Yield to User — Hand control to the user and wait for conditions
- Events — Telemetry events streamed from the client
Protocol
For full wire-level details on the WebSocket protocol:
- Protocol Overview — Message format and connection model
- WebSocket Connection — Connecting, authentication, and roles
Get started
- Quickstart — Create a session and send your first command
- Building a Worker — Write a complete automation backend
Last updated on