> For the complete documentation index, see [llms.txt](https://docs.we360.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.we360.ai/deployment-and-it-ops/deploy/agent-deployment-hub/mass-deployment/macos-mdm/jamf-pro.md).

# Jamf Pro

Deploy the We360.ai MyZen macOS agent (PKG, PPPC, and background items) with Jamf Pro.

**PKG Upload & Deployment**

1. Log in to **Jamf Pro** (`your-instance.jamfcloud.com`).
2. Navigate to **Settings > Computer Management > Packages**.
3. Click **New** to create a new package entry.
4. Upload the MyZen `.pkg` file.
5. Set a **Display Name** (e.g., "MyZenV2 Stealth").
6. Click **Save**.
7. Navigate to **Computers > Policies** and click **New**.
8. Configure the **General** payload:
   * **Display Name:** e.g., "Deploy MyZenV2"
   * **Trigger:** Recurring Check-in (or Enrollment Complete for new devices)
   * **Execution Frequency:** Once per computer
9. Click the **Packages** payload and click **Configure**.
10. Select the uploaded PKG and set the **Action** to **Install**.
11. Click the **Scope** tab and add target computers or smart/static groups.
12. Click **Save**.

**PPPC Profile Deployment**

**Option A — Built-in PPPC builder:**

1. Navigate to **Computers > Configuration Profiles**.
2. Click **New**.
3. Set a **Name** (e.g., "ZS App Permissions").
4. In the left sidebar, click **Privacy Preferences Policy Control**.
5. Click **Add** (+).
6. Fill in the fields:
   * **Identifier:** `ai.zs.zs`
   * **Identifier Type:** Bundle ID
   * **Code Requirement:** paste from `codesign -dr -` output
   * **Static Code:** No
7. Under **App or Service**, click **Add**:
   * Select **Accessibility** and set to **Allow**.
8. Repeat for additional permissions (AppleEvents for each browser).
9. Scope to target computers and **Save**.

**Option B — Upload pre-built profile:**

1. Navigate to **Computers > Configuration Profiles > Upload**.
2. Upload `zs-pppc.mobileconfig`.
3. Scope to target computers and **Save**.

**Background Items**

1. Navigate to **Computers > Configuration Profiles > New**.
2. Upload `zs-background-items.mobileconfig` (or use **Managed Background Items** payload in Jamf Pro 10.44+).
3. Scope and **Save**.

**Verification**

1. Navigate to **Computers > Search Inventory** and select a target device.
2. Go to the **Configuration Profiles** tab — confirm both PPPC and Background Items profiles are installed.
3. Go to the **Applications** tab — confirm MyZenV2 or zs.app is listed.
4. Ask the end user to **logout/login** or **restart**.
5. Verify the endpoint appears online in the **We360.ai dashboard** at `portal.we360.ai`.

{% hint style="info" %}
Jamf Pro preserves the original PKG filename during distribution. Stealth deployments work without issues.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.we360.ai/deployment-and-it-ops/deploy/agent-deployment-hub/mass-deployment/macos-mdm/jamf-pro.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
