Core Concepts
Architecture
How the pieces fit together.
Overview
Components
SDK / CLI (client-side)
Your entry point. TypeScript SDK and CLI. Sends a prompt to the runner, then listens for events via WebSocket. Handles auth, streaming, and cancellation.
Runner API (server-side)
The server that orchestrates automations. Responsibilities:
- Receives queries, creates Run records
- Sends web push notifications to wake up the target Chrome extension
- Manages WebSocket connections for event streaming
- Plans automation steps via LLM
Chrome Extension
Built with WXT (Svelte 5). Runs on the user’s machine. When it receives a push notification:
- Opens a browser tab and executes the automation steps
- Streams events back to the runner via WebSocket
Web App (dashboard)
Provides account management, API key generation, run history, device management, and billing.
Data flow for a single run
POST /query→ runner creates a Run record in the database- Runner sends web push to the device’s extension
- Extension wakes up, connects to runner via WebSocket
- Runner sends the prompt to the LLM → gets a plan (steps to execute)
- Extension executes each step in Chrome, reports progress
- Runner forwards progress events to the client
- On completion, runner stores the result and sends the terminal event
Auth flow
- User signs up on the web app (magic link or OAuth)
- Generates an API key from the dashboard
- SDK/CLI uses the API key as Bearer token
- Runner validates the key, resolves the user, checks budget
- Extension is paired to the user’s account via device registration