# ipa-hub install

Pull, sign, install, and open an IPA.

## Usage

```shell
ipa-hub install [SOURCE] [options]
```

## Arguments

| Argument | Description |
| --- | --- |
| `SOURCE` | IPA path, URL, or repository. Alternatively use `--source`, `--repo`, or `--url`. Optional. |

## Options

| Option | Description |
| --- | --- |
| `--data-dir PATH` | Directory for downloads, app records, and server state. Defaults to `~/.ipa-hub`; the `IPA_HUB_HOME` environment variable sets an alternative default. `(string)` |
| `--json` | Print results as JSON `(boolean)` |
| `-h`, `--help` | Show help for this command `(boolean)` |
| `-v`, `--version` | Show the installed version `(boolean)` |
| `--setup-manager` | Set up App Manager on the selected device. Global installs also install/start the service. `(boolean)` Conflicts with: `--bypass-server`, `--simulators-only`. |
| `--accept` | Skip the unsigned-app trust confirmation `(boolean)` |
| `-S SOURCE`, `--source SOURCE` | IPA file path, HTTP(S) URL, `gh:owner/repo[:tag]`, or `gitlab:group/repo[:tag]` `(string)` Conflicts with: `--repo`, `--url`. |
| `-r SOURCE`, `--repo SOURCE` | Repository source; `owner/repo` assumes GitHub `(string)` Conflicts with: `--url`. |
| `--url URL` | Direct source URL `(string)` |
| `--release RELEASE` | Release tag, `latest` (default), or `prerelease` (`pre-release` also works) `(string)` |
| `-f TEXT`, `--filter TEXT` | Match IPA names ignoring case: `tv`, `advanced*tv`, or regex starting with `^` or ending with `$` (for example `^UTM$`). Tries names without `.ipa` first. Quote filters in the shell. `(string)` |
| `--asset NAME` | Exact asset name or URL `(string)` |
| `--token TOKEN`, `--access-token TOKEN` | Private per-install token for GitHub, GitLab, or HTTPS downloads; retained for updates `(string)` |
| `-d ID`, `--device ID` | CoreDevice ID, UDID, or exact device name `(string)` |
| `-n NAME`, `--device-name NAME` | Full, case-sensitive device name. Duplicate matches prompt for a selection. `(string)` |
| `-s`, `--include-simulators` | Include available simulators alongside physical devices `(boolean)` |
| `--only-simulators`, `--simulators-only` | Use only simulators (implies `--include-simulators`) `(boolean)` |
| `-t TYPE`, `--type TYPE`, `--device-type TYPE` | Consider only devices of these types. Repeated values include any selected type. `(string[])` May be repeated. Choices: `iphone`, `ipad`, `appletv`, `visionos`, `applewatch`. |
| `--team ID` | Restrict signing to this team `(string)` |
| `--profile PATH` | Use an explicit provisioning profile `(string)` |
| `--identity SHA1` | Use this Keychain signing identity `(string)` |
| `--select-profile` | Always prompt instead of preferring a wildcard profile `(boolean)` |
| `--all-profiles` | Include compatible app-specific and prefix-scoped provisioning profiles in signing choices `(boolean)` |
| `--strip-extensions` | Explicitly remove app extensions before signing `(boolean)` |
| `--open` | Open the installed app instead of the App Manager when setting it up `(boolean)` Conflicts with: `--no-open`. |
| `--no-open` | Do not open the installed app; `--setup-manager` still opens the manager `(boolean)` |
| `--bypass-server` | Install independently of a running server `(boolean)` |

## Examples

Install UTM and set up App Manager on the same iPhone or iPad.

```shell
ipa-hub install --setup-manager gh:utmapp/UTM
```

```shell
ipa-hub install --device-type=appletv --filter=tv gh:owner/repo
```

Match filenames containing advanced followed by tv, with any text between.

```shell
ipa-hub install --filter='advanced*tv' gh:owner/repo
```

```shell
ipa-hub install --device-type=iphone --device-type=ipad --team=TEAM_ID ./App.ipa
```

```shell
ipa-hub install --device-name='Living Room' ./App.ipa
```

```shell
ipa-hub install --simulators-only --device-name='iPhone 15 Pro Max' ./Simulator.ipa
```

```shell
ipa-hub install --release=pre-release gitlab:group/project
```

