# Instalación e inicio del cliente

Comprueba primero. Si está instalado, ábrelo; instala solo con `status=not_installed` y cuando se solicite. Errores, timeouts, JSON inválido y `detection_inconclusive` no prueban ausencia.

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

`client open` admite Windows, macOS y Linux. `already_running` evita duplicados. `launch_requested` solo confirma aceptación del SO, no ventana, sesión o API lista. Comprueba status/doctor. Un fallo de detección impide iniciar.

En macOS, status normal devuelve `integrityStatus=not_checked` sin codesign/Gatekeeper. Usa `client status --require-integrity --output-json` para validación estricta; puede devolver `installed_with_integrity_warning` y salida 2 sin significar ausencia. Un cliente antiguo no se sobrescribe; puede indicar `nextAction=update_in_client`.

Windows x64 solo reutiliza instaladores tras verificar PE, producto, Authenticode y editor. macOS descarga un DMG nuevo para la arquitectura; `installerVerified=false`, `signatureStatus=null`, `publisher=null` son esperados sin firma/checksum independiente. Verificar la imagen no verifica al editor. Linux no descarga/instala el cliente; puede abrir una instalación estándar existente.

`--interactive` solicita abrir el instalador; no acepta licencias, UAC/Gatekeeper, completa asistentes ni copia la App a Applications. No confirma instalación. Si no hay ventana, revisa `installerPath`; tras completar manualmente, ejecuta status.