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

# Jamf

> Deploy Unbound to Macs with a Jamf script and policy

## Overview

Deploy Unbound with a Jamf **Script** and a **Policy** set to run daily. Choose one installer.

|                       | Binary runtime                        | Python installer |
| --------------------- | ------------------------------------- | ---------------- |
| Python on each device | Not needed                            | Required         |
| macOS version         | 13 or later                           | Any              |
| Package integrity     | SHA-256 pinned, Developer ID verified | —                |

<CardGroup cols={2}>
  <Card title="Binary runtime" icon="box" href="/mdm-integrations/jamf/binary">
    Recommended for Mac fleets.
  </Card>

  <Card title="Python installer" icon="python" href="/mdm-integrations/jamf/python">
    Use on Macs older than macOS 13.
  </Card>
</CardGroup>

***

## Get your API key

Open [Configure](https://gateway.getunbound.ai/configure) and copy the key from the **API Access** panel. Both installers take it as Jamf **Parameter 4**.

<Note>
  Jamf reserves `$1` to `$3`. Custom parameters start at Parameter 4.
</Note>

***

## Verify

<CardGroup cols={3}>
  <Card title="Jamf" icon="list-check">
    The policy shows **Completed** in **Policies → Logs**.
  </Card>

  <Card title="Device" icon="desktop">
    `/Library/Application Support/Unbound/last-success.txt` updates daily.
  </Card>

  <Card title="Unbound" icon="chart-line" href="https://gateway.getunbound.ai/settings?tab=devices">
    Devices appear with a recent last-seen time.
  </Card>
</CardGroup>

To run a policy on one Mac now:

```bash theme={null}
sudo jamf policy -id POLICY_ID
```

The Mac must be in scope. To run it again the same day, flush the policy log under **Policies → your policy → Logs → Flush**.

***

## Report status in Jamf

Add an Extension Attribute to see the last successful run in inventory. Works with either installer.

Go to **Settings → Computer Management → Extension Attributes → New**. Set Data Type to **String** and Input Type to **Script**:

```bash theme={null}
#!/bin/bash
M="/Library/Application Support/Unbound/last-success.txt"
if [ -f "$M" ]; then echo "<result>$(cat "$M")</result>"; else echo "<result>never</result>"; fi
```

<Card title="Tamper Resistance" icon="lock" href="/mdm-integrations/tamper-resistance">
  Best practices for keeping Unbound active on every device with managed settings.
</Card>
