# Client Setup and Launch

Check installation first. If installed, open it; install only when `status=not_installed` and installation is intended. Detection errors, timeouts, invalid JSON and `detection_inconclusive` are not evidence of absence.

```bash
ml-cli client status --output-json
ml-cli client open --output-json
ml-cli client install --interactive --output-json
```

`client open` supports Windows, macOS and Linux. `already_running` avoids a second process. `launch_requested` means the OS accepted a request, not that a window appeared, login completed or Local API became ready. Recheck status/doctor separately. Detection failures stop before launch.

On macOS, normal status reports `integrityStatus=not_checked` without codesign/Gatekeeper checks. Use `client status --require-integrity --output-json` for strict checks; failure can return `installed_with_integrity_warning` and exit 2 without treating the App as missing. An installed older Client is not overwritten; installation may advise `nextAction=update_in_client`.

Windows x64 may reuse an installer only after PE/product/Authenticode/publisher checks. macOS downloads a fresh architecture-matched DMG; `installerVerified=false`, `signatureStatus=null`, `publisher=null` remain expected because no independently usable publisher signature/checksum is available. Disk-image checks are not publisher verification. Linux setup does not download/install a Client; `client open` can launch an existing standard installation.

`--interactive` asks the OS to open the prepared installer. It does not accept licenses, approve UAC/Gatekeeper, finish a wizard, copy a macOS App into Applications, or prove installation completed. If no installer window appears, inspect the returned `installerPath`; after manual completion, run status again.