RMM Scheduled Scripts - Full Engine & UI
OpenFrame v1.2.1 - Scheduled Scripts, AI Guardrails & Self-Service Controls
Version: 1.2.1
MINOR
Release Type
STABLE
Release Status
August 14, 2026
Release Date
Ilona Kozak
QA Engineer
OpenFrame v1.2.1 delivers the full RMM Scheduled Script engine - the most requested capability in the platform - giving MSPs cron-based and interval-based automation with device/group targeting, execution history, and a Figma-matched UI. This release also ships per-customer AI guardrails and settings, a Video Widget in OpenFrame, user self-deletion with owner transfer, and Fae's escalate-to-human reliability fix. Mingo gains expanded dashboard coverage for tickets, tags, and devices, while device friendly names (nicknames) now surface everywhere and auto-populate into script schedules. Dozens of stability, UX, and infrastructure improvements round out the release.
Features Added25
Complete scheduled script functionality is now live: API layer for creating, updating, deleting, and listing schedules; cron-based and interval-based execution engine; device and group targeting; execution history and status tracking; and a UI that matches the approved Figma design. Includes filtering by date/time, custom args and environment variables per script, drag-to-reorder within a schedule, and a watchdog to catch silent failures. Scheduled scripts that previously failed due to an obsolete unique index are now fixed. This is the most impactful RMM capability shipped in this release.
Auto-Add Devices to Script Schedules via Device Criteria
Devices can now be automatically added to a script schedule by defining selection criteria, eliminating the need to manually target each device. The device selection block has also been visually corrected with proper padding, an outlined block style, and an 'Add All' link replacing the result quantity label - applied consistently across Run Script, Schedule Script, New Policy, New Check, and New Query pages.
Per-Customer AI Guardrails Configuration
Administrators can now configure AI guardrails on a per-customer basis, giving MSPs fine-grained control over what the AI agents are permitted to do within each customer's environment. This is a critical safety and compliance control for multi-tenant deployments.
Per-Customer Settings
Customer-level settings are now independently configurable, allowing service providers to tailor OpenFrame behavior for each customer without affecting other tenants.
Video Widget in OpenFrame
A new Video Widget is available within the OpenFrame interface, enabling embedded video content directly in the platform.
User Self-Deletion with Owner Role Transfer
Users can now delete their own account directly from account settings. When the user holds the owner role, they must transfer ownership to another user before deletion is permitted. Email notifications are sent to all affected parties - the deleted user, the new owner, and the previous owner - with full context including organization name, date, and who initiated the action.
Device Friendly Name (Nickname) with Search Support
Users can now assign a custom nickname to any device. The friendly name appears in the device title and throughout the platform, and device search includes nicknames in results alongside the original hostname. This resolves the long-standing issue where NAT addresses appeared as device names on some machines.
Fae Escalate-to-Human Reliability
Fae now reliably handles requests to escalate a conversation or reach a human agent. Previously, these requests were inconsistently processed, leaving end users without a clear path to human support.
Mingo Dashboard Coverage - Tickets, Tags & Devices
Mingo can now perform the full set of everyday dashboard tasks: ticket creation and editing with device, organization, assignee, and label fields; ticket assignment and unassignment; note management (add, edit, delete, read); tag listing and suggestion; device listing with filters; and script listing and execution. This closes the gap between what a dashboard user can do and what Mingo can do.
Mingo My/All Chats Toggle
A two-state toggle above the Mingo chat list lets technicians switch between 'My Chats' (scoped to the current user's dialogs, default) and 'All Chats' (tenant-wide). Selection persists across sessions. Backend filter parameter added to support the toggle.
Mingo Sidebar - Conversation History in Left Rail
The Mingo sidebar now matches the approved design: conversation history lives in a collapsible left rail alongside the main chat window. History entries show title, timestamp, and a context indicator (device, ticket, or general), making it easy to switch between sessions without losing context.
Apple SSO Support
Sign in with Apple is now supported on login and registration screens, satisfying Apple App Store requirements for apps that offer third-party SSO providers. Apple-specific behaviors (private relay email, missing name claims on repeat sign-in) are handled correctly.
Mobile SSO Auth Pipeline
Mobile SSO login now flows through the system browser (ASWebAuthenticationSession) instead of an embedded WKWebView, which Google and Microsoft block. Includes tenant discovery with domain, devTicket scoping, Redis store, and AASA configuration.
Setup Completion Enforcement - No More Half-Configured Accounts
Every login now checks setup completion server-side. Incomplete accounts are redirected to setup rather than landing anywhere in the product. The setup flow auto-expands the first incomplete step and scrolls it into view on return. Steps already completed outside the flow are automatically marked done. Onboarding redirect only fires after initial setup is fully finished.
Account-Wide Empty States with Guided Next Actions
Every list, table, and panel now has a purposeful empty state explaining what belongs there and offering the next action. Covers devices, tickets, customers, scripts, policies, queries, and more - eliminating the blank screens that made the product appear broken during first setup.
Live Support Ticket Notifications
Real-time notifications are delivered when a support ticket is updated. The notification header includes the ticket identifier so technicians immediately know which ticket has new activity, and notifications are actionable - tapping navigates directly to the ticket.
Knowledge Base - Paste Images from Clipboard
Images can now be pasted directly from the clipboard into knowledge base articles, making it significantly faster to create step-by-step guides with screenshots.
Run Policy Query Live Against a Device
From the Policies screen, users can now run the policy's query live against a selected device on demand to see in real time what is failing - without recreating the query manually in a separate tool.
Policy Details - Quick Query for Individual Device
A Quick Query button on the Policy Details device table opens an inline block with the policy query pre-filled and editable, letting users run and modify the query against a specific device without leaving the page.
Force Restart Event for Individual Tools
A new server-side force restart event can target a specific integrated tool (Mesh, Fleet, OpenFrame client) on a device, enabling remote restart of a stuck or misbehaving tool without restarting the entire agent.
CLI OpenFrame Cluster Command for Cloud Kubernetes (EKS/GKE)
The OpenFrame CLI can now provision cloud Kubernetes clusters by applying public Terraform modules for AWS (EKS) and GCP (GKE), as an alternative to the local K3d flow.
Reboot Device Quick Action on Devices Screen
A 'Reboot Device' option is now available in the quick actions menu on the Devices screen. A confirmation prompt prevents accidental reboots, and device status reflects the reboot state in real time.
AI Restriction - OpenFrame Client and Tooling on Endpoints
The AI assistant now has a hard restriction preventing it from performing or instructing actions involving the OpenFrame client, Mesh, Fleet, or related tooling on customer endpoint machines, eliminating the risk of uncontrolled agent configuration changes.
Monitoring Legacy 2 Section for Clients Below v0.9.54
A dedicated 'legacy 2' section in monitoring tests now tracks and surfaces devices running client versions below 0.9.54 - machines that have been unreachable and cannot be repaired remotely - with alerts when these devices are detected.
Monitoring Coverage for Missing OpenFrame Client
Monitoring tests now detect devices where the OpenFrame client is not installed, covering both new installations and existing devices that lost the client, and surface these gaps in monitoring alerts.
Bugs Fixed24
Scheduled Scripts Failing Due to Obsolete Unique Index
Scheduled scripts on customer tenants consistently failed to execute while the same scripts ran successfully when triggered manually. Root cause was an obsolete unique index. The index has been removed and scheduled execution now completes reliably.
NAT Address Displayed Instead of Friendly Device Name
On some machines behind NAT, the device name was shown as the NAT address instead of the hostname or friendly name. Devices now always display their correct friendly name.
Test Run and Run Now Buttons Active Without Selected Devices
The 'Test Run' and 'Run Now' buttons on the policy page were clickable even when no devices were selected. They are now disabled when no devices are selected, with a tooltip explaining the requirement.
Script Timeout Capped at 600 with No Field Validation
Script timeout values above 600 were silently rejected with no error message or feedback. The field now validates input and provides clear error messaging for invalid values.
Page Refreshes When Searching on Scripts Page
Typing in the search field on the Scripts page triggered a full page refresh, losing scroll position and resetting active filters. Search now filters results in place without a page reload.
Last Activity Filter Not Working on Customers Page
Selecting a value for the 'Last activity' filter on the Customers page had no effect on the displayed results. The filter now correctly scopes the customer list.
Null First/Last Name for Users Registered via Microsoft SSO
First and last name were stored as null when a user registered or logged in via Microsoft SSO because the name claims from the Microsoft OAuth token were not being parsed. Names are now correctly populated from the given_name and family_name claims.
Email Not Marked as Verified After SSO Sign-Up
Users who signed up via Google or Microsoft SSO had their email left in an unverified state despite the identity provider having already confirmed it. SSO-authenticated emails are now marked as verified immediately.
User Redirected to Onboarding Before Initial Setup Finished
The app redirected users to the onboarding flow while initial setup was still in progress. The onboarding redirect now only fires after initial setup is fully complete.
Duplicate Device Created When Upgrading Client Older Than v0.9.6
Upgrading a client older than 0.9.6 created a duplicate device record instead of reinstalling the existing one, because the old binary's uninstall wiped the credentials that the new version needed to identify the machine. The upgrade path now correctly identifies and updates the existing record.
Fleet ID Mismatches Causing Silent Device Linking Failures
Devices were showing up with mismatched Fleet IDs after reinstallation, causing records to fail to link between OpenFrame and FleetDM. The mapping logic has been fixed, existing mismatched records reconciled, and a guard added to detect future mismatches instead of silently propagating them.
AI Assistant Chat Blocks Machine Restart on Mac
When the AI assistant chat was open, it prevented macOS from restarting or shutting down. The app now handles system shutdown signals correctly and does not block restarts.
Mesh Deadlock Issues Causing Agents to Hang
Mesh server instances were experiencing deadlock conditions that caused agents to hang or become unresponsive. Root cause has been identified and fixed, with additional logging added to catch recurrence.
Command/Script Output Too Long Fails to Push to NATS
When a command or script produced output exceeding the previous size cap, the result silently failed to be delivered downstream. The output cap has been increased to 5 MB.
Chunk Processing Issue Causing Incomplete Operations
Chunks were not being processed correctly, potentially causing data loss or incomplete operations. Root cause has been identified, fixed, and logging added to prevent silent failures.
Tool Agent ID Not Resolved Correctly on Republish Tick
The tool agent ID was cached rather than freshly resolved on each republish tick, leading to stale agent references being published after reinstallation or ID changes. The ID is now resolved on every tick.
Tool Launch-Failure Log Spam in openframe-client
When a managed tool's binary was missing, the supervision loop retried every 5 seconds and logged each attempt - approximately 45 lines per minute per broken tool - flooding the Loki export window and making other issues impossible to diagnose. Log spam is now throttled.
Missing Mesh Agents Across Tenants
Multiple tenants had Mesh agents that were never installed or not reporting. Installation flow, deployment scripts, and silent installation failures have been investigated and resolved.
Missing Fleet Agents Across Tenants
Multiple tenants had Fleet agents that were never installed or not reporting. Installation flow and deployment scripts have been investigated and corrected.
Mingo Lists Archived Scripts Alongside Active Ones
Mingo was returning scripts regardless of status, including archived scripts. The query now filters to ACTIVE status only at the query level so pagination and counts remain correct.
Mingo Saves Unvalidated Queries, Policies, and Scripts to Shared Library
Mingo could write broken queries, policies, or scripts into the shared library without any validation check, allowing bad artifacts to be deployed at scale. A mandatory validation gate now prevents anything from reaching the library without first being verified to run correctly.
/me Endpoint Called on Auth Page Causing Unnecessary Errors
The auth page was calling the /me endpoint, which does not exist on the shared part, resulting in unnecessary errors. The call has been removed and the auth flow works correctly without it.
WebView2 Per-User Install Causes Chat Window Error on Windows
A per-user WebView2 installation was invisible to the SYSTEM account the agent runs under, causing a 'webview2 error' in the chat window. WebView2 is now bundled in the Windows client installer and installed machine-wide. Doctor mode detects install scope and reports pass/fail.
Block Registration with Disposable and Privacy-Focused Email Providers
Users could register with disposable or privacy-focused email domains (Guerrilla Mail, Mailinator, ProtonMail, Tutanota, etc.). A maintained blocklist now validates email domains at registration and returns a clear error when a blocked domain is used.
Improvements34
Legacy TacticalRMM References Removed Across Product, Docs, and Infrastructure
All remaining references to the legacy TacticalRMM engine have been removed from interface strings, labels, tooltips, error messages, notifications, documentation, and infrastructure. OpenFrame now presents consistently as its own complete platform.
Mingo Adaptive Agent - Guided and Regular Modes Merged
Mingo's guided and regular modes have been merged into a single adaptive agent that determines the appropriate level of guidance from the conversation itself, eliminating the need for technicians to declare in advance how much help they need and halving the maintenance cost of every future change.
Quick Actions Audited and Rewritten for Fae and Mingo
All bundled quick actions and scripts for both agents have been reviewed, renamed for consistency, rewritten for accuracy, and balanced in coverage between Fae and Mingo. These are often the first thing a new customer tries, so quality here has outsized impact.
Drag-and-Drop Reordering for Quick Actions in AI Settings
Quick actions in the AI Settings editor for both Fae and Mingo can now be reordered via drag and drop. The saved order is persisted and reflected in the chat empty-state chips.
Policy Testing UI Updated
The test button now appears directly below the policy query syntax input. Clicking it reveals an inline block with a device selector, start time, execution timer, and Run Test, Stop Test, and Test Again action buttons.
Query Testing UI Updated to Match Policy Testing
The standalone Query testing interface has been updated to match the new Policy query testing UI, including test button placement, inline test block with device selector, start time, execution timer, and action buttons.
Monitoring Empty States for Policy Devices Table and Query Assigned Devices Tab
Both the Devices table on the policy details page and the Assigned Devices tab on the query details page now use the standard table empty state: device icon, 'No devices assigned' title, hint line, and no table headers while empty.
Client Self-Deactivation on Unrecoverable Backend Responses After Tenant Deletion
When a tenant is deleted and the gateway returns terminal responses (e.g. 410 Gone), the client now recognizes these, applies exponential backoff, and eventually self-deactivates - stopping all outbound calls and attempting self-uninstall instead of retrying indefinitely.
OpenFrame Client Update Prioritized Before Tool Updates
The update sequencing now enforces that the OpenFrame client (core agent) update completes before any tool updates (Mesh, Fleet, etc.) begin, preventing version mismatch issues during the update process.
Cascade Update Process Migrated to Ratchet Approach
Each cascade update target now records a monotonic version marker. Updates only move forward - never backwards or repeat - eliminating redundant and out-of-order updates when multiple changes happen in quick succession.
SSO Buttons Moved to Initial Login and Sign-Up Screens
Google and Microsoft SSO buttons are now visible immediately on the login and sign-up screens instead of being hidden behind a 'Continue' step, reducing friction for the most common authentication paths.
Skeleton and Loading Experience Unified - One Source of Truth Per Surface
The blocking render gate on session and flags has been removed. Each page now owns its own skeleton, sidebar width is a single shared CSS variable, and flag reads have a consistent loading/on/off state contract so 'not answered yet' is never collapsed into 'off'.
Dashboard Aligned with Design and DashboardCard Component Reused
The dashboard layout has been realigned with the latest design specs. All ad-hoc card implementations have been replaced with the shared DashboardCard component, fixing spacing, sizing, and styling inconsistencies.
Dashboard Skeletons Updated and Page Jumps Fixed
Loading skeletons on the main dashboard (Devices, Tickets, Customers overviews) are now pixel-identical to loaded cards, eliminating the content shift that occurred when data loaded in.
Native Scrollbars Restored - Custom Scrollbar Removed
The custom OverlayScrollbars implementation has been removed across the platform. All scrolling is now native, styled with scrollbar-width: thin and scrollbar-color from design tokens, eliminating layout jumps caused by custom track styling.
Fonts and Typography Corrected Across the System
Font sizes and typography have been corrected across all tables, page headers, search inputs, dashboard sections, device details, and form elements where sizes were too small or inconsistent.
Text Truncation and Tooltips Verified Across All Surfaces
All tables, cards, sidebars, headers, dropdowns, and detail pages have been audited for text truncation edge cases. All truncated fields now have working tooltips showing the full content on hover.
Title Block Responsive Button Layout Fixed
Action buttons in the title block now wrap to a second row only when the title is long enough to cause overflow. When the title is short, buttons remain inline on the same row on both desktop and tablet.
QuickActionWall Chip Distribution and Row Capping Fixed
Chips now distribute evenly across brick rows before padding. Fae and Mingo surfaces cap at 2 rows. The per-row pad target adapts to the measured container width, and no row is filled with duplicates of a single action.
Log Details Moved to Log Preview Panel
All key log detail information is now accessible directly from the log preview panel, so users can see full log context without navigating to a separate details view.
Unified Header Component Across All Projects
The header component has been consolidated into a single shared implementation in the ODS library, used consistently across all projects. Project-specific header variants have been removed.
Centralized Typed Route Registry Added
A single source of truth for all internal app routes has been introduced. Paths, dynamic IDs, and query parameters (tabs, filters) are now type-checked, replacing hand-written path strings scattered across the codebase.
Unified Device Query Layer
All device data on the frontend now flows through a single query/hook layer, replacing multiple scattered queries that caused inconsistent state, duplicate requests, and mismatched data between the device list, device details, dashboard widgets, and remote access views.
WebView Installation Check Added to Doctor Client Diagnostics
The client doctor diagnostics now check for WebView installation, report the detected version (or absence), and flag a clear pass/fail status for the WebView requirement.
Fleet ID Mismatch Research and Monitoring Added
Research into fleet ID mismatch detection has been completed. Monitoring tests now surface fleet ID mismatches automatically so they are caught instead of silently causing device management issues.
Monitoring Tests - Missing OpenFrame Client Detection
Monitoring tests now include coverage for devices where the OpenFrame client is missing, catching deployment gaps for both new installations and existing devices.
E2E Pipeline Execution Time Reduced
Fixed delays replaced with condition polling, scripts scheduling updated to the closest available time, and the Monitoring policy now triggers before the scheduler - significantly reducing overall E2E pipeline execution time.
Feature Environment Test Pipeline Added
A dedicated test pipeline for feature environments has been added with broad coverage optimized for fast feedback, including a triggerable endpoint with configuration override support.
Redirect to 'Check Your Email' After Email Registration
After successful email registration, users are now redirected to a 'Check your email' confirmation page instead of remaining on the registration screen.
Guide Mode Hub Integration Removed from Mingo Sidebar
The guide mode hub entry point has been removed from the Mingo sidebar. Related components, routes, and API calls have been cleaned up with no dead code or broken references remaining.
Bound Tool Uninstall Command with Timeout and Output Streaming
The tool uninstall command now has a configurable timeout and streams stdout/stderr output in real time. Timeout expiry kills the process and reports the failure instead of hanging indefinitely.
Empty State Aligned with Ask Mingo Section Design
Empty states across relevant pages have been updated to align with the new Ask Mingo section design, ensuring consistent layout, copy, and call-to-action patterns.
Apple SSO Configured for Dev Environment
Apple SSO developer settings have been configured and required environment variables added to the dev environment so Apple sign-in works end-to-end in development.
AI CRUD for Script Schedules - Mirroring Script Capabilities
Mingo can now create, read, update, and delete script schedules through the AI interface, mirroring the existing script CRUD capabilities.
Related Links
Ilona Kozak
QA Engineer
Hi! I’m Ilona, a General QA Engineer in the Product Engineering team. I help ensure our product is reliable, user-friendly, and built with quality in mind. I enjoy diving into details, improving processes, and working closely with teams to deliver the best possible experience for our users.