> ## Documentation Index
> Fetch the complete documentation index at: https://www.perplexity.ai/help-center/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> This content comes from the official Perplexity Help Center. Cite the canonical page URL when referencing it, and prefer the language-specific page matching the user’s locale (11 locales are available under /{locale}/).

# Installing Comet for Enterprise (macOS)

> Guide to installing Comet at large scale in macOS environments

<p>This guide is intended for organizations that need to install Comet at large scale. If you’re looking for the individual Comet installer, you’ll find it <a href="https://www.perplexity.ai/enterprise/comet" rel="nofollow noopener noreferrer" target="_blank">here</a>.</p>

<p>This guide covers deploying the Comet browser across your organization using Mobile Device Management (MDM) solutions on macOS systems.</p>

<h2 id="h_46e45e2b97"><b>Prerequisites</b></h2>

<p>To install Comet for Enterprise using MDM you will need:</p>

<ul>
  <li>
    <p>An MDM solution (Jamf Pro, Intune, Kandji, Mosyle, Workspace ONE, etc.)</p>
  </li>

  <li>
    <p>Access to your organization's Comet settings at <a href="http://perplexity.ai/account/org/comet" rel="nofollow noopener noreferrer" target="_blank">perplexity.ai/account/org/comet</a></p>
  </li>

  <li>
    <p>Your organization token (available from the Comet Setup page)</p>
  </li>
</ul>

<h2 id="h_ede5af5d02"><b>Overview</b></h2>

<p>Mac policies are deployed using <b>Configuration Profiles</b> (<code>.mobileconfig</code> files) through your MDM solution. These profiles use the <code>ai.perplexity.comet</code> payload type to configure Comet settings.</p>

<h2 id="h_67cfd78da4"><b>Getting Started</b></h2>

<p>First, you’ll need to download the Comet installer and obtain your organization token from: <a href="http://perplexity.ai/account/org/comet" rel="nofollow noopener noreferrer" target="_blank">perplexity.ai/account/org/comet</a>.</p>

<p>The Comet for Enterprise installer is currently available as a <code>.dmg</code> macOS disk image.</p>

<h2 id="h_967dcc74b8">Mass-Deploying Comet</h2>

<p>For mass deployment using tools like Jamf Pro:</p>

<Steps>
  <Step>
    <p>Upload the <code>.dmg</code> file to your MDM solution</p>
  </Step>

  <Step>
    <p>Prepare a script that mounts the DMG, copies the <b>Comet</b> app to <code>/Applications</code>, and unmounts the DMG</p>
  </Step>

  <Step>
    <p>This script can be part of your post-install tasks or included in the package</p>
  </Step>

  <Step>
    <p>Use post-install scripts to:</p>

    <ul>
      <li>
        <p>Handle app copy</p>
      </li>

      <li>
        <p>Set permissions</p>
      </li>

      <li>
        <p>Make Comet the default browser if required</p>
      </li>

      <li>
        <p>Configure first run settings (via plist manipulation if needed)</p>
      </li>
    </ul>
  </Step>
</Steps>

<h3 id="h_7c0a4d8dc6">Jamf Pro Deployment</h3>

<p>Jamf Pro allows you to deploy and manage custom application settings in two different ways.</p>

<ul>
  <li>
    <p>Using just the <b>plist content</b> (without the full mobileconfig wrapper), where Jamf handles wrapping it into a proper configuration profile.</p>
  </li>

  <li>
    <p>Using custom JSON schema to provide a UI-based approach to managing policies (unique to Jamf)</p>
  </li>
</ul>

<Accordion title="Using plists">
  <h4 id="h_6b173baea9"><b>Step 1: Create Configuration Profile</b></h4>

  <Steps>
    <Step>
      <p>Go to <b>Computers</b> → <b>Configuration Profiles</b> → <b>New</b></p>
    </Step>

    <Step>
      <p>Enter a display name (e.g., "Comet Policies")</p>
    </Step>

    <Step>
      <p>Select <b>Application & Custom Settings</b> → <b>External Applications</b></p>
    </Step>

    <Step>
      <p>Select <b>Upload</b></p>
    </Step>
  </Steps>

  <h4 id="h_619781f0f6"><b>Step 2: Configure Preference Domain</b></h4>

  <Steps>
    <Step>
      <p><b>Preference Domain</b>: <code>ai.perplexity.comet</code></p>
    </Step>

    <Step>
      <p>Paste the plist content from the examples below</p>
    </Step>
  </Steps>

  <h4 id="h_daa6e04aca"><b>Step 3: Scope and Deploy</b></h4>

  <Steps>
    <Step>
      <p>Go to the <b>Scope</b> tab</p>
    </Step>

    <Step>
      <p>Add target computers or groups</p>
    </Step>

    <Step>
      <p>Click <b>Save</b></p>
    </Step>
  </Steps>

  <p>Before configuring browser policies, you must first enroll devices into your organization. This associates each Comet installation with your enterprise account for centralized management.</p>

  <p>Get your organization token from <a href="http://perplexity.ai/account/org/comet">perplexity.ai/account/org/comet</a> and deploy the following plist:</p>

  <pre>\<?xml version="1.0" encoding="UTF-8"?><br />\<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[http://www.apple.com/DTDs/PropertyList-1.0.dtd](http://www.apple.com/DTDs/PropertyList-1.0.dtd)"><br />\<plist version="1.0"><br />  \<dict><br />    \<key>CloudManagementEnrollmentToken\</key><br />    \<string>YOUR-ORG-TOKEN-HERE\</string><br />  \</dict><br />\</plist></pre>

  <p>Once devices are enrolled, you can deploy additional configuration profiles to enforce browser policies. See examples below.</p>

  <h2 id="h_d59f1d54df"><b>Example: Block Extensions</b></h2>

  <pre>\<?xml version="1.0" encoding="UTF-8"?><br />\<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[http://www.apple.com/DTDs/PropertyList-1.0.dtd](http://www.apple.com/DTDs/PropertyList-1.0.dtd)"><br />\<plist version="1.0"><br />  \<dict><br />    \<key>ExtensionInstallBlocklist\</key><br />    \<array><br />      \<!-- Metamask --><br />      \<string>nkbihfbeogaeaoehlefnkodbefgpgknn\</string><br />    \</array><br />  \</dict><br />\</plist></pre>

  <h2 id="h_53341e35af"><b>Example: Block URLs</b></h2>

  <pre>\<?xml version="1.0" encoding="UTF-8"?><br />\<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[http://www.apple.com/DTDs/PropertyList-1.0.dtd](http://www.apple.com/DTDs/PropertyList-1.0.dtd)"><br />\<plist version="1.0"><br />  \<dict><br />    \<key>URLBlocklist\</key><br />    \<array><br />      \<string>chatgpt.com\</string><br />      \<string>\*.competitor.com\</string><br />    \</array><br />  \</dict><br />\</plist></pre>

  <h2 id="h_934cd24caa"><b>Example: Multiple Policies</b></h2>

  <p>Combine multiple policies in a single plist:</p>

  <pre>\<?xml version="1.0" encoding="UTF-8"?><br />\<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[http://www.apple.com/DTDs/PropertyList-1.0.dtd](http://www.apple.com/DTDs/PropertyList-1.0.dtd)"><br />\<plist version="1.0"><br />  \<dict><br />    \<key>ExtensionInstallBlocklist\</key><br />    \<array><br />      \<string>nkbihfbeogaeaoehlefnkodbefgpgknn\</string><br />    \</array><br />    \<key>URLBlocklist\</key><br />    \<array><br />      \<string>chatgpt.com\</string><br />    \</array><br />  \</dict><br />\</plist></pre>
</Accordion>

<Accordion title="Using Jamf Custom Schema for a UI-based approach">
  <h3 id="h_7d3d009bac"><b>Step 1: Create Configuration Profile</b></h3>

  <Steps>
    <Step>
      <p>Go to <b>Computers</b> → <b>Configuration Profiles</b> → <b>New</b></p>
    </Step>

    <Step>
      <p>Enter a display name (e.g., "Comet Policies")</p>
    </Step>

    <Step>
      <p>Select <b>Application & Custom Settings</b> → <b>External Applications</b></p>
    </Step>

    <Step>
      <p>Select <b>Add</b></p>
    </Step>
  </Steps>

  <h3 id="h_b602a3ee0d"><b>Step 2: Configure Preference Domain</b></h3>

  <Steps>
    <Step>
      <p><b>Preference Domain</b>: <code>ai.perplexity.comet</code></p>
    </Step>

    <Step>
      <p>Select <b>Add Schema</b></p>
    </Step>

    <Step>
      <p>Paste JSON Schema to populate configurable properties from the examples below</p>
    </Step>
  </Steps>

  <h3 id="h_d109f4abdc"><b>Step 3: Scope and Deploy</b></h3>

  <Steps>
    <Step>
      <p>Go to the <b>Scope</b> tab</p>
    </Step>

    <Step>
      <p>Add target computers or groups</p>
    </Step>

    <Step>
      <p>Click <b>Save</b></p>
    </Step>
  </Steps>

  <p><b>Example: Homepage and startup settings</b></p>

  <pre>\{<br />  "title": "Perplexity Comet – Homepage and Startup",<br />  "description": "Control homepage, startup behavior, and New Tab configuration.",<br />  "properties": \{<br />    "HomepageLocation": \{<br />      "title": "Homepage Location",<br />      "description": "URL of the homepage that is loaded when the Home button is pressed.",<br />      "type": "string",<br />      "property\_order": 10<br />    },<br />    "HomepageIsNewTabPage": \{<br />      "title": "Homepage Is New Tab Page",<br />      "description": "If true, the homepage is the New Tab page instead of a custom URL.",<br />      "type": "boolean",<br />      "property\_order": 20<br />    },<br />    "ShowHomeButton": \{<br />      "title": "Show Home Button",<br />      "description": "Shows or hides the Home button in the toolbar.",<br />      "type": "boolean",<br />      "property\_order": 30<br />    },<br />    "RestoreOnStartup": \{<br />      "title": "Restore On Startup",<br />      "description": "Configures what pages are shown at startup.",<br />      "type": "integer",<br />      "enum": \[0, 1, 4],<br />      "options": \{<br />        "enum\_titles": \[<br />          "0 – Open the New Tab page",<br />          "1 – Restore the last session",<br />          "4 – Open a list of URLs"<br />        ]<br />      },<br />      "property\_order": 40<br />    },<br />    "RestoreOnStartupURLs": \{<br />      "title": "Restore On Startup URLs",<br />      "description": "List of URLs to open on startup when RestoreOnStartup is set to 4.",<br />      "type": "array",<br />      "items": \{<br />        "type": "string"<br />      },<br />      "property\_order": 50<br />    },<br />    "NewTabPageLocation": \{<br />      "title": "New Tab Page Location",<br />      "description": "Custom URL to use for the New Tab page instead of the default.",<br />      "type": "string",<br />      "property\_order": 60<br />    },<br />    "ManagedBookmarks": \{<br />      "title": "Managed Bookmarks",<br />      "description": "JSON-like structure defining a set of mandatory bookmarks managed by policy.",<br />      "type": "array",<br />      "items": \{<br />        "type": "string"<br />      },<br />      "property\_order": 70<br />    },<br />    "BookmarkBarEnabled": \{<br />      "title": "Bookmark Bar Enabled",<br />      "description": "Shows or hides the bookmarks bar by default.",<br />      "type": "boolean",<br />      "property\_order": 80<br />    },<br />    "DefaultBrowserSettingEnabled": \{<br />      "title": "Default Browser Setting Enabled",<br />      "description": "Controls whether the browser can be set as the system default.",<br />      "type": "boolean",<br />      "property\_order": 90<br />    },<br />    "BlockExternalExtensions": \{<br />      "title": "Block External Extensions",<br />      "description": "Blocks extensions installed outside the browser when set to true.",<br />      "type": "boolean",<br />      "property\_order": 100<br />    }<br />  },<br />  "required": \[]<br />}<br /></pre>

  <p><b>Example: Force install extensions - e.g., 1Password and Okta Verify</b></p>

  <pre>\{<br />  "title": "Perplexity Comet – 1Password and Okta Extensions",<br />  "description": "Toggle force-install for 1Password and Okta extensions in Comet.",<br />  "properties": \{<br />    "ForceInstall\_1Password": \{<br />      "title": "Force install 1Password",<br />      "description": "If enabled, Comet force-installs the 1Password browser extension.",<br />      "type": "boolean",<br />      "default": false,<br />      "property\_order": 10<br />    },<br />    "ForceInstall\_OktaPlugin": \{<br />      "title": "Force install Okta browser plugin",<br />      "description": "If enabled, Comet force-installs the Okta browser plugin defined below.",<br />      "type": "boolean",<br />      "default": false,<br />      "property\_order": 20<br />    },<br />    "OktaPluginExtensionId": \{<br />      "title": "Okta browser plugin extension ID",<br />      "description": "Chrome Web Store extension ID for your Okta browser plugin (for example, from the Web Store URL).",<br />      "type": "string",<br />      "default": "",<br />      "property\_order": 30<br />    },<br />    "ExtensionInstallForcelist": \{<br />      "title": "Additional force-installed extensions (advanced)",<br />      "description": "Optional: extra entries in the form extension\_id;\<[https://clients2.google.com/service/update2/crx](https://clients2.google.com/service/update2/crx)>. Rows here are in addition to 1Password/Okta switches above.",<br />      "type": "array",<br />      "items": \{<br />        "type": "string",<br />        "title": "Extension ID and update URL",<br />        "default": "extension\_id;\<[https://clients2.google.com/service/update2/crx](https://clients2.google.com/service/update2/crx)>"<br />      },<br />      "property\_order": 40<br />    },<br />    "\_info": \{<br />      "title": "Info",<br />      "description": "Jamf will write a prefs key named ExtensionInstallForcelist. Enable the switches above to add 1Password and/or Okta automatically; use the array only for extra extensions.",<br />      "type": "string",<br />      "options": \{<br />        "inputAttributes": \{<br />          "readonly": true<br />        }<br />      },<br />      "property\_order": 50<br />    }<br />  },<br />  "required": \[]<br />}<br /></pre>
</Accordion>

<h3 id="h_c5b56d89bb">Generic MDM Deployment</h3>

<p>For MDM solutions that require a complete <code>.mobileconfig</code> file, such as Kandji, Mosyle, Fleet, SimpleMDM, etc., use the full configuration profile format below.</p>

<h4 id="h_a5ebe51b6b"><b>Deployment Steps:</b></h4>

<Steps>
  <Step>
    <p>Copy the example template and customize for your needs</p>
  </Step>

  <Step>
    <p>Generate unique UUIDs for <code>PayloadUUID</code> fields (use <code>uuidgen</code> in Terminal)</p>
  </Step>

  <Step>
    <p>Save as a <code>.mobileconfig</code> file</p>
  </Step>

  <Step>
    <p>Upload to your MDM as a custom configuration profile</p>
  </Step>

  <Step>
    <p>Assign to target devices or groups</p>
  </Step>
</Steps>

<p>Before configuring browser policies, you must first enroll devices into your organization. This associates each Comet installation with your enterprise account for centralized management.</p>

<p>Deploy a configuration profile containing your <code>CloudManagementEnrollmentToken</code>. Get your organization token from <a href="http://perplexity.ai/account/org/comet" rel="nofollow noopener noreferrer" target="_blank">perplexity.ai/account/org/comet</a>.</p>

<pre>\<?xml version="1.0" encoding="UTF-8"?><br />\<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[http://www.apple.com/DTDs/PropertyList-1.0.dtd](http://www.apple.com/DTDs/PropertyList-1.0.dtd)"><br />\<plist version="1.0"><br />  \<dict><br />    \<key>PayloadContent\</key><br />    \<array><br />      \<dict><br />        \<key>PayloadType\</key><br />        \<string>ai.perplexity.comet\</string><br />        \<key>PayloadIdentifier\</key><br />        \<string>ai.perplexity.comet\</string><br />        \<key>PayloadUUID\</key><br />        \<string>A1B2C3D4-E5F6-7890-ABCD-EF1234567890\</string><br />        \<key>PayloadVersion\</key><br />        \<integer>1\</integer><br />        \<key>CloudManagementEnrollmentToken\</key><br />        \<string>YOUR-ORG-TOKEN-HERE\</string><br />      \</dict><br />    \</array><br />    \<key>PayloadDisplayName\</key><br />    \<string>Comet - Organization Enrollment\</string><br />    \<key>PayloadIdentifier\</key><br />    \<string>ai.perplexity.comet.org-enrollment\</string><br />    \<key>PayloadType\</key><br />    \<string>Configuration\</string><br />    \<key>PayloadUUID\</key><br />    \<string>B2C3D4E5-F6A7-8901-BCDE-F23456789012\</string><br />    \<key>PayloadVersion\</key><br />    \<integer>1\</integer><br />  \</dict><br />\</plist><br /></pre>

<p>Once devices are enrolled, you can deploy additional configuration profiles to enforce browser policies. See examples below.</p>

<h4 id="h_dea9a59e90"><b>Example: Block Extensions</b></h4>

<pre>\<?xml version="1.0" encoding="UTF-8"?><br />\<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[http://www.apple.com/DTDs/PropertyList-1.0.dtd](http://www.apple.com/DTDs/PropertyList-1.0.dtd)"><br />\<plist version="1.0"><br />  \<dict><br />    \<key>PayloadContent\</key><br />    \<array><br />      \<dict><br />        \<key>PayloadDisplayName\</key><br />        \<string>Comet Extension Blocklist Policy\</string><br />        \<key>PayloadIdentifier\</key><br />        \<string>ai.perplexity.comet\</string><br />        \<key>PayloadType\</key><br />        \<string>ai.perplexity.comet\</string><br />        \<key>PayloadUUID\</key><br />        \<string>12345678-1234-1234-1234-123456789012\</string><br />        \<key>PayloadVersion\</key><br />        \<integer>1\</integer><br />        \<key>ExtensionInstallBlocklist\</key><br />        \<array><br />          \<!-- Metamask --><br />          \<string>nkbihfbeogaeaoehlefnkodbefgpgknn\</string><br />        \</array><br />      \</dict><br />    \</array><br />    \<key>PayloadDisplayName\</key><br />    \<string>Comet - Extension Blocklist\</string><br />    \<key>PayloadIdentifier\</key><br />    \<string>ai.perplexity.comet.extension.blocklist\</string><br />    \<key>PayloadType\</key><br />    \<string>Configuration\</string><br />    \<key>PayloadUUID\</key><br />    \<string>87654321-4321-4321-4321-210987654321\</string><br />    \<key>PayloadVersion\</key><br />    \<integer>1\</integer><br />  \</dict><br />\</plist><br /></pre>

<h4 id="h_6c98905c7c"><b>Example: Block URLs</b></h4>

<pre>\<?xml version="1.0" encoding="UTF-8"?><br />\<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[http://www.apple.com/DTDs/PropertyList-1.0.dtd](http://www.apple.com/DTDs/PropertyList-1.0.dtd)"><br />\<plist version="1.0"><br />  \<dict><br />    \<key>PayloadContent\</key><br />    \<array><br />      \<dict><br />        \<key>PayloadDisplayName\</key><br />        \<string>Comet URL Blocklist Policy\</string><br />        \<key>PayloadIdentifier\</key><br />        \<string>ai.perplexity.comet\</string><br />        \<key>PayloadType\</key><br />        \<string>ai.perplexity.comet\</string><br />        \<key>PayloadUUID\</key><br />        \<string>12345678-1234-1234-1234-123456789012\</string><br />        \<key>PayloadVersion\</key><br />        \<integer>1\</integer><br />        \<key>URLBlocklist\</key><br />        \<array><br />          \<string>chatgpt.com\</string><br />          \<string>\*.competitor.com\</string><br />        \</array><br />      \</dict><br />    \</array><br />    \<key>PayloadDisplayName\</key><br />    \<string>Comet - URL Blocklist\</string><br />    \<key>PayloadIdentifier\</key><br />    \<string>ai.perplexity.comet.url.blocklist\</string><br />    \<key>PayloadType\</key><br />    \<string>Configuration\</string><br />    \<key>PayloadUUID\</key><br />    \<string>87654321-4321-4321-4321-210987654321\</string><br />    \<key>PayloadVersion\</key><br />    \<integer>1\</integer><br />  \</dict><br />\</plist><br /></pre>
