Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ Read **[Core concepts](/concepts)** for each building block in detail.
},
{
title: "Integrations",
description: "GitHub, Vercel, Slack, Linear, Figma, webhooks and self-hosted workers.",
description: "GitHub, Vercel, Slack, Linear, Figma, webhooks and devices on your own network.",
href: "/integrations",
},
{
Expand Down
74 changes: 42 additions & 32 deletions content/docs/integrations/desktop-app.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,18 @@ description: "Run Stunt Double as a Mac app, and let actors browse with your com

# Desktop app

The desktop app is Stunt Double in its own Mac window. It can also turn your
Mac into a worker, so actors browse with this computer's Chrome, including its
VPN access and machine-credential sign-ins.
The desktop app is Stunt Double in its own Mac window. It can also make your
Mac a [device](/integrations/self-hosted-workers), so actors browse with this
computer's Chrome, including its VPN access and machine-credential sign-ins.

## Before you start

- **macOS.** macOS 10.15 or later, on Apple silicon or Intel.
- **Chrome.** Google Chrome installed, if you want to use the Mac as a
worker.
- **Plan.** The app itself works on any plan. Using it as a worker needs the
Workers entitlement, which comes with the Enterprise plan.
device.
- **Plan.** The app itself works on any plan. Using the Mac as a device needs
the Startup plan or above, with devices switched on by an owner or admin in
**Settings**, then **Devices**.

## Install it

Expand All @@ -27,40 +28,49 @@ VPN access and machine-credential sign-ins.

The app updates itself when a new version ships.

## Use this Mac as a worker
## Use this Mac as a device

1. In the app, open **Settings**, then **Workers**.
2. Find **Use this device as a worker** and click **Enable this device**.
3. The card changes to **Connected using this machine's browser.** The
worker shows in the list as **Your device**.
4. Assign actors to it. Open an actor, find **Self-hosted worker** and choose
this device under **Worker**.
1. In the app, open **Go**, then **This Device** (Cmd+D). The device console
opens in its own window.
2. Click **Set up this Mac**. The console shows **Connected** once the Mac
checks in.
3. Choose where each actor's browser runs. Open an actor, go to its **Manage**
tab and, under **Where this actor's browser runs**, choose this Mac or
**Any device in this workspace**.

The browser runs inside the app, not as a window on your desktop. Click **Open
device console** to watch what an actor is doing, sign in to an internal site
or take control of the browser. Sign-ins you make there persist for later
runs.
The browser runs inside the app, not as a window on your desktop. Use the
device console to watch what an actor is doing, sign in to an internal site or
take control of the browser. Sign-ins you make there persist for later runs.

Enabling is remembered. When the app restarts, including after an update, the
worker reconnects by itself.
Setting up is remembered. When the app restarts, including after an update,
the Mac reconnects by itself. Quitting the app closes its browser.

To stop, click **Disable** on the same card.
To stop, click **Disable this device** in the console. A run already in
progress stops with it.

## Troubleshooting

**There is no "Use this device as a worker" card.** The card only shows inside
the desktop app, in a workspace with the Workers entitlement.
**This Device asks you to install Google Chrome.** The device drives Chrome.
Install it, then click **Set up this Mac** again.

**The card asks you to install Google Chrome.** The worker drives Chrome.
Install it, then click **Enable this device** again.
**The console says this Mac is paired with another workspace.** A Mac belongs
to one workspace at a time. Click **Move to** and confirm to move it here.
Runs in the other workspace stop using it.

**The card offers "Pair with" your workspace.** This Mac is paired with a
different workspace, or its worker was deleted. Click **Pair with** to pair it
here.
**The console says "This device is no longer paired".** The device was removed
from the workspace, or its key no longer works. Click **Pair again**.

**The card says to update the app.** That version cannot manage a worker yet.
Update the app and reopen **Workers**.
**The console says "Not reaching Stunt Double".** The app is running, but
Stunt Double has not heard from it for over a minute. Check the Mac is online,
then click **Reconnect**.

**A run fails because the browser profile is in use.** Only one browser can
use the profile at a time. Close any Stunt Double worker running on the same
Mac from the command line, or a sign-in window left open, and try again.
**The console says to update the app.** That version cannot run a device yet.
Update the app and reopen **This Device**.

**A run says the browser was suspended by security software.** Endpoint
security on the Mac froze Chrome before it could start. Ask your IT team to
allow Stunt Double to launch Google Chrome.

**A run says the browser profile is in use.** Only one Chrome can use the
device's profile at a time. Close any Chrome window still open on that
profile, such as a sign-in window, and try again.
24 changes: 12 additions & 12 deletions content/docs/integrations/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -107,18 +107,18 @@ and picks up wherever they left off.

## Every integration

| Integration | What it does | Who sets it up | What Stunt Double requests |
| -------------------------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [GitHub](/integrations/github) | Actor pull request reviews, PR comments, automations on GitHub events | Anyone connects; an owner or admin turns it on | OAuth: `read:user`, `user:email`, `repo`. GitHub App: access to the repositories you choose |
| [Vercel](/integrations/vercel) | Automations on deployment events | Anyone connects, or install from the Vercel Marketplace | The permissions the Vercel integration asks for at install |
| [Figma](/integrations/figma) | Design context for actors, automations on file events | Anyone connects; an owner or admin turns it on | `current_user:read`, `file_content:read`, `file_metadata:read`, `file_comments:read`, `file_comments:write` |
| [Figma plugin](/integrations/figma-plugin) | Design reviews, checklists, feedback and actor chat inside Figma | Each designer, from Figma | A plugin token valid for 90 days. The plugin only talks to stuntdouble.io |
| [Linear](/integrations/linear) | The Stunt Double agent on Linear issues, automations on issue events | Anyone connects; an owner or admin turns it on and picks the agent's actor | `read`, `write`, `issues:create`, `comments:create`, `app:assignable`, `app:mentionable` |
| [Slack](/integrations/slack) | Design reviews in threads, notifications, a workspace agent in direct messages | An owner or admin adds it to the workspace | `channels:read`, `groups:read`, `channels:history`, `groups:history`, `chat:write`, `chat:write.customize`, `mcp:connect`, `commands`, `users:read`, `app_mentions:read`, `incoming-webhook`, `assistant:write`, `im:history`, `im:write` |
| [Webhooks](/integrations/webhooks) | Start an automation from any system that can send an HTTP request | Anyone who can edit automations | A secret per automation, sent as `X-Webhook-Secret` |
| [Feedback widget](/integrations/feedback-widget) | Collect comments on your live site into a project | Project members; owners and admins set workspace limits | A project key that identifies the project, limited to your allowed domains |
| [Self-hosted workers](/integrations/self-hosted-workers) | Run actors on your own network, against sites the public internet cannot reach | Owners and admins, on Enterprise | A worker API key, shown once |
| [Desktop app](/integrations/desktop-app) | Use your Mac as a worker | Owners and admins, where workers are available | Your Stunt Double sign-in |
| Integration | What it does | Who sets it up | What Stunt Double requests |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [GitHub](/integrations/github) | Actor pull request reviews, PR comments, automations on GitHub events | Anyone connects; an owner or admin turns it on | OAuth: `read:user`, `user:email`, `repo`. GitHub App: access to the repositories you choose |
| [Vercel](/integrations/vercel) | Automations on deployment events | Anyone connects, or install from the Vercel Marketplace | The permissions the Vercel integration asks for at install |
| [Figma](/integrations/figma) | Design context for actors, automations on file events | Anyone connects; an owner or admin turns it on | `current_user:read`, `file_content:read`, `file_metadata:read`, `file_comments:read`, `file_comments:write` |
| [Figma plugin](/integrations/figma-plugin) | Design reviews, checklists, feedback and actor chat inside Figma | Each designer, from Figma | A plugin token valid for 90 days. The plugin only talks to stuntdouble.io |
| [Linear](/integrations/linear) | The Stunt Double agent on Linear issues, automations on issue events | Anyone connects; an owner or admin turns it on and picks the agent's actor | `read`, `write`, `issues:create`, `comments:create`, `app:assignable`, `app:mentionable` |
| [Slack](/integrations/slack) | Design reviews in threads, notifications, a workspace agent in direct messages | An owner or admin adds it to the workspace | `channels:read`, `groups:read`, `channels:history`, `groups:history`, `chat:write`, `chat:write.customize`, `mcp:connect`, `commands`, `users:read`, `app_mentions:read`, `incoming-webhook`, `assistant:write`, `im:history`, `im:write` |
| [Webhooks](/integrations/webhooks) | Start an automation from any system that can send an HTTP request | Anyone who can edit automations | A secret per automation, sent as `X-Webhook-Secret` |
| [Feedback widget](/integrations/feedback-widget) | Collect comments on your live site into a project | Project members; owners and admins set workspace limits | A project key that identifies the project, limited to your allowed domains |
| [Devices](/integrations/self-hosted-workers) | Run actors from a Mac on your own network, against sites the public internet cannot reach | An owner or admin turns devices on, on Startup and above; each member sets up their own Mac | Your Stunt Double sign-in, in the desktop app |
| [Desktop app](/integrations/desktop-app) | Stunt Double in a Mac window, and the way to use your Mac as a device | Anyone | Your Stunt Double sign-in |

MCP clients (Claude, Claude Code, Cursor, Windsurf, ChatGPT) request
`mcp:read`, `mcp:write` and `mcp:run`. Their setup is in the [MCP section](/mcp).
Expand Down
Loading
Loading