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

# Web dashboard

> Use the Patch web dashboard to manage releases, metrics, and teams, and to check host health.

After [Install](/docs/install), the dashboard is served from your API domain (e.g. `https://updates.example.com/`). Sign in with GitHub, Bitbucket Cloud, or GitLab OAuth, the same identity model as the CLI's `login`.

On the [local evaluation stack](/docs/) (`cmpatch selfhost local-eval`), open [http://localhost:8080](http://localhost:8080) and sign in as `local-admin@example.com` (prefilled, one click). Same UI; auth is local-only.

Use the dashboard to browse teams, apps, and deployments; publish releases without memorizing CLI flags; and manage rollouts, promotion, and rollback from the UI.

:::info
The dashboard complements the CLI; it does not replace it. Some workflows (CI, scripting, `cmpatch doctor`) are CLI-only. Publishing can start in either place.
:::

## Navigation

After sign-in you land in your team's workspace:

| Area | What you do there |
| --- | --- |
| Apps | Create and rename apps, set each app's framework (React Native or Capacitor), and toggle code-signing requirements |
| Deployments | Staging and Production channels per app; copy deployment keys and SDK URLs |
| Deployment detail | Release history (including release notes), New release, deployment-level rollback |
| Release detail | Per-release metrics, status, and lifecycle actions |
| Metrics | Drill from apps → deployments → deployment metrics |
| Members | Invite teammates and manage roles |
| API tokens | Create and revoke `cm_pat_…` tokens for CI |
| Status | Confirm this install is running and up to date |

  <TabItem value="react-native" label="React Native">

On a deployment detail page, expand the SDK configuration panel to copy `CodemagicPatchDeploymentKey`, `CodemagicPatchApiUrl`, and `CodemagicPatchDownloadBaseUrl` together. Those match the values you embed in the app; see [Native setup](/docs/setup/native-setup).

  </TabItem>
  <TabItem value="capacitor" label="Capacitor">

Set the framework to **Capacitor** when you create a Capacitor app. The framework determines which commands and guides the dashboard shows, and `cmpatch-capacitor` can only look up Capacitor apps by name.

On a deployment detail page, expand the SDK configuration panel to copy the deployment key, API URL, and download base URL. These correspond to `deploymentKey`, `apiUrl`, and `downloadBaseUrl` in `capacitor.config.ts`; see [Native setup](/docs/setup/native-setup-capacitor).

  </TabItem>
</SdkTabs>

## Publishing a release

On a deployment detail page, click New release. You can choose how to publish:

  <TabItem value="react-native" label="React Native">

### Via CLI (command builder)

Builds a ready-to-run `cmpatch release-react` command from form fields:

- Platform (iOS / Android)
- Rollout percentage
- Target binary version
- Release notes
- Mandatory flag
- Code-signing private key path (when required by the app)

Copy the command and run it from your React Native project root or paste it into a CI job. The dashboard does not run the build for you; it generates the exact invocation with your server URL, app, and deployment filled in.

### Bundle upload

Upload a pre-built `.cmpatch` artifact (from `cmpatch bundle`) directly in the browser:

1. Select or drop the `.cmpatch` file
2. Set rollout, target binary version, release notes, and mandatory if needed
3. Submit; the server queues the release worker job

Use this when CI already produced the bundle, or you built offline and only need to publish.

  </TabItem>
  <TabItem value="capacitor" label="Capacitor">

**Via CLI (command builder)**: generates a `cmpatch-capacitor release create` command from these fields:

- Bundle path: the built `webDir`, or a ZIP of its contents (required)
- Target binary version: the exact native app version (required)
- Rollout percentage
- Release notes
- Mandatory flag
- Code-signing private key path (when required by the app)

The command includes your server URL, app, and deployment. Run it after your web build, or add it to a CI job. The dashboard does not build the app.

Bundle upload is not available for Capacitor apps. The dashboard accepts `.cmpatch` artifacts, which only the React Native CLI produces.

  </TabItem>
</SdkTabs>

## Managing existing releases

From release detail or the deployment release table, open actions on a release:

| Action | Purpose |
| --- | --- |
| Edit metadata | Change release notes, target binary version, mandatory flag |
| Rollout | Adjust rollout percentage on an active release |
| Promote | Copy a release to another deployment (e.g. Staging → Production) |
| Disable / Enable | Stop or resume serving a release |
| Rollback | Revert the deployment to the previous release |

Deployment-level rollback is also available from the deployment header when you need to revert without picking a specific row.

  <TabItem value="react-native" label="React Native">

These map to `cmpatch release patch`, `release promote`, `release enable`/`release disable`, and `release rollback`, see [Production control](/docs/using-patch/production-control).

  </TabItem>
  <TabItem value="capacitor" label="Capacitor">

These map to `cmpatch-capacitor release patch`, `release promote`, `release enable`/`release disable`, and `release rollback`, see [Production control](/docs/using-patch/production-control).

:::warning
Do not change the target binary version of a release published with `cmpatch-capacitor`. The server would treat both versions as the same native build and deliver releases for one version to the other. To target another version, publish the bundle again. See [Binary version compatibility](/docs/using-patch/binary-version-capacitor).
:::

  </TabItem>
</SdkTabs>

## Metrics

Each deployment page opens with adoption over time and in-range totals. Its **Metrics** button leads to the full breakdown for that deployment: update outcomes by failure reason and the active-version distribution. The command palette (⌘K / Ctrl+K) reaches the same pages by app or deployment name. The deployment detail and release pages also surface status (`uploaded`, `processing`, `published`, `failed`, `disabled`) and SDK-reported counters. For CLI equivalents, see [Analytics and metrics](/docs/using-patch/analytics).

## API tokens

Under API tokens, create personal access tokens for CI and automation. Tokens use the `cm_pat_…` prefix and are shown once at creation. See [Security and access](/docs/using-patch/security).

## Status

Open **Status** in the sidebar to confirm this Patch install is fully running and up to date. It shows database, storage, and disk health, and whether a newer server release is available.

## When to use the dashboard vs CLI

| Prefer the dashboard | Prefer the CLI |
| --- | --- |
| Copy a release command with the right flags | Run releases from CI/CD |
| Upload a `.cmpatch` without a terminal (React Native) | Script bulk or repeated operations |
| Promote, roll out, or roll back with confirmation dialogs | `inspect --wait`, JSON output, `cmpatch doctor` (React Native) |
| Browse release history and keys with the team | Air-gapped or SSH-only environments |

For the Staging → Production workflow, see [Releasing updates](/docs/using-patch/releasing-updates).
