# Clients & downloads

> Install QuickDesk on desktop and mobile, make your first connection by device id, and set up unattended access.

QuickDesk ships as a **single native app** that is both the controller and the
controlled box. The same binary can control another machine or accept control.
There is no separate "server" app to install on the endpoint.

## Supported platforms

| Platform | Package |
| --- | --- |
| **Windows** | Installer / portable `.exe` |
| **macOS** | `.dmg` (Apple silicon + Intel) |
| **Linux** | `.deb`, `.rpm`, `.AppImage` |
| **Android** | `.apk` |
| **iOS** | App Store build |

> **NOTE:**
> Desktop and mobile clients interoperate. You can control a Linux box from an
> Android phone, or a Windows box from a Mac. Roles are set per session, not per
> platform.

## Make your first connection

  1. **Install on both machines**
Install QuickDesk on the machine that you want to control (the **box**).
    Install QuickDesk also on the machine that you control from (the
    **controller**).
  2. **Read the box's device id**
Open QuickDesk on the box. It shows a numeric **device id** and a
    **one-time password** that rotates each session. The id is stable. The
    password is new for each connection, unless you set a permanent password
    for unattended access.
  3. **Connect from the controller**
On the controller, enter the box's device id. Select connect. The box's
    id is registered with the relay as a slug. The controller thus reaches
    the box by id, with no IP address and no port.
  4. **Authorize**
Enter the one-time password. Or, if the box is set to prompt, accept the
    request at the far end. The two clients complete their end-to-end
    handshake. The desktop appears.

## Point clients at your relay & account server

Each client ships with a default relay and account server. To use your own
(see [Self-host the account server](/modalities/quickdesk/self-host)), set them in
the client's network settings:

```text
# Network settings
Relay server    = relay.firstbyte.fast:4443
Account server  = https://admin.quickdesk.sh
```

- **Relay server** — the QUIC edge that splices sessions. When you point this
  at your own edge, your desktop traffic moves onto that edge.
- **Account server** — the HTTPS control plane for login, address book, audit,
  and recording. When you point this at your own host, your accounts and logs
  move onto that host.

> **NOTE:**
> You can preset both settings in a managed client fleet. The fleet then points
> at your infrastructure by default. The end user configures nothing.

## Unattended access

Use unattended access for machines with no person at them: kiosks, servers,
and lab boxes.

  1. **Set a permanent password**
In the box's security settings, set a **permanent access password** (or
    enrol the box against your account server). The permanent password
    replaces the rotating one-time code. A controller can then connect
    without a person who accepts the prompt.
  2. **Enable start-on-boot**
Turn on **launch on startup**. The box then re-registers its device id
    with the relay on every boot and stays reachable.
  3. **Scope what's allowed**
Restrict the session per your policy: view-only, no file transfer, or no
    clipboard. The box client enforces these permissions, not the relay.

> **WARNING:**
> A permanent password makes a box reachable by each person who holds the
> password. Keep unattended boxes behind your account server's device gate.
> Rotate permanent passwords on a schedule.

## Related

- [How it works](/modalities/quickdesk/how-it-works) — what occurs when you select connect
- [Self-host the account server](/modalities/quickdesk/self-host) — run login and audit yourself
- [Security & audit](/modalities/quickdesk/security) — the permission and encryption model
