# Collaboration & seats
URL: https://lsd.tools/docs/pkg-collab-seats
Updated: 2026-07-17

> In a collaboration session the host desktop runs the engine and guests join as pure collab UI. Seats are counted per live device. When connected devices exceed a paid package's licensed seats, the host freezes that package for the whole project and shows a warning banner that auto-clears once a device disconnects.

Licensing seats and multi-user collaboration meet at one rule: a paid package's **concurrent seats**
are enforced live against the devices connected to a session.

## Host and guests

A collaboration session has one **host** — a desktop app that runs the engine, holds the project,
and approves changes — and any number of **guests** who join as pure collaboration UI (the
remotedesktop app never runs an engine of its own). Because only the host runs the engine, only the
host enforces licensing.

## Seats are counted per device

A **seat** is one live human **device**:

- The **host** is seat one.
- Each connected **guest device** adds a seat.
- **Agents don't** consume seats, and two devices of the same user count as two seats.

The host tracks this count on every connect and disconnect.

## Over the limit → the host freezes the package

When the number of connected devices **exceeds** a paid package's licensed seats, the host **freezes
that package for the whole project**: its nodes serve their cached output and stop recomputing (the
same project-scoped freeze the [Package Manager](/docs/pkg-manager) switch applies), with the reason
recorded as seat-exceeded.

```
# → 4 devices connected, package licensed for 3 seats
# → host freezes the package (reason: seat-exceeded), banner appears
```

A **warning banner** shows on the host, and guests see a matching notice. The freeze respects any
package a user manually disabled — the host only freezes packages it froze for seats.

## Auto-clear on disconnect

The check runs on every connect **and** disconnect. As soon as a device leaves and the count drops
back **within** the license, the host **re-enables** the package (frozen placeholders swap back to
the live nodes) and the banner **clears automatically** — no manual step. Buying more seats raises
the limit; see [Plans & licensing](/docs/pkg-plans-licensing).

Seats are a fairness and licensing control, not a hard security boundary — the true anti-theft path
for code that must not leak is **server** delivery, covered in
[Plans & licensing](/docs/pkg-plans-licensing).

## Related

**Learn** — [Plans & licensing](/docs/pkg-plans-licensing) · [Buy & install](/docs/pkg-store-install) · [The Package Manager](/docs/pkg-manager)

**API** — [PackageManager](/docs/api-package-manager) · [Engine](/docs/api-engine)

**Examples** — [A complete package](/docs/ex-full-package)

## FAQ
### Who counts as a seat in a session?

Each distinct live human device counts as one seat — the host is seat one, and every joined guest device adds a seat. Agents don't consume seats. Two devices belonging to the same user count as two seats.

### What happens when we go over a package's seats?

The host freezes that package for the project — its nodes serve cached output and stop recomputing — and shows a warning banner. When a device disconnects and the count drops back within the license, the package re-enables and the banner clears automatically.
