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
12 changes: 12 additions & 0 deletions content/docs/concepts/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ explains each one and how they fit together.
| Actor | An AI user with instructions and knowledge that drives a real browser |
| Checklist | Plain-language checks an actor verifies, each with evidence |
| Interview | A structured study run with persona participants, ending in a report |
| Live session | An actor using your product in real time while you watch and steer it |
| Automation | A graph of steps that runs checklists on a schedule or an event |
| Comment | A pin a real visitor drops on your page through the feedback widget |
| Insight | A notable observation surfaced from a run |
Expand All @@ -42,6 +43,8 @@ Under the hood, an actor drives a real browser and works through your product
the way a person would, observing the page, taking an action, observing the
result, and repeating until the task is done. It can also read email sent to
its own inbox, which is what makes signup and verification flows testable.
Actor inboxes, and actors that stay signed in between runs, come with the
Startup plan and above.

## Checklists

Expand All @@ -66,6 +69,15 @@ You define sections and questions, the platform conducts the interview, and it
produces a report summarizing what it learned. Interviews are useful for user
research and feedback gathering at a scale that manual interviews cannot reach.

## Live sessions

A **live session** puts you beside an actor while it works: the browser on one
side, the chat on the other, and the steps it takes underneath. Give it a task
or interview it in character, change direction mid-task, or take the browser
and drive it yourself. Sessions run in a cloud browser or, from the desktop
app, in a browser on your own Mac. See
**[Run a live session](/tutorials/live-sessions)**.

## Workflows

A **workflow** (an **automation** in the dashboard) chains steps into a single repeatable automation. Where a
Expand Down
107 changes: 97 additions & 10 deletions content/docs/integrations/desktop-app.mdx
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
---
title: "Desktop app"
icon: "monitor"
description: "Run Stunt Double as a Mac app, and let actors browse with your computer's own Chrome, VPN and sign-ins."
description: "Run Stunt Double as a Mac app, let actors browse with your computer's own Chrome, VPN and sign-ins, and add local tools and models."
---

# Desktop app

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.
computer's Chrome, including its VPN access and machine-credential sign-ins,
and it runs [live sessions](/tutorials/live-sessions) in a browser on your
Mac, with MCP servers and models from this Mac.

## 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
device.
device. [Set up this Mac](#set-up-this-mac) can install a separate Chrome for
Testing for live sessions instead.
- **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**.
a paid plan, with devices switched on by an owner or admin in **Settings**,
then **Devices**. Testing private or internal addresses from it needs the
Startup plan or above.

## Install it

Expand All @@ -26,7 +30,9 @@ computer's Chrome, including its VPN access and machine-credential sign-ins.
2. Open the download and drag Stunt Double into **Applications**.
3. Open the app and sign in with your Stunt Double account.

The app updates itself when a new version ships.
The app updates itself. It checks when it launches, when it wakes from sleep
and when you come back to it, so a Mac that is never quit still gets the
latest version.

## Use this Mac as a device

Expand All @@ -38,16 +44,90 @@ The app updates itself when a new version ships.
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. 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.

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 this device** in the console. A run already in
progress stops with it.

A live session does not need this step: starting a session on **This Mac**
pairs the Mac in the background when it is not a device yet.

### How the browser runs

The device console lets you choose how the browser appears, under **How the
browser runs**:

- **Inside the app** (the default). The browser has no window of its own. You
watch it in the device console and can take control when you need to.
- **Its own window.** A real Chrome window on your desktop. Slower to work
alongside, but the only way to answer a client certificate, Keychain or smart
card prompt.

Both share one browser profile, so a sign-in done in either is available to
both. Sign-ins you make persist for later runs. You cannot switch while a task
is running.

## Set up this Mac

Live sessions on this Mac can use a few optional extras. Open them from the
app menu, **Stunt Double**, then **Set Up This Mac…**, or from **Packages and
models** in the device console.

| Package | What it adds |
| ------------------ | ------------------------------------------------------------- |
| Chrome for Testing | A clean browser for sessions, kept apart from your own Chrome |
| Node | MCP servers that start with `npx` or `node` |
| uv | Python MCP servers that start with `uvx` or `uv` |
| Ollama | Running the actor on a model on this Mac |

Each row says whether the package is already here and its size. Click
**Install** and the app asks you to confirm, naming the package, its size and
where it comes from, before it downloads anything. Every download is checked
against a published checksum before it is unpacked, and everything installs
into `~/.stuntdouble` in your home folder: nothing system-wide, and no
administrator password. A Node or uv you already have keeps working, and wins
over the one installed here.

## Local models

With Ollama installed and running, **Set Up This Mac** suggests models that
work well with actors:

| Model | Size | Notes |
| -------------- | ------ | --------------------------------------- |
| `gemma3:4b` | 3.3 GB | Small, and reads screenshots |
| `qwen2.5vl:7b` | 6 GB | Reads screenshots; better at long tasks |
| `llama3.2` | 2 GB | Small and quick. Text only |
| `qwen2.5:7b` | 4.7 GB | Good at tools. Text only |

Click **Install** on a model to download it. If you already run Ollama, the app
uses yours and the models you have pulled; otherwise it starts the one it
installed when it is needed, listening only on this Mac, and stops it when you
quit.

When a live session's actor thinks with a model on this Mac, the model never
sees Stunt Double's credentials, and what it reads stays on your Mac. Only the
session's journey, captures and transcript are saved to your workspace, and the
end-of-session summary is built from those facts alone, without sending the
transcript to Stunt Double's model.

<Callout variant="note" title="Early access">
Choosing a local model for a session is in early access alongside live
sessions. A model that reads screenshots gives the actor a much better view of
the page than a text-only one.
</Callout>

## MCP servers on this Mac

In a live session on this Mac, the actor can use MCP servers that run on your
Mac. They never run in Stunt Double's cloud. Add them in the app, or import
the ones you already use in Claude Desktop or Cursor from the session's
**Tools**. The app asks you to approve each server, showing the exact command,
before it starts, and editing a server's command switches it off until you
approve it again. See [Tools and sign-ins](/tutorials/live-sessions#tools-and-sign-ins)
for how they work in a session.

## Troubleshooting

**This Device asks you to install Google Chrome.** The device drives Chrome.
Expand All @@ -74,3 +154,10 @@ 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.

**An install in Set Up This Mac fails.** Check the Mac is online and try again.
A failed install leaves any earlier version in place.

**A Mac MCP server will not start.** Its command may need Node or uv. The
server's row in **Tools** says what is missing and links to **Set Up This
Mac**.
5 changes: 5 additions & 0 deletions content/docs/integrations/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ them.
caption="Every integration is the same three steps. A finished step shows a tick; the next one to do is the first without."
/>

<Callout variant="note" title="Plans">
Slack and Linear connections depend on the workspace's plan: Free and Solo cannot connect
them, Hobby can connect one of the two, and Startup and above can connect both.
</Callout>

A step that depends on the one before it stays greyed out until that step is
done, so the next thing to do is always the first step without a tick.

Expand Down
30 changes: 23 additions & 7 deletions content/docs/integrations/self-hosted-workers.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ saved sign-ins. The app connects out to Stunt Double, so you open no inbound
ports.

For a full walkthrough, read
[Test a product behind your firewall](/tutorials/self-hosted-worker).
[Test a product behind your firewall](/tutorials/self-hosted-worker). To watch
and steer an actor on your own Mac in real time instead, start a
[live session](/tutorials/live-sessions) on **This Mac**: it pairs the Mac for
you in the background.

## What it does

Expand All @@ -26,10 +29,10 @@ For a full walkthrough, read

## Before you start

- **Plan.** Devices are available on the Startup plan and above. On other plans,
**Settings**, then **Devices**, explains what they do and how to upgrade.
You see the same prompt when you point an actor at an address that only
works inside a network.
- **Plan.** Devices are available on every paid plan, for public sites.
Private and internal addresses (staging behind a VPN, an intranet, a local
dev server) need the Startup plan or above. Pointing an actor at one of those
on another plan shows what is needed and how to upgrade.
- **Role.** A workspace owner or admin turns devices on. Once they are on, any
member can set up their own Mac.
- **A Mac.** macOS on Apple silicon or Intel, with Google Chrome installed,
Expand All @@ -51,6 +54,11 @@ For a full walkthrough, read
a run starts.
- **A named device**, to always use that Mac.

The browser runs inside the app by default, and you watch it from the device
console. If a site asks for a client certificate, Keychain or a smart card,
switch **How the browser runs** to **Its own window** in the console (see the
[desktop app](/integrations/desktop-app#how-the-browser-runs)).

To check a device can reach a site before a run depends on it, enter the
address under **Test connection** in **Settings**, then **Devices**. The test
runs in the device's browser, so a pass means actors can reach that address.
Expand All @@ -67,6 +75,10 @@ MCP server, the Figma plugin, the assistant, Slack, Linear or an interview.
internal, or the address only works inside a network (a private IP range,
for example), the run stops up front and asks you to choose a device for
the actor.
- **Internal addresses need Startup.** Below the Startup plan, a run to a
private or internal address stops, on a device as well as in the cloud.
- **Cancelling frees the device.** Cancel a run from its report and the device
is free for the next one straight away.

## Move a Mac to another workspace

Expand Down Expand Up @@ -106,8 +118,12 @@ and has outbound HTTPS to `app.stuntdouble.io`, then click **Reconnect**.
**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**.

**A run says devices need the Startup plan.** Devices are available on the
Startup plan and above. Upgrade from **Settings**, then **Billing**.
**A run says devices are not on your plan.** Devices are available on every
paid plan. Upgrade from **Settings**, then **Billing**.

**A run says the address needs the Startup plan.** Private and internal
addresses need Startup or above, whether the actor runs on a device or in the
cloud. Upgrade from **Settings**, then **Billing**.

**You need a custom deployment.** If the Mac app does not fit how your network
works, for example you want the relay running in your own cloud, the
Expand Down
9 changes: 8 additions & 1 deletion content/docs/tutorials/index.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "Tutorials"
description: "Step-by-step guides for getting the most out of every part of Stunt Double: actors, checklists, interviews, workflows, Slack, devices, and the API."
description: "Step-by-step guides for getting the most out of every part of Stunt Double: actors, checklists, interviews, workflows, Slack, devices, live sessions, and the API."
---

# Tutorials
Expand Down Expand Up @@ -79,6 +79,13 @@ your usage grows.
'Connect the MCP server to Claude and drive actors, checklists, and interviews from a conversation.',
href: '/tutorials/automate-with-mcp',
},
{
icon: 'actor',
title: '10. Run a live session',
description:
'Watch an actor use your product in real time, steer it as it goes, take over the browser when you need to and keep what it finds.',
href: '/tutorials/live-sessions',
},
]}
/>

Expand Down
Loading
Loading