Deploying and administering

Configuration reference

Configuration layers, locked settings and administrator rules.

For Muon Insight 0.26.0. This guide also ships inside the app under Help and Documentation.

Precedence is built-in defaults → local defaults → enterprise → machine → user → approved CLI override. Enterprise _locked dotted paths are restored after later layers. Files use UTF-8 JSON and are checked against schemas/config.schema.json; an invalid layer produces a warning and a safe validated fallback.

When a validated repository snapshot is active, its synchronized enterprise configuration replaces the packaged enterprise layer in that precedence chain. The packaged file remains the offline fallback until the first snapshot has been activated.

  • branding: application/company names, six-digit accent color.
  • appearance: system, light, or dark; accessible base font size.
  • paths: module, pack, and rule locations relative to application resources unless absolute policy is implemented by a deployment wrapper. paths.downloads controls persistent log archives. Leave it empty to use C:\TEMP on Windows, or set an absolute writable directory such as D:\SupportLogs. ${ENV:USERPROFILE} is allowed by default for deployments that intentionally prefer a user path.
  • execution: global/per-target task limits, timeouts, cancellation grace, monitor interval.
  • remote_control: optional absolute viewer_path for CmRcViewer.exe and optional Configuration Manager site_server. When the viewer path is empty, standard console locations, SMS_ADMIN_UI_PATH, and PATH are checked.
  • logging: level, rotation bytes/backups, optional network destination and retry intent.
  • security: offline policy, blocked IDs, trusted publishers, and administrators: the groups or users (DOMAIN\name, name, or SID) who see the Administration page. security.administrators is taken only from packaged defaults and the enterprise layer; machine and user files cannot set it.
  • history: task_history_enabled records every completed run so results survive a restart, and maximum_task_records bounds how many are kept. Task working directories are pruned to match at startup, so retention also governs disk use under the data root.
  • reports: default format, raw output, and redaction tokens (secrets, email_addresses, ip_addresses, file_paths).
  • updates: channel, startup checks, hash/signature requirements.
  • integrations.servicenow: HTTPS instance, CMDB computer table, Credential Manager target, API timeout, and optional user footprint for ServiceNow Asset Intelligence. Legacy related_* mappings are reserved for a permission-approved future integration and are not used by an active module.
  • integrations.active_directory.ou_move_root: approved OU distinguished name for computer moves. The selector and action are both restricted to this exact OU and its descendants. Leave it empty to disable OU movement; production deployments should set and enterprise-lock the dotted key.
  • configuration.allowed_environment_variables: only these ${ENV:NAME} values expand. Environment expansion is for non-secret values only.

The repository bootstrap is a separate file so a central team can own its lifecycle independently.

config/repositories.json is the local bootstrap, delivered beside setup by the deployment tool. When content.enabled is true it defines the stable UNC repository, channel, and bounded startup timeout. The Content repository Group Policy (HKLM\SOFTWARE\Policies\MuonixLabs\MuonInsight: ContentSyncEnabled, RepositoryPath, Channel) takes precedence over the path, channel and enabled state; the startup timeout always comes from the file. Synchronized configuration can change neither. See ADMIN_REPOSITORY_GUIDE.md and DEPLOYMENT.md.

Administrator rules

JSON files in rules/ are evaluated against every completed module result, so a site can decide what counts as a finding without editing, revalidating, or republishing a module. Each rule needs id, name, severity, message, and conditions, and should name the module_ids it applies to – a field path such as resources.memory_used_percent means different things in different modules, and a rule with no module_ids is evaluated against all of them.

Conditions take a field dotted path, an operator (eq, ne, gt, gte, lt, lte, contains, regex, in), and a value, or combine them under all or any. Matches appear alongside the module’s findings marked (administrator rule); the module’s own output is unchanged. One malformed file is reported and skipped without costing the others.

rules/computer-summary.json is a working example scoped to system.computer-summary.

Something wrong or unclear? Open an issue on GitHub.