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 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.