Codync
무료 오픈소스 1:1 대안, Grok Bot과 Muse 대신
Jordy Thery가 만든 무료 오픈소스 macOS 앱으로 Jamf 테넌트를 복제하고 미리보기 제공
Free, open-source macOS app by Jordy Thery that copies a source Jamf tenant to a destination tenant, from everything down to a single object, with a dry-run preview.
개발 도구Swift · ShellGitHub @JordyThery온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Copy objects between Jamf Pro servers, Platform API environments, and files. Based on jamf/Replicator.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A macOS app that copies a source Jamf tenant to a destination tenant — or any selection down to a single object — with a read-only Preview, a resumable run, and a gated wipe.
Jamf Migrator started as a fork of Replicator by Jamf Professional Services (MIT license) and has been rewritten as a SwiftUI app for macOS 26 on top of the Jamf Platform API and the Jamf Pro APIs.
Each tenant is added in Settings › Connections with one of two connection kinds:
https://yourcompany.jamfcloud.com) with either an
API client or a Jamf Pro username and password. A username and
password sign in for a token; requests never use Basic authentication.The two kinds mix freely: a Jamf Platform API source can copy to a direct destination and the reverse. Blueprints and Compliance Benchmarks exist only behind the Jamf Platform API gateway; while a selected tenant connects directly to Jamf Pro, those types are grayed out and left out of Preview.
Client secrets and passwords are stored in the macOS Keychain, never on disk.
The quick version: the source needs Read and the destination needs Read, Create and Update on every object type you copy, plus Delete for delete mode. For least privilege, Permissions lists the Jamf Account permission and the Jamf Pro privileges for each object type, the types each one also reads, and the few exceptions. The Clone Tenant wizard’s Connect step checks every selected type on both tenants and names any a tenant can’t read.
Objects migrate in dependency order and are matched by name on the destination. Preview (the dry run) reads both tenants, writes nothing, and labels every object:
| Outcome | Meaning |
|---|---|
| Create | Not on the destination yet. |
| Update | Exists but differs; the inspector shows a field-level diff. |
| Replace | Compliance Benchmarks only: deleted and recreated (they have no update endpoint). |
| Unchanged | Identical; skipped. |
| Blocked | Can’t be migrated; the reason is shown. |
| Step | Object types |
|---|---|
| 1 | Sites |
| 2 | Categories, buildings, departments, network segments |
| 3 | Computer, mobile device and user extension attributes |
| 4 | Scripts, packages (records only), distribution points |
| 5 | Jamf Pro user and group accounts, LDAP servers, users, user groups, directory bindings, software update servers |
| 6 | Smart and static computer and mobile device groups, advanced searches |
| 7 | Configuration profiles, Mac and mobile device apps, eBooks, classes, restricted and licensed software, printers, Dock items (with their Self Service icons) |
| 8 | Policies, patch management titles and policies, App Installers |
| 9 | Enrollment customizations |
| 10 | Computer and mobile device PreStages (with ADE and distribution point mapping) |
| 11 | Blueprints (Jamf Platform API only): deployed on the destination only when deployed on the source; an out-of-date one is deployed with a warning |
| 12 | Compliance Benchmarks (Jamf Platform API only) |
| 13 | Webhooks and tenant settings: check-in, inventory collection, SMTP, Self Service, re-enrollment, LAPS, onboarding, single sign-on |
Onboarding items are matched by name on the destination; single sign-on that is off on the destination stays off.
The Clone Tenant wizard shows this list before every clone:
Every run, also a stopped one, saves a report to the Run Reports folder;
Show Report in Finder in the run window opens it. Turn on Settings ›
Export to save every source payload and every written payload per run;
passwords, Settings › Secrets values and license serial numbers are replaced
by <redacted> in those files.
The toolbar’s Clone Tenant button runs the guided flow: Connect (checks both tenants and their permissions) → Prepare (manual checklist, ADE and distribution point mapping, secrets) → Preview → Run → Verify, which plans again and shows that a second run would write nothing.
⌘D turns on delete mode for the session (the app always starts in Copy): a red banner appears, Run turns red, and every run confirms with the tenant name and counts. The red Wipe Tenant button deletes every selected object type from a tenant behind gates that must all pass, in order: the tenant isn’t Protected, a Preview, a verified backup of the selected types (skippable only through an extra confirmation), and typing the tenant’s name. Deletes run in reverse dependency order, retry objects held by dependencies, and end with a report of anything left behind. Delete mode never removes the account a direct connection signs in with, or a Jamf Pro account or group with full access and the Administrator privilege set.
Try Demo Mode in the sidebar (or Connection › Demo Mode) swaps your tenants for two made-up ones, Contoso Source (Demo) and Contoso Destination (Demo), so you can try every flow without a Jamf tenant. Demo Mode never reads your Keychain or Settings › Secrets, and its run reports, journals, backups and exports go to a temporary folder.
A short tour starts on first launch and walks through the workflow; replay it from Help › Guided Tour.
At launch, at most once a day, the app asks GitHub for the latest release and offers it once, with its release notes and a download of the zip. Jamf Migrator › Check for Updates… checks on demand; Settings › Updates turns the daily check off. The app is sandboxed and can’t replace itself: save the zip, quit, and swap the app in Applications.
~/Library/Containers/be.jordythery.jamfmigrator/Data/Library/Application Support/JamfMigrator/This tool is provided as-is, without warranty of any kind. Use it at your own risk. This is a personal project. It is not affiliated with or endorsed by my employer or Jamf. Issues and pull requests are appreciated. Support is best-effort.
MIT — see LICENSE. Based on Replicator, © Jamf.