# Share a run

At the end, a teammate has opened the same run as you on your team's runner, read every word of it and replied to a step, and the run's record names which of you did what.

## At a glance

**Time:** 5 minutes to read, 10 with a teammate.

**You need:**

- Your team's runner, with you and a teammate in the org: [On your server](server.md)
- A workflow with an Interactive step, such as `plan-build-review`: [The patterns](patterns.md)

## Steps

1. **Open the runner from the portal's Devices → Open** and start a run with an Interactive step. Copy its address from the browser.

   You should see: the run's conversation, and the step's reply ending `waits for your reply`.

2. **Send the address to a teammate.** They open the runner from **Devices → Open** first, then the address.

   You should see: the same conversation in both browsers, every message and every sent bubble.

3. **Reply to the waiting step from each browser, one after the other.**

   You should see: both replies in the conversation as `You → <step> · reply`, and the step answering each in the same session.

4. **Read the record on the box**, in the `loopgate` folder. The run's id is in its address.

   ```sh
   docker compose exec runner grep -o '"startedBy":"[^"]*"\|"userId":"[^"]*"' /data/runs/<run>/events.jsonl
   ```

   You should see: the member who started the run, then the member behind each reply, decision and change.

## Good to know

- Every member of the org opens the runner from the portal's **Devices → Open**, or from **Open in workbench** in a Slack post. The portal signs them in once; the sign-in lasts thirty days from its last use.
- A run is the same page for everyone: every word each step was sent, every word it said back, every check and every decision.
- Anyone can steer it: type to the step at work or the one waiting, answer a decision, raise a ceiling in Setup, or open **Needs you**.
- Signing in engines, adding workspaces, and setting up GitHub and Slack stay with an owner or admin.
- The conversation labels every member's message `You →`. The record names who: the run keeps the member who started it and the member behind each reply, decision and change. The portal's audit names the member too, with metadata only.
- On a laptop there is one person. The workbench there is yours alone.
- In Slack, only the person who started the thread is heard in it. A teammate opens **Open in workbench** and answers there, unless a gate names them: [Name who decides](who-decides.md).

## If something is off

- **The teammate's link shows a refusal.** The address alone carries no sign-in. They open the runner from the portal's **Devices → Open**, or press **Sign in** on the runner's page, then the address again.
- **The teammate cannot open the runner at all.** They are not a member of your org yet. Invite them from the portal's **Members**.
- **A link from an older thread or chat does not open.** The temporary address changed at a restart. Give the runner [a permanent address](address-cloudflare.md).

## Next

- [Name who decides](who-decides.md)
- [Send a session](send.md)
- [From Slack](slack.md)
