> ## Documentation Index
> Fetch the complete documentation index at: https://flowdeck.studio/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Devices

> Deploy and test on Mac, Mac Catalyst, and physical devices

FlowDeck CLI supports deploying and running your apps on your Mac (native or Catalyst) and physical Apple devices.

## Managing Devices

### List All Devices

```bash theme={null}
flowdeck device list
```

**Example output:**

```
macOS
--------------------------------------------------
  💻 [✓] My Mac
     Build and run as native macOS app
  💻 [✓] My Mac Catalyst
     Build and run iOS app via Mac Catalyst

iOS Devices:
--------------------------------------------------
  🔌 [✓] Daniel's iPhone
     OS: iOS 17.2 | Type: iPhone
     UDID: 00008110-000123456789ABCD
     Connection: USB

Found 1 physical devices
```

**Legend:**

* 💻 = Mac target (virtual)
* 🔌 = USB connection
* 📡 = Network connection
* \[✓] = Available

### Filter by Platform

```bash theme={null}
flowdeck device list --platform iOS
```

### Show Only Available Devices

```bash theme={null}
flowdeck device list --available-only
```

### JSON Output

```bash theme={null}
flowdeck device list --json
```

## Mac Targets

### My Mac (Native macOS)

Build and run as a native macOS app:

```bash theme={null}
flowdeck run -D "My Mac"
flowdeck build -D "My Mac"
```

### My Mac Catalyst

Build and run an iOS app on Mac via Mac Catalyst:

```bash theme={null}
flowdeck run -D "My Mac Catalyst"
flowdeck build -D "My Mac Catalyst"
```

<Info>
  Mac Catalyst requires your iOS app to have `SUPPORTS_MACCATALYST = YES` in its build settings.
</Info>

<Note>
  In interactive mode, "My Mac Catalyst" only appears in the target list when your app's scheme supports Mac Catalyst. FlowDeck detects this automatically by checking the build settings.
</Note>

## Physical Devices

Physical devices (iPhones, iPads, Apple Watches) require a USB connection and proper provisioning.

### Install an App

```bash theme={null}
flowdeck device install <UDID> /path/to/MyApp.app
```

### Uninstall an App

```bash theme={null}
flowdeck device uninstall <UDID> com.example.MyApp
```

### Launch an App

```bash theme={null}
flowdeck device launch <UDID> com.example.MyApp
```

### Requirements

Before deploying to a physical device, ensure:

* Device is connected via USB or USB-C
* Device is trusted and unlocked
* Apple Developer account has correct provisioning profiles
* Device is registered in your Apple Developer account
* App's bundle identifier matches your provisioning profile
* Deployment target is compatible with device's iOS version

### Connection Types

FlowDeck automatically detects:

* **USB** - Direct wired connection (most reliable)
* **Network** - WiFi network debugging (iOS 14+)

<Note>
  Network debugging requires the device to be on the same WiFi network and previously paired via USB.
</Note>

### Debugging Method

FlowDeck automatically selects the best debugging method:

* **iOS 17+** - Uses `devicectl` for faster, more reliable debugging
* **iOS 16 and below** - Uses `ios-deploy` for compatibility

## Troubleshooting

### Device Not Appearing

1. Ensure the device is unlocked and trusted
2. Try unplugging and reconnecting the USB cable
3. Refresh the device list:

```bash theme={null}
flowdeck device list
```

### Code Signing Issues

Check your provisioning profiles and certificates in Xcode's Preferences > Accounts.

### Connection Problems

* Try a different USB cable
* Check that the device trusts your Mac
* For network debugging, ensure both are on the same WiFi network
