---
document_id: DESKTOP_SEAT_CAPTURE
status: ACTIVE
as_of: 2026-08-11T22:30Z
authority: Disk SoT · member-facing
owner: ops
audience: member
tribal_key: tribal:shared:member:desktop-seat-capture
related:
  - USER_GUIDE_CHAT_OMNILORE_AI.md
  - COTRINITY_IDE.md
  - FEATURES_USER.md
  - KNOWN_LIMITATIONS.md
  - RUNBOOK_SEAT_DESKTOP_CAPTURE_CHAT_COTRINITY_2026-08-11.md
  - SECURITY_SEAT_CHAT_CAPTURE_2026-08-11.md
---

# Desktop seat capture — Chat + CoTrinity (members)

**What this is:** Your OmniLore account can use a **seat implementer** on a computer you control so **Chat** (remote) and **CoTrinity** (desktop IDE) can request a **screenshot of that computer** under your permission.

**What this is not:** Free remote control of any PC, unrestricted shell, or click/type automation.

---

## Two ways to capture

| Where you are | Client | What happens |
|---------------|--------|----------------|
| **At the computer** | **CoTrinity** (VS Code / Cursor) | Local seat agent captures the screen |
| **Away from the computer** | **chat.omnilore.ai** (OmniLore mode) | Chat asks the same agent on your machine (if online) |

Same account · same machine · same grants.

---

## One-time setup (on the desktop machine)

Do this **on the computer** whose screen you want to capture (not only in the browser).

**PATH note:** Until install finishes, `omnilore-desk` / `omnilore-seat-agent` may **not** be on your shell `PATH`. Use the **full paths** below (they work from a fresh account). The installer also places convenience wrappers in `~/.local/bin` — if that directory is on your `PATH`, bare names work afterward.

### 1. Enroll the device

```bash
~/omnilore/ops/bin/omnilore-desk enroll
```

### 2. Install and start the seat agent

```bash
bash ~/omnilore/ops/bin/install-seat-agent-user.sh
systemctl --user status omnilore-seat-agent
```

You want status **active**. Default listen: `127.0.0.1:8455` (local only).

The install script also places `omnilore-desk` and `omnilore-seat-agent` wrappers in `~/.local/bin`. Ensure:

```bash
export PATH="${HOME}/.local/bin:${PATH}"
# or open a new login shell if your profile already adds ~/.local/bin
```

### 3. Register for Chat (so the server knows your device)

```bash
~/omnilore/ops/bin/omnilore-seat-agent register-remote
~/omnilore/ops/bin/omnilore-seat-agent heartbeat
# after install + PATH: omnilore-seat-agent register-remote && omnilore-seat-agent heartbeat
```

### 4. Allow screenshots (opt-in)

```bash
~/omnilore/ops/bin/omnilore-desk grant-capture
```

Without this grant, capture is **denied** by design.

### 5. Keep the agent awake

If you previously put the agent to sleep:

```bash
~/omnilore/ops/bin/omnilore-agent-wake
# or: ~/omnilore/ops/bin/omnilore-agent-grants availability
```

### 6. Optional but recommended (Wayland reliability)

```bash
sudo apt install grim
```

Avoids flaky GNOME screenshot portal issues on some Ubuntu seats.

---

## Use from CoTrinity (desktop)

1. Install **CoTrinity ≥ 1.0.34** (prefer **VS Code**).
2. Reload the window after install.
3. Confirm status bar-ish seat status: online · awake · capture on/off.
4. In CoTrinity Chat, say for example:
   - “Take a screenshot”
   - “Desktop probe”
   - “Seat status”
5. Or Command Palette: **OmniLore: Seat screenshot** / **Seat implementer status**.

**Output path on your machine:**
`~/.local/share/omnilore/seat/captures/` (private files).

See also: [COTRINITY_IDE.md](./COTRINITY_IDE.md).

---

## Capture vs inspect (product meaning)

| You say | What happens |
|---------|----------------|
| “Take a screenshot” | **`capture` only** — private PNG + metadata (path, hash, backend) |
| “Inspect my screen” / “What’s wrong on my desktop?” | **`capture_inspect`** — same capture **plus** local VL diagnosis (summary, likely cause, next steps). Sensitive OCR **redacted** by default |
| “Fix it” | **Propose only** — inspect may *recommend* steps; OmniLore will **not** click/type/fix without a future owner-approved control path (L4 **HOLD**) |

Local:

```bash
~/omnilore/ops/bin/omnilore-desk inspect --prompt "Why is this stuck?"
# or: ~/omnilore/ops/bin/omnilore-seat-agent job capture_inspect
```

Chat (OmniLore mode): ask to **inspect** the screen, or tools `seat_request(job_kind="capture_inspect")` then `seat_job_status`.

---

## Use from Chat (https://chat.omnilore.ai)

1. Leave the **desktop machine on** with seat agent running (and logged into a desktop session).
2. Open Chat → **OmniLore** mode (not **Quick** — Quick has no fabric tools).
3. Prefer a **new chat** after tool updates.
4. Ask in plain language, for example:
   - “List my seat devices”
   - “Is my seat online?”
   - “Capture my desktop screenshot”
5. Under the hood, tools are: `seat_list` · `seat_status` · `seat_request` · `seat_job_status`.

| Chat message meaning | If it fails |
|----------------------|-------------|
| No device enrolled | Run setup on the desk (above) |
| Device offline | Start seat agent / wake the PC (`systemctl --user start omnilore-seat-agent`) |
| Capture denied | `~/omnilore/ops/bin/omnilore-desk grant-capture` |
| Agent asleep | `~/omnilore/ops/bin/omnilore-agent-wake` |

Remote Chat **cannot** choose arbitrary save folders (fixed private path only).

See also: [USER_GUIDE_CHAT_OMNILORE_AI.md](./USER_GUIDE_CHAT_OMNILORE_AI.md).

---

## Revoke access (lost laptop / stop implementer)

| Method | How |
|--------|-----|
| **Membership portal** (ops) | User → **Seat implementers** → **Revoke** |
| **Chat / tools** | `seat_revoke` with your device id |
| **On the machine** | `~/omnilore/ops/bin/omnilore-desk revoke-remote` |

After revoke, capture and remote jobs stop. To restore: re-enroll (`~/omnilore/ops/bin/omnilore-desk enroll --force`) and `~/omnilore/ops/bin/omnilore-seat-agent register-remote` again, or ops **Reactivate** then heartbeat.

---

## Security (plain language)

- Only **your** enrolled devices for **your** account.
- Screenshots stay under **private** paths (and optional server outbox under your user id).
- **Not** full remote desktop; no mouse/keyboard control from Chat.
- You can **revoke** anytime.

Operator/security detail: ops `SECURITY_SEAT_CHAT_CAPTURE_2026-08-11.md`.

---

## Troubleshooting

| Symptom | Try |
|---------|-----|
| “Device offline” in Chat | PC awake; `systemctl --user status omnilore-seat-agent`; `~/omnilore/ops/bin/omnilore-seat-agent register-remote` + heartbeat |
| Capture fails on Wayland | Install **grim**; ensure desktop session is logged in |
| CoTrinity has no seat tools | Extension ≥ **1.0.34**; reload window; seat agent running |
| Portal/GNOME screenshot glitches | Host package updates; grim fallback — residual is desktop OS, not Chat “down” |
| `omnilore-desk: command not found` | Use full path `~/omnilore/ops/bin/omnilore-desk …`, or re-run `bash ~/omnilore/ops/bin/install-seat-agent-user.sh` and ensure `~/.local/bin` is on `PATH` |

Check: `~/omnilore/ops/bin/omnilore-desk status` on the machine.

---

## Related member pages

| Page | Why |
|------|-----|
| [GETTING_STARTED.md](./GETTING_STARTED.md) | First steps |
| [FEATURES_USER.md](./FEATURES_USER.md) | Feature list |
| [WHAT_OMNILORE_CAN_CANNOT_DO.md](./WHAT_OMNILORE_CAN_CANNOT_DO.md) | Honesty |
| [KNOWN_LIMITATIONS.md](./KNOWN_LIMITATIONS.md) | Limits |
| [COTRINITY_IDE.md](./COTRINITY_IDE.md) | CoTrinity install honesty |

*End member desktop seat capture guide.*
