Skip to content
Rod Christiansen edited this page Sep 5, 2026 · 1 revision

Cimian

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.

Quick start

Install the client. Deploy the MSI for the machine's architecture:

msiexec.exe /i "Cimian-2026.05.01.0930-x64.msi" /quiet /norestart

Point it at your repository. Write C:\ProgramData\ManagedInstalls\Config.yaml with PascalCase keys:

SoftwareRepoURL: https://cimian.example.com/repo
ClientIdentifier: WKSTN-0001
Catalogs:
  - Production

Verify what the client actually resolved:

managedsoftwareupdate --show-config

Do a full detection pass without installing anything. This is the command to reach for first, always:

managedsoftwareupdate --checkonly -vv

Then run for real, from an elevated prompt. The installer also registers a scheduled task that does this hourly:

managedsoftwareupdate --auto -vv

On the repository side, import an installer, edit the generated pkgsinfo, and regenerate the catalogs:

cimiimport "C:\Downloads\MyApp-1.2.3.msi" --arch x64
makecatalogs --repo_path "\\fileserver\share\CimianRepo"

Documentation

Start here

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

The repository

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

Authoring packages

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

The client at run time

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

Diagnostics

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

Integrations and interfaces

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

Contributing

Page What it covers
Development Building, testing, and how a release is cut
FAQ Questions a Windows admin coming from Munki tends to ask

Reporting problems

Issues and corrections belong on the repository issue tracker.

Clone this wiki locally