For developers

Add your own checks without touching the app

A module is a folder with a manifest and a script. Write it in PowerShell or Python, drop it in, and it shows up in the catalog next to the 55 that ship with Muon Insight.

01Anatomy

A module is a folder

The manifest tells Muon Insight what the module is called, which category it belongs to, what type it is, and whether it supports remote computers, needs confirmation or can be cancelled. The app reads the manifest; the entry point does the work.

modules/
└─ print-queue-age/
   ├─ module.json   # manifest
   ├─ main.ps1      # entry point (or main.py)
   └─ README.md     # help for technicians
A module is a folder holding a manifest, an entry-point script and any files that script needs. The manifest declares the module's identity, type, risk level, whether it needs confirmation or administrator rights, whether it can run on a remote computer, its timeout and its parameters. Muon Insight reads the manifest first and decides from it what the module is allowed to do. A MODULE IS A FOLDER battery-health/ module.json The manifest. Everything the app knows before running anything. main.ps1 The entry point the manifest names. Writes findings through the SDK. native_battery.cs Anything else the script needs, beside it in the folder. Drop the folder in, and it appears in the catalog. No code in the app changes, and nothing is compiled. READ FIRST module.json What the app knows before it runs a line of script. id hardware.battery-health module_type diagnostic risk_level informational requires_confirmation false requires_elevation false supports_remote true timeout_seconds 120 parameters 2 declared, validated The manifest decides whether a module may change anything, ask for administrator rights, or reach a remote computer.

02Manifest

Declare what the module does

Module types match the catalog: diagnostic, action, log_collector, analyzer and integration. Set requires_confirmation on anything that changes the computer.

Example only. Field names are from the current manifest schema.

{
  "schema_version": "1.0",
  "id": "example.print-queue-age",
  "name": "Print Queue Age Check",
  "version": "1.0.0",
  "description": "Reports print jobs older than a threshold.",
  "category": "Printing",
  "language": "powershell",
  "entry_point": "main.ps1",
  "module_type": "diagnostic",
  "supports_local": true,
  "supports_remote": true,
  "requires_confirmation": false,
  "supports_cancellation": true,
  "timeout_seconds": 120
}

03Module SDK

PowerShell and Python

The SDK is the boundary between your module and the app. It loads the run context, reports progress, checks for cancellation and returns one normalized result, which is how your module's output ends up as findings.

PowerShell

Import-MuonContext
Read the run context
Write-MuonProgress
Report progress
Test-MuonCancellation
Honor a cancel request
New-MuonFinding
Build a finding
Complete-MuonModule
Return the result

Python

ModuleContext.from_argv()
Read the run context
context.progress()
Report progress
context.cancelled()
Honor a cancel request
context.result()
Return the result

04Custom packs

Combine modules into a pack

A pack is a JSON file that lists modules to run in one go. Steps can depend on earlier steps or be marked optional, and can pass parameters to a module.

Publish your modules and packs through the content repository's development, pilot and production channels. About channels

{
  "schema_version": "1.0",
  "id": "pack.example-slow-logon",
  "name": "Slow Logon Triage",
  "description": "Checks Group Policy health, then collects logon traces.",
  "modules": [
    { "module_id": "windows.group-policy-health", "depends_on": [], "optional": false, "parameters": {} },
    { "module_id": "logs.startup-logon", "depends_on": [], "optional": true, "parameters": {} }
  ]
}

Developer guide

The module developer guide covers the full manifest reference, the run context, result formats and examples. It ships inside the app and is published here too.

Free public beta

Build on Muon Insight

Download the app, open the module developer guide, and write your first module.