Window sync
Work in one profile's window and have the same clicks, scrolling and typing happen in other profiles on the same computer.
Window sync repeats what you do in one browser window, the leader, in the windows of other profiles, the followers. Click a button, scroll a feed or type into a form once, and every follower does the same.
Windows first
Window sync runs in the desktop agent on Windows computers. macOS and Linux follow later.
Start it
- Open the profiles you want to sync on the same computer, from the
dashboard or with
veil start. - Go to Devices, open that computer, and find Window sync.
- Pick the leader, tick the followers, and choose Start sync.
The section shows Syncing with the leader and its followers while it runs. Stop sync ends it. It also ends on its own when the leader closes or the last follower does; a follower that closes just leaves the group.
What is mirrored
| Mirrored | Not mirrored |
|---|---|
| Mouse clicks, double clicks and right clicks | The address bar, tabs and browser menus |
| Dragging, e.g. selecting text or moving a slider | Extension pop-ups |
| The scroll wheel | Input inside cross-origin frames (ads, embedded checkouts) |
| Keys typed into pages, shortcuts such as Ctrl+A | Typing with an IME (Chinese, Japanese, Korean input methods) |
Input reaches each follower's visible tab at the same position as in the leader. Keep every window maximized on the same screen, as profiles open by default, so the same element is under the same point in each; a smaller window or a different zoom level puts clicks elsewhere. To move to another site, navigate each window yourself or click the same link in the leader.
Followers receive the input as real browser input events, and nothing is added to the pages a site can see.
From a script
The agent's loopback API runs the same sync, by session id or profile id:
KEY=$(jq -r .localApiKey "$LOCALAPPDATA/VeilBrowser/config.json")
curl -s -X POST http://127.0.0.1:38923/sync \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "leader": "<profile-id>", "followers": ["<profile-id>", "<profile-id>"] }'
curl -s http://127.0.0.1:38923/sync -H "X-API-Key: $KEY" # status
curl -s -X DELETE http://127.0.0.1:38923/sync -H "X-API-Key: $KEY" # stopFrom the cloud, with a dashboard session, POST /v1/devices/{id}/sync takes
{ "leaderProfileId": "…", "followerProfileIds": ["…"] } and
DELETE /v1/devices/{id}/sync stops it. Both answer 202 with a command id;
the device's sync field shows what is running once the agent has started.
Up to 20 followers.