-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Cimian is a managed software deployment system for Windows, modelled closely on Munki.
You maintain a repository of package metadata, catalogs and manifests on a web server. A client agent on each machine works out what should be installed, removed or updated, does it, and reports what happened. The repository is the interface; there is no console, no database and no agent-to-server channel. Put the repository in git, review changes as pull requests, and deploy software the same way you deploy code.
If you have run Munki, the shape is familiar down to the file names:
pkgsinfo/, catalogs/, manifests/, pkgs/, an installs array,
managed_installs, conditional items with NSPredicate-shaped conditions, and a
client called managedsoftwareupdate. Start at
Coming From Munki for the concept-by-concept mapping and an
honest ledger of what each system has that the other does not.
If you have never run Munki, start at Installation and then Repository Layout.
Cimian is written in C# on .NET 10, ships self-contained binaries for x64 and ARM64, and supports MSI, EXE, MSIX/APPX, NuPkg and PowerShell payloads.
Install the client. Deploy the MSI for the machine's architecture:
msiexec.exe /i "Cimian-2026.05.01.0930-x64.msi" /quiet /norestartPoint it at your repository. Write C:\ProgramData\ManagedInstalls\Config.yaml
with PascalCase keys:
SoftwareRepoURL: https://cimian.example.com/repo
ClientIdentifier: WKSTN-0001
Catalogs:
- ProductionVerify what the client actually resolved:
managedsoftwareupdate --show-configDo a full detection pass without installing anything. This is the command to reach for first, always:
managedsoftwareupdate --checkonly -vvThen run for real, from an elevated prompt. The installer also registers a scheduled task that does this hourly:
managedsoftwareupdate --auto -vvOn the repository side, import an installer, edit the generated pkgsinfo, and regenerate the catalogs:
cimiimport "C:\Downloads\MyApp-1.2.3.msi" --arch x64makecatalogs --repo_path "\\fileserver\share\CimianRepo"| Page | What it covers |
|---|---|
| Coming From Munki | Concept, command, path and key mapping, plus the gap ledger in both directions |
| Installation | Supported Windows versions, install methods, what the installer registers, verification, uninstall |
| Client Configuration | Every setting the client reads, from the config file and from MDM policy, and the on-disk layout |
| CLI Reference | Every command, flag and exit code across all eleven executables |
| Architecture | The components, the order things run in, and where state lives |
| Project Structure | The source tree and component map |
| Page | What it covers |
|---|---|
| Repository Layout | Which directories are source of truth and which are generated |
| Pkgsinfo Reference | Every supported pkgsinfo key, with types, defaults and examples |
| Manifests | Manifest structure, the sections, includes, conditionals, and how a client picks its manifest |
| Catalogs and Promotion | Catalog generation and moving a package between deployment stages |
| RepoClean | Pruning old versions and finding orphaned payloads |
| Page | What it covers |
|---|---|
| Installation Checks | The detection chain: how Cimian decides an item is installed |
| Uninstall Methods | The full matrix of removal methods |
| Uninstallable Key | Explicit versus derived removability |
| Conditional Items | Predicate syntax, operators, and the available system facts |
| Importing EXE Bundle Installers | WiX Burn, InstallShield and NSIS wrappers, and the loop they cause |
| PowerShell Execution Policy | How pkgsinfo scripts are invoked |
| Chocolatey Shim Prevention | Stopping Chocolatey from creating shim executables |
| Managed Profiles and Apps | Reporting on state that MDM, not Cimian, enforces |
| Page | What it covers |
|---|---|
| Bootstrap Mode | Zero-touch provisioning and the flag-file trigger |
| CimianWatcher Service | The watcher service, its two trigger modes, deployment and diagnosis |
| Self-Update | How the agent updates itself, and the operator commands |
| Install Loop Prevention | Loop suppression, backoff, and how to clear it |
| Page | What it covers |
|---|---|
| Troubleshooting | Symptom, cause, fix — start here when something is wrong |
| Logging | The structured per-session log format |
| Error Reporting | What is surfaced, where, and what each reason code means |
| Item Source Traceability | Which manifest or condition produced each item |
| CimiTrigger Troubleshooting | When a trigger does not start a run |
| Privilege Elevation | UAC and service account problems |
| Page | What it covers |
|---|---|
| CSP OMA-URI Configuration | Delivering client configuration from Intune |
| ReportMate Status Specification | The contract for the inventory integration |
| CimianStatus UI | The status window |
| Page | What it covers |
|---|---|
| Development | Building, testing, and how a release is cut |
| FAQ | Questions a Windows admin coming from Munki tends to ask |
Issues and corrections belong on the repository issue tracker.
Cimian — managed software deployment for Windows, modelled on Munki. Apache License 2.0. Source and issues at windowsadmins/cimian.
Start here
Repository
Authoring packages
- Installation Checks
- Uninstall Methods
- Uninstallable Key
- Conditional Items
- Importing EXE Bundle Installers
- PowerShell Execution Policy
- Chocolatey Shim Prevention
- Managed Profiles and Apps
Client runtime
Diagnostics
- Troubleshooting
- Logging
- Error Reporting
- Item Source Traceability
- CimiTrigger Troubleshooting
- Privilege Elevation
Integrations
Contributing