vibe coded with ❤️
Concept app · v0.4.0 · Notarized

Gimle

Read-only, deduplicated backups of Jamf Pro. Gimle reads devices, profiles, extension attributes, scripts, policies, groups, packages — including the binaries — and about 60 other settings areas, and writes them as JSON plus a content-addressed store. A built-in explorer with full-text search and export, PDF reports and a dry-run simulation show what's in a backup and what it changed. In synced folders, backups are staged locally and written as a few large pack files; with MDM, they can be encrypted.

Concept app. Gimle explores whether one simple read-only backup can become the offline data source for other Jamf tools like Janus and Jarl. Version 0.4.0 is signed and notarized. It has been tested in a demo environment only, not against a production Jamf Pro, and backup encryption hasn't been tried with a real organisation key profile — start with a test instance and check the backup's warnings. Named after the golden-roofed hall that survives Ragnarök.
Gimle app icon

Your Jamf Pro, safely on disk

🗄️

Broad Coverage

Computers, mobile devices, users, profiles, EAs, scripts, policies, groups, packages, distribution points, PreStages, apps, patch management, LDAP/SSO and about 60 settings areas in total.

🧬

Deduplicated Snapshots

Every backup is a full snapshot, but unchanged objects and files are stored only once. Unchanged devices and package files aren't even requested again.

🔒

Encrypted Backups

With EncryptBackups (MDM only), API objects, section indexes, the journal and the PDF reports are sealed with AES-256-GCM under a data key wrapped for your organisation key. Package binaries and the backup summary stay readable so lists and retention keep working. Lose every copy of the key and the backups are gone.

🗜️

Packs & Staging

Each backup writes its new objects as one pack file instead of thousands of small ones, staged on the Mac and published in one step — friendlier to OneDrive, SharePoint and network shares. Every Mac using the folder needs Gimle 0.3 or later.

📦

Package Binaries

Downloads package files from the Jamf Cloud Distribution Service, unauthenticated HTTP(S) distribution points, or a locally mounted file share — resumable, with hash verification.

⏯️

Resumable & Gentle

Rate-limited requests with backoff on 429/503, pause and resume, and interrupted backups continue where they stopped instead of starting over.

🏢

Multiple Instances

Back up several Jamf Pro servers, schedule starts, and keep the newest N backups or X days, with garbage collection of unreferenced data. Several Macs can share one backup folder (OneDrive, SharePoint, a network share) — a best-effort lock keeps two of them from backing up the same server at once.

🔐

Encrypted Secrets via MDM

Push instances by configuration profile with GIMLE-ENC:v1 client secrets (P-256 ECDH + AES-GCM), decrypted only when a token is requested.

📄

Documented Format

A stable, versioned on-disk format that other tools can read — section IDs never get renamed, and breaking changes bump formatVersion (2 adds packs, 3 is encrypted). Janus reads it offline.

🧰

gimlectl

A signed command-line helper, installed at /usr/local/bin/gimlectl, to encrypt secrets, list, verify and pack backups, create reports, and garbage-collect the store. --key opens encrypted backups without the key profile.

🔎

Backup Explorer

Open any backup in its own window: sections, objects, and readable key facts — a policy's triggers, frequency, packages, scripts and scope; a profile's payloads; a group's criteria and members. Search names or full contents across every section, filter to what's new, changed or removed, export profiles, scripts and package files, or view the raw JSON.

📑

Reports & Audit Log

Every backup ends with a PDF backup report (what needs attention, what changed) and a security report (every request was a GET, the API client's privileges with write access flagged, sensitive content, folder permissions), built from a complete audit.jsonl action log.

🧪

Simulation

Check whether a backup would succeed and what it would change. A simulation reads Jamf Pro like a backup but writes nothing to the backup folder and downloads no files, so it's much lighter.

🛂

Backup Policy by MDM

Set AllowBackups = false for view-only Macs that can explore backups and open reports but not back up, and MinimumHoursBetweenBackups so every Mac sharing a folder follows one frequency — enforced, also for Back Up Now, when MDM sets it.

👁️

Read-Only, No AI

Only GET requests, so a read-only API role is enough. No telemetry and no AI — Gimle only talks to your Jamf Pro servers.

Admin Guide & Backup Format

Setting up the read-only API role, managed deployment with encrypted secrets, backup encryption, how a backup runs, and the on-disk format other tools can read.

📖 Read the Documentation

Where things stand

System Requirements

macOS 27 or later.

Apple Silicon only.

A Jamf Pro API client with a read-only role.

Build Status

Version 0.4.0. Signed with a Developer ID certificate and notarized by Apple.

77 unit tests pass in 17 suites (Swift 6, strict concurrency).

What's Verified

Tested in a demo environment only, not against a production Jamf Pro: several endpoint paths, response fields and privilege names are still unconfirmed against a production tenant. The explorer, reports and simulation were exercised with demo data, not a production backup. Encryption (format 3) hasn't been tried with a real organisation key profile, and view-only mode hasn't been checked by eye. The project log doesn't record a 0.4.0 install on a test Mac.

Why It Exists

To give Janus and Jarl an offline data source, so each tool doesn't need its own API import. Restoring to Jamf Pro is deliberately out of scope.

Want to try the concept?

Concept app · Free · Signed & Notarized · macOS 27+ · Apple Silicon · 9.1 MB

Download Gimle