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

# Managed installations and updates

> Guidance for IT teams deploying Granola with MDM or patch-management tools.

Granola does not yet officially support managed installs through dedicated MDM configuration profiles, policy keys, or step-by-step support for tools like Jamf, Kandji, Omnissa Workspace ONE, FleetDM, or WinGet. The recommended path is to install Granola in a way that allows the app to keep itself up to date.

If your organization needs to manage Granola through MDM or patch-management tooling, this guide explains how Granola updates normally work and what endpoints are available for manual packaging workflows.

# How Granola handles updates

For most users, Granola keeps itself up to date automatically. While the desktop app is running, it checks for updates roughly every 10 minutes. When an update is available, Granola downloads it in the background and installs it when the app can safely restart, or when the user chooses to install the update.

For auto-updates to work smoothly, users need a setup where Granola is allowed to update itself:

* On macOS, Granola should be installed in the Applications folder, and the signed-in macOS user needs permission to replace the Granola app bundle.
* On Windows, Granola's default installer is per-user, so auto-updates are most likely to work when Granola is installed somewhere the signed-in Windows user can update.
* On both platforms, the device needs network access to Granola's update and download services.

If an MDM policy, OS restriction, or system-wide installation prevents the signed-in user from updating the app, Granola may not be able to auto-update itself. In that case, your IT team can manage updates manually using the installer and version endpoints below.

# Downloading the latest Granola installers

You can always fetch the latest public Granola installers from these unauthenticated endpoints:

* macOS: `https://api.granola.ai/v1/download-latest`
* Windows: `https://api.granola.ai/v1/download-latest-windows`

Both endpoints redirect to the current installer file:

* macOS: `.dmg`
* Windows: `.exe`

Make sure your download tool is set to follow redirects.

```bash theme={null}
# macOS
curl -L -o Granola.dmg https://api.granola.ai/v1/download-latest

# Windows
curl -L -o Granola.exe https://api.granola.ai/v1/download-latest-windows
```

If your network uses egress filtering, please allow access to:

* `api.granola.ai`
* `dr2v7l5emb758.cloudfront.net`

The CloudFront domain hosts the installer files that the Granola download endpoints redirect to.

# Getting a stable, version-specific download URL

Package managers such as WinGet, FleetDM, and similar tools usually need a stable installer URL plus a matching SHA256 hash. The latest installer endpoints above always redirect to the current Granola version, so the URL they resolve to changes each time a new release ships.

To pin a specific release, capture the redirect target without downloading the installer:

```bash theme={null}
# macOS
curl -sI -o /dev/null -w '%{redirect_url}' "https://api.granola.ai/v1/download-latest"

# Windows
curl -sI -o /dev/null -w '%{redirect_url}' "https://api.granola.ai/v1/download-latest-windows"
```

This returns a CloudFront URL like:

```bash theme={null}
https://dr2v7l5emb758.cloudfront.net/7.205.1/Granola-7.205.1-win-x64.exe
```

That CloudFront URL is static and permanent, so it remains valid after newer Granola releases.

If you prefer to inspect the redirect header directly:

```bash theme={null}
curl -sI "https://api.granola.ai/v1/download-latest-windows" | grep -i location
```

Example output:

```bash theme={null}
location: https://dr2v7l5emb758.cloudfront.net/7.205.1/Granola-7.205.1-win-x64.exe
```

For package managers, we recommend this workflow:

1. Poll `https://api.granola.ai/v1/get-versions` to detect new releases.
2. When a new version appears, use `https://api.granola.ai/v1/download-latest-windows` or `https://api.granola.ai/v1/download-latest` to get the new static CloudFront URL.
3. Download the installer from that CloudFront URL and compute its SHA256 hash.
4. Update your package manifest with the new URL and hash.

For example:

```bash theme={null}
sha256sum Granola-7.205.1-win-x64.exe
```

PowerShell users can use:

```powershell theme={null}
Get-FileHash .\Granola-7.205.1-win-x64.exe -Algorithm SHA256
```

# Checking when a new version is available

To check whether there is a newer Granola release, use our public versions endpoint. No authentication is required.

```bash theme={null}
curl -s https://api.granola.ai/v1/get-versions
```

The response looks like this:

```json theme={null}
{
  "production": "7.205.0",
  "beta": "7.205.0"
}
```

For most managed deployments, compare the `production` version with the version you currently distribute. You can poll this endpoint on a schedule, such as daily or weekly. When the `production` version changes, download a fresh installer for each platform you support.
