# Self-service _Available in Fleet Premium_ Fleet’s self-service lets end users update and install approved apps and run scripts from a curated list on the **Fleet Desktop > Self-service** page. This reduces overhead for IT and keeps teams productive. For macOS, Windows, and Linux hosts, self-service is accessible via the **Self-service** page in [Fleet Desktop](https://fleetdm.com/guides/fleet-desktop). > **Note:** The **Self-service** page is hidden by default to avoid confusion in organizations that use a different self-service tool. It appears after you add self-service software or scripts. For iOS/iPadOS hosts, [deploy a webclip](#deploy-self-service-on-ios-and-ipados) to give end users access. For Android hosts, all self-service software is available in the Managed Google Play store. [Learn more](https://fleetdm.com/guides/install-app-store-apps#google-play-android2). ## Add software 1. Select the fleet to which you want to add the software from the dropdown in the upper left corner of the page. 2. Select **Software** in the main navigation menu. 3. Select the **Add software** button in the upper right corner of the page. 4. Pick a [Fleet-maintained app](https://fleetdm.com/guides/fleet-maintained-apps), [app store app](https://fleetdm.com/guides/install-app-store-apps#add-the-app-to-fleet), or upload a [custom package](https://fleetdm.com/guides/deploy-software-packages). 5. Check **Self-service** to make it available for self-service as soon as it's added. > Use script-only packages (`.sh` and `.ps1` files) for self-service scripts like connecting to a VPN or configuring printers. Learn more in the [deploy software guide](https://fleetdm.com/guides/deploy-software-packages#script-only-packages). You can also add the software and later make it available in self-service: 1. Select the fleet to which you added the software from the dropdown in the upper left corner of the page. 2. Select **Software** in the main navigation menu. 3. Select the **Library** tab to view software available for install. Select the software you want to make available in self-service. 4. Select the pencil (edit) icon and check **Self-service** in the **Options** section. You can also assign categories and add a custom icon. Icons appear on the **My device > Self-service** page. Custom icons are only available for [custom packages](https://fleetdm.com/guides/deploy-software-packages) and [app store apps](https://fleetdm.com/guides/install-app-store-apps). 5. Select the **Save** button. If a software item isn't made available in self-service, end users will not see it in **Fleet Desktop > Self-service**. IT admins can still install, update, and uninstall the software from Fleet. > For [custom packages](https://fleetdm.com/guides/deploy-software-packages#add-multiple-packages-to-a-software-title), self-service is set per package. When a title has more than one self-service package and a host matches more than one, Fleet installs the package that was added first. ## Manage self-service categories _Available in Fleet Premium_ Self-service categories group software on each fleet so end users can browse and install software by category on the **My device > Self-service** page. When a new fleet is created, Fleet seeds it with the following default categories that you can rename or delete: **🌎 Browsers**, **👬 Communication**, **🧰 Developer tools**, **💻 Productivity**, **🔐 Security**, and **🛟 Support**. Category names support emojis (which become part of the name) and can be up to 255 characters long. To manage categories for a fleet: 1. Select the fleet from the dropdown in the upper left corner of the page. 2. Select **Software** in the main navigation menu. 3. Select the self-service categories icon in the upper right corner of the page. 4. Select **Add category** to create a new category, or use the pencil and trash icons in a row to rename or delete a category. To assign a software title to one or more categories, edit the software in **Software > Library**, enable **Self-service** in the **Options** section, and check the categories you want to assign. > Custom categories are managed per fleet. Renaming a category updates the label end users see; deleting a category removes the assignment from any software in it but does not affect the software itself. ## Install all in a category _Available in Fleet Premium_ End users can install every app in a category in one click from the **My device > Self-service** page: 1. Select a category from the dropdown above the software table. 2. Select **Install all** to install every app in the category. The count in the button adjusts based on what's already installed on the device. > **Install all** only appears when a specific category is selected. It's hidden on the unfiltered **All** view to prevent accidentally queuing installs for the entire software catalog. Fleet queues each install as a separate operation. End users can monitor progress in the **Status** column. Software is installed in alphabetical order. ## Deploy self-service on iOS and iPadOS Install this configuration profile to add the self-service web app to the home screen on iPhone and iPad. ### Create the self-service configuration profile On your Mac, open [iMazing Profile Editor](https://imazing.com/profile-editor). Create a new profile and add a **Web Clip** payload with these settings: #### Under the General tab - **Name:** Friendly name like "iOS self-service". - **Identifier and UUID:** You can use default values. #### Under the Web Clip tab - **Label:** Type "Self-service". This name will display as the app name on the home screen. - **URL:** `/device/$FLEET_VAR_HOST_UUID/self-service` - **Removable:** Uncheck it. - **Icon:** Upload a square icon that will be displayed as the app icon on the home screen. - **Full Screen:** Check this field. - **Target Application Bundle Identifier:** Select **Choose...**, type "safari" in the search box, and select **Safari - com.apple.mobilesafari**. #### Download configuration profile You can also download the configuration profile (`.mobileconfig`) and change values in code editor. If you want to change the icon, use iMazing Profile Editor and follow the steps above. Download example Web Clip profile from [our repository](https://github.com/fleetdm/fleet/tree/main/docs/solutions/ios-ipados/configuration-profiles/fleet-self-service.mobileconfig). ## IT admin experience How to view, update, install, or uninstall self-service software: 1. Go to **Hosts**. 2. Select a host to go to the Host details page. 3. Open the **Software > Library** tab and select **Self-service** in the dropdown. 4. To update, install, or uninstall, select **Update**, **Install**, or **Uninstall**. **Update** appears for [eligible updates](#how-updates-work), regardless of whether the app is set to self-service. Currently, for Apple App Store (VPP) apps, if Apple host is running an app version that can’t be updated because the latest App Store version requires a newer OS version, Fleet always shows “Update available.” The update then always fails, since the latest app version is incompatible with the host’s OS. To find the minimum OS version for the app, visit the [App Store](https://apps.apple.com/), find the app, scroll to the bottom, and look for **Compatibility** under **Information**. Tips: - Use the **Software > Library** table to quickly identify and action pending updates. - When a software install or uninstall fails, select **Failed** to see error details that can help with troubleshooting. - To automatically install software, you can use Fleet's policy automations. [Learn how](https://fleetdm.com/guides/automatic-software-install-in-fleet). ## End user experience How to update, install, or uninstall self-service software: **macOS and Windows:** Find the Fleet icon in your menu bar (macOS) or system tray (Windows) and select **Self-service.** This will open your default web browser to the list of self-service software available to update, install, or uninstall. **iOS and iPadOS:** Tap the **Self-service** icon on your home screen. This opens the self-service software catalog where you can install apps. If updates are available, end users can update one or all available self-service software. They can also view update progress and error details directly. ## API Fleet provides a REST API for managing software, including self-service software packages. Learn more about Fleet's [REST API](https://fleetdm.com/docs/rest-api/rest-api#software). ## GitOps To manage self-service software using GitOps, see the `software` key in the [GitOps reference documentation](https://fleetdm.com/docs/using-fleet/gitops#software). > **Note:** When managing Fleet via GitOps, software packages uploaded using the web UI persist only if they are also defined in GitOps with the `hash_sha256` field. ## Advanced ### How updates work When Fleet shows **Update** instead of **Install**: - The software is detected in Fleet's software inventory (software installed on the host). - Fleet has a newer version of the software. This version is newer than at least one version of the software in Fleet's software inventory. Currently, if a host has two versions of the software installed, with each version installed in different locations, Fleet can only upgrade one version. In this scenario, Fleet will still show **Update**. If this happens, the best practice is to run a custom script to uninstall the old version. Here's an example script that removes a copy of Google Chrome present in a macOS host's `Downloads/` folder: ```sh rm -r /Users/noahtalerman/Downloads/Google\ Chrome.app ``` For more technical detail and edge cases, refer to the [software self-service diagram](https://drive.google.com/file/d/1rOR0zRT5DKZfJVPq2WdNpdWkO0ARYbsj/view). ### Statuses When an install, uninstall, or update is triggered by an IT admin or end user in the Fleet UI or by an end user—Fleet continuously monitors (["polls"](https://en.wikipedia.org/wiki/Polling_(computer_science))) and surfaces a loading status (e.g., "Installing..."). - If the host is online, Fleet will poll automatically every 5 seconds to check for completion. When the install, uninstall, or update completes or fails, the status will update without the IT admin or end user having to reload the page. - If the host is offline, IT admins see a pending status. When pending, the action has not started on the host. IT admins can cancel pending actions on **Host details > Activity > Upcoming** tab.