Follow-up to the sinceUtc bounding (commit "project index scans + bound AppInstall reads to window"): the AppInstall cutoff was computed with a fresh DateTime.UtcNow.AddDays(-days) AFTER the session window had already been queried and several aggregates had run. That second snapshot sits a few ms later than the session query's, so the AppInstall lower bound was strictly later than the session lower bound. A session included right at the window's lower boundary could then keep its row while app summaries whose StartedAt fell into the gap between the two cutoffs were dropped — undercounting AppScripts.AvgAppsPerSession and TotalUniqueApps for boundary sessions. Capture a single `now`/`windowStart` snapshot at the top of both ComputeUsageMetricsInternalAsync and ComputeTenantUsageMetricsInternalAsync and reuse it for GetSessionsByDateRangeAsync(windowStart, …) and Get(All)AppInstallSummariesAsync(windowStart). Now both bounds are identical. UsageMetricsWindowConsistencyTests pins it: it captures the start arg passed to the session repo and the cutoff passed to the app repo and asserts they are equal (and thus <=), on both the platform and tenant paths. Verified the test bites — reverting either call to a fresh UtcNow fails it. All 2546 backend tests pass. Reported-by: Codex review Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Autopilot Monitor
Advanced monitoring and troubleshooting solution for Windows Autopilot deployments. Gain full visibility into every enrollment session with a detailed event timeline, fleet health dashboards, and session reporting. Define custom analysis rules to automatically detect issues and gather rules to collect targeted evidence. Retrieve diagnostics packages on demand, configure agent settings like auto-reboot behavior and automatic timezone adjustment — all managed centrally from the web dashboard.
Private Preview
Autopilot Monitor is currently running as a Private Preview. Visit autopilotmonitor.com to request access and learn more.
Overview
Autopilot Monitor provides real-time tracking, intelligent diagnostics, and automated troubleshooting for Windows Autopilot enrollment processes. It consists of:
- Bootstrap Script — PowerShell script deployed via Intune that starts monitoring early in the enrollment process
- Monitoring Agent — Lightweight .NET application that collects telemetry and evidence during enrollment
- Backend API — Azure Functions-based ingestion and processing pipeline
- Web Dashboard — Next.js application for real-time monitoring and fleet analytics
Architecture
For detailed information about the system architecture, components, and data flow, see Architecture Documentation.
Documentation
Full documentation is available at autopilotmonitor.com/docs
License
This project uses a split licensing model:
- MIT License — Agent (
src/Agent/) and Shared library (src/Shared/) — unrestricted use on end-user devices - AGPL-3.0 — Backend (
src/Backend/), Web Dashboard (src/Web/), and MCP Server (src/McpServer/) — server-side components remain open source
See LICENSE for full details.



