> ## Documentation Index
> Fetch the complete documentation index at: https://eurusys-6c0957fa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Install services on macOS

> Install the MBKYC desktop services on macOS from the signed .pkg installers, and manage them with launchctl.

On macOS the [desktop services](/distribution/services-overview) ship as signed **`.pkg`** installers in the `mbkyc-raw` Nexus repository. Install only the services for the hardware you use. These are required for the **Swift** SDK (and the web SDK) to see card readers and fingerprint sensors.

<Info>
  macOS includes a class-compliant CCID driver, so any PC/SC-compliant smart card reader works with `mbkyc-pcsc-service` — no per-reader driver needed. For fingerprint, install the package that matches your sensor's vendor.
</Info>

## Which packages do I need?

| You need…                                 | Install                                                     |
| ----------------------------------------- | ----------------------------------------------------------- |
| Read Emirates ID from a card reader       | `mbkyc-pcsc-service`                                        |
| Fingerprint with IDEMIA (Morpho) MSO 1350 | `mbkyc-morpho-service`                                      |
| Fingerprint with Suprema BioMini          | `mbkyc-suprema-service`                                     |
| Fingerprint with NEXUS / Zhiang           | `mbkyc-zhiang-service`                                      |
| Browser (web SDK)                         | `mbkyc-web-host` (plus the card/fingerprint services above) |

Manual-entry verification (no card/fingerprint) needs **no** services.

## Download & install

Download the `.pkg` for each service you need from Nexus (same credentials as your other repos — see [Access & credentials](/distribution/access-credentials)), then install it with `installer`.

<Steps>
  <Step title="Download the package(s)">
    ```bash theme={null}
    export NEXUS_USER="your-username"
    export NEXUS_PASSWORD="your-password"

    # Card reader service (mbkyc-pcsc-service, currently 0.4.0)
    curl -fsSL -u "$NEXUS_USER:$NEXUS_PASSWORD" \
      https://repo.client.ae/repository/mbkyc-raw/mbkyc/mbkyc-pcsc-service/0.4.0/macos/pkg/MBKYCPcscService-0.4.0.pkg \
      -o MBKYCPcscService.pkg

    # Fingerprint service — pick the one matching your sensor, e.g. Suprema (currently 0.1.0):
    curl -fsSL -u "$NEXUS_USER:$NEXUS_PASSWORD" \
      https://repo.client.ae/repository/mbkyc-raw/mbkyc/mbkyc-suprema-service/0.1.0/macos/pkg/MBKYCSupremaService-0.1.0.pkg \
      -o MBKYCSupremaService.pkg
    ```
  </Step>

  <Step title="Install">
    ```bash theme={null}
    sudo installer -pkg MBKYCPcscService.pkg     -target /
    sudo installer -pkg MBKYCSupremaService.pkg  -target /
    ```

    Each installer places the service binary under `/usr/local/bin/`, registers a LaunchDaemon in `/Library/LaunchDaemons/`, and starts it.
  </Step>

  <Step title="Verify it's running">
    ```bash theme={null}
    pgrep -lf mbkyc-pcsc-service
    pgrep -lf mbkyc-suprema-service
    ```

    Each command should print a running process. The SDK can now discover the reader via `listSmartcardReaders()` / `listFingerprintReaders()`.
  </Step>
</Steps>

## Service management

The services run as LaunchDaemons (system-wide, restart on crash and at boot). Each has a label of the form `ae.gov.icp.mbkyc.<transport>.<vendor>.<kind>`:

| Service                 | LaunchDaemon label                         |
| ----------------------- | ------------------------------------------ |
| `mbkyc-pcsc-service`    | `ae.gov.icp.mbkyc.pcsc.generic.smartcard`  |
| `mbkyc-morpho-service`  | `ae.gov.icp.mbkyc.usb.morpho.fingerprint`  |
| `mbkyc-suprema-service` | `ae.gov.icp.mbkyc.usb.suprema.fingerprint` |
| `mbkyc-zhiang-service`  | `ae.gov.icp.mbkyc.usb.zhiang.fingerprint`  |

```bash theme={null}
LABEL=ae.gov.icp.mbkyc.pcsc.generic.smartcard

# Status (state + pid)
sudo launchctl print system/$LABEL | grep -E "state|pid"

# Restart
sudo launchctl kickstart -k system/$LABEL

# Stop until next boot / start again
sudo launchctl bootout    system/$LABEL
sudo launchctl bootstrap  system /Library/LaunchDaemons/$LABEL.plist
```

<Info>
  **App Sandbox.** If your macOS app uses the App Sandbox, enable **Outgoing Connections (Client)** so the SDK can reach the Validation Gateway, and the **USB** capability so it can use readers — or disable the sandbox for an internal/kiosk build.
</Info>

## Uninstall

```bash theme={null}
sudo launchctl bootout system/ae.gov.icp.mbkyc.usb.suprema.fingerprint
sudo rm -f /Library/LaunchDaemons/ae.gov.icp.mbkyc.usb.suprema.fingerprint.plist \
           /usr/local/bin/mbkyc-suprema-service
sudo pkgutil --forget ae.gov.icp.mbkyc.suprema
```

<Card title="Now build your integration" icon="swift" href="/sdks/swift">
  Head to the Swift (macOS) SDK guide.
</Card>
