Launch of the full Professional Services Automation platform powered by the Mingo (technician-facing) and Fae (client-facing) AI assistants. Delivers intelligent ticket triage, automated workflow orchestration, AI-driven auto-resolution for common IT requests, transparent escalation for complex issues, and a column-based ticket board view. Includes data migration backfilling tickets from existing dialogs and full automation test coverage for ticket workflows.
OpenFrame v0.8.14 - PSA, Knowledge Management & Device Tagging
Version: 0.8.14
MAJOR
Release Type
BETA
Release Status
May 19, 2026
Release Date
Michael Assraf
Author
OpenFrame v0.8.14 is a major beta release centered on three transformative pillars: a fully extended PSA platform powered by Mingo and Fae AI assistants for intelligent ticket management and automated workflows, a unified Knowledge Management platform for centralized documentation and runbooks, and a flexible device tagging system enabling granular organization, filtering, and automation across your device fleet. This release also delivers sweeping infrastructure improvements - including Pinot multi-tenancy migration, Redis cluster mode, Relay-compliant GraphQL, and token-based AI context management - alongside extensive UI polish, mobile responsiveness, and expanded automation test coverage.
Features Added15
Extended PSA Platform with Mingo & Fae AI Assistants
Knowledge Management Platform
Integrated documentation management and knowledge base system within OpenFrame's unified platform. Provides version-controlled documentation repositories, searchable knowledge bases, automated documentation generation from configurations, and collaborative editing capabilities for runbooks, SOPs, and network configuration documentation.
Flexible Device Tagging System with Tag Types
New multi-type tagging system supporting custom, system, and category-based tags (e.g., org_type:school, org_type:bank). Allows tagging devices individually or in bulk for streamlined organization, filtering, and automation. Includes a Device Tag Filter modal with empty-state placeholder, renamed 'Device Tags' label across all relevant pages, and full automation test coverage for tag functionality.
Mobile-Optimized Dashboard
Responsive design overhaul for the dashboard UI targeting mobile devices. Implements responsive design patterns tested across various mobile screen sizes, including a specific fix for the 860px breakpoint.
Per-Tenant Feature Flags via Database
Implement per-tenant feature flags stored in the database with default fallback values. Supports enabling or disabling specific features for individual tenants without code changes, with a GraphQL API for frontend consumption per environment.
Calendar UI Implementation
Frontend calendar UI implemented according to the approved design, enabling scheduling and time-based views within the platform.
Organization Archiving with Device Validation
Users can now archive organizations from the UI. Archiving is blocked if any device remains in active/online status, with a clear validation message listing devices that must be archived or deleted first. Archived organizations are visually distinct in the list.
User Profile Pictures - Upload & SSO Sync
Users can upload and manage profile pictures stored in GCS. Profile pictures sourced from Google/Office 365 SSO are automatically saved and displayed across the platform including navigation, comments, and team member lists.
Grafana Dashboard for Device Logs
New Grafana dashboard providing observability into device log volume, error rates, and device-level log activity for operational monitoring.
Device Log Streaming
Real-time device log streaming with tenant-scoped filtering. Supports MeshCentral log ingestion into the device stream logs pipeline alongside other log sources.
OSquery Auto-Update Support
Automatic osquery updates are now supported. Previously treated as a static Fleet asset, osquery can now be updated like regular agents, with version checks surfacing outdated installations.
Opt-In Per-Tool Version Override for Agent Installations
New mechanism allowing per-tool and per-asset version overrides during agent installations via Cargo feature flags. Supports targeting specific versions of OpenFrame chat, MeshCentral agent, Fleet MDM agent, Tactical RMM agent, and osquery for individual tenants or devices without affecting the default installation flow.
Windows SCM Recovery Actions for OpenFrame Client Service
OpenFrame Client service now configures Windows Service Control Manager failure/recovery actions at install time: restart after 10s on first failure, 1 min on second, 5 min on subsequent failures, with a 1-day reset counter. Applies to both crash and clean exit(1) scenarios.
Subscription Blocking for Non-Paying Users
Mechanism to detect and block users with overdue or unpaid subscriptions. Includes access restriction, user notification, admin visibility into blocked users, and edge case handling for grace periods and payment retries.
BIMI Email Brand Indicator Support
BIMI (Brand Indicators for Message Identification) enabled for flamingo.cx, allowing the company logo to display next to emails in Gmail, Yahoo, and Apple Mail following trademark receipt.
Bugs Fixed32
Policies and Queries Auto-Assigned to All Hosts When No Filters Configured
In OpenFrame mode, Fleet's default behavior of assigning all devices when no filters are set was incorrectly applied. Fixed to ensure the system only operates on explicitly assigned hosts.
Organization List Not Refreshing After Creation or Deletion
After creating a new organization, the list did not update automatically - requiring a manual page refresh to see the new entry. The list now refreshes automatically on creation and deletion.
Chat Widget Overlapping Device Selection List in Monitoring
The chat widget was overlapping the bottom rows of the device selection list when setting up monitoring scripts, making it impossible to select devices at the bottom. Fixed z-index and layout to ensure all devices remain selectable.
Fae Messages Appearing Twice (Duplicate Rendering Bug)
Every message sent through Fae (L1 AI agent) was rendering twice in the UI. Root cause investigated and duplicate message rendering eliminated.
Tactical RMM Agents Retrying WebSocket in Tight Loop Without Backoff
Four Tactical RMM agents were generating ~14 req/s combined (~5,041 WebSocket attempts in 6 minutes) with zero backoff, flooding the gateway and causing rate-limiting. Fixed with proper exponential backoff.
Initial Key Sync Failing on Service Startup Due to Missing Tenant ID
Initial key sync was triggered on startup before the tenant ID was available in the database, causing failures. Sync is now triggered by the tenant registration event instead.
Topic Resubscription Failing After Token Expiry
When authentication tokens expired, active topic subscriptions were not re-established after token renewal, causing missed messages and broken real-time updates. Subscriptions now automatically resubscribe after token refresh.
Profile Loading on Every Route Change
User profile was being fetched on every route change instead of being loaded once and cached, causing unnecessary API calls and UI flickering. Profile is now loaded once on app init and cached in state.
Pinot Devices REALTIME Table Missing for 13 Tenants
Orphaned ZooKeeper metadata from a previous partial table creation was blocking the management pod from creating REALTIME tables for 13 tenants on every restart (409 Conflict). Stale metadata cleared and table creation unblocked.
Dashboard Device Count Mismatch Between Pinot and Actual Devices
Device count on the dashboard pulled from Pinot did not match the real device count due to Kafka ingestion lag, missing upsert handling, or stale segments. Investigated and corrected Pinot REALTIME table sync.
MeshCentral Not Switching Display on Multi-Monitor After Initial Selection
After initially selecting a display in MeshCentral remote sessions, switching to a different monitor was not working. Fixed display switching behavior for multi-monitor setups.
Remote Control - All Inputs Broken When Single Screen Selected
Keyboard and mouse inputs stopped working entirely when a single screen was selected during remote control sessions. Input handling corrected for single-screen mode.
Remote Control Copy/Paste from Local to Remote Machine Not Working
Users could not paste clipboard content from their local machine into a remote Windows machine during remote control sessions. Clipboard sharing now works correctly without requiring the toggle workaround.
Remote Input Not Working on Some Windows Server Machines
Keyboard and mouse input was not being registered on certain machines (notably Windows Server) during remote control sessions. Input handling fixed for affected configurations.
MeshCentral Online/Offline Status Not Working on Windows Terminal Server
MeshCentral integration and online/offline status were not functioning correctly when running the OpenFrame client on Windows Terminal Server. Root cause investigated and resolved.
NATS Chat Reconnection Causing Chunk Loss During AI Streaming
NATS WebSocket reconnection on token refresh or network drop was losing streaming chunks mid-response, leaving chat stuck in typing state or losing approval request chunks. Chat chunk processor refactored to handle reconnection gracefully.
Chat Input Losing Auto-Focus While Mingo Is Thinking
The chat input field lost focus while Mingo was generating a response, requiring users to manually click the field before typing. Auto-focus is now maintained throughout the response cycle.
Inconsistent Approval Count Between Fae and Technician Chat
Fae client chat showed 1 pending approval while the Technician chat showed 2 for the same ticket after pressing Back and returning. Approval state is now consistent across both views.
Approval Request UI Remaining Visible After Switching to Direct Mode
Pending approval UI remained visible and interactive when switching to direct mode, allowing approval/rejection of actions that should no longer be pending. Switching to direct mode now immediately hides and cancels pending approvals.
Fix Redirect After Ticket Creation Using Router Replace
Post-ticket-creation redirect used router.push, polluting browser history so the back button returned to the create form. All ticket creation flows now use router.replace.
Command Title Changing on Block Expand in Chat Tool Blocks
Command titles in chat tool/command blocks were changing when the block was expanded. Title now remains stable on expand, and code inside tool blocks now renders with proper formatting.
Fix Hide Menu Element Animation in Navigation Bar
The 'Hide Menu' element in the navigation bar had incorrect text animation when expanding. Behavior and animation now aligned with other navigation elements.
Fix 'Back To' Button Navigating to Logical Parent Instead of Previously Visited Page
The 'Back to' button was navigating to the logical parent page rather than the previously visited page. Now correctly references and navigates to the actual previous page in the user's navigation history.
Fix Shared Kafka Retention
Corrected shared Kafka retention configuration to prevent unbounded topic growth and ensure proper message expiry.
Fix Log Rotation
Log rotation was not functioning correctly. Fixed to ensure logs are properly rotated and do not grow unbounded.
Fix Race Conditions in Release Version Publishing
Concurrent updates to OpenFrame client config and integrated tools config could cause race conditions during version publishing. Fixed to protect against concurrent updates while retaining NATS downtime retry logic.
Fix Token Budget Resolution on Page Reload
Token budget was not resolving correctly after a page reload, causing inconsistent AI context behavior. Fixed to correctly restore token budget state on reload.
Correct Archive Status Transition to Resolved Instead of Active
Archiving a ticket/entity was incorrectly transitioning status to Active instead of Resolved. Status transition logic corrected.
Fleet Deployment Timeout During Download
Fleet installation was failing due to a timeout during the download phase. Deployment configuration updated to resolve the timeout.
Tactical Offline on Windows Causing Crashes and Memory Corruption
Tactical RMM going offline on Windows was triggering crashes and memory corruption, likely related to self-exec behavior or EDR conflicts. Investigated and resolved.
MeshCentral Action Buttons Inconsistent Between Tickets and Devices Views
From the Tickets view, users could attempt remote connect to offline devices (which would fail), while the Devices view correctly disabled the action. Remote action buttons now behave consistently - offline devices have remote actions disabled in both views.
Dashboard Redirections Pointing to Wrong Pages
Active Chats and Resolved Chats links were not filtered correctly; metric cards (Avg Solve Time, Avg FAE Rate) were incorrectly navigable; organization name cards and device blocks were not linking to the correct filtered pages. All dashboard redirections corrected.
Improvements55
GraphQL API Made Relay-Compliant (DGS Schema)
Frontend adoption of Relay required full Relay Server Specification compliance. Added Node interface with global IDs, base64-encoded entity IDs, Relay Connection spec with PageInfo/hasPreviousPage/startCursor, and a root node query with type-routing datafetcher.
Redesigned Delete Device Button with Uninstall Command Popup
Removed the separate Uninstall button - only 'Delete' remains. Clicking Delete now shows a confirmation modal containing the agent uninstall command to run on the endpoint before removal, aligned with the updated design system.
Token-Based Chat Context Management
Chat memory system refactored from message-count-based to token-count-based context management for both Mingo and Fae. Enables smarter, more accurate context retention and supports per-model configurable context sizes. Deprecated message-based memory code removed.
Async Context Compaction on First Session Message
Context compaction now runs asynchronously at the HTTP request level - requests return immediately while compaction runs in the background. The AI chain still executes strictly after compaction completes, preserving correctness while eliminating blocking latency.
Token Usage Tracking and Display for Mingo and Fae
Token usage is now returned separately for each chat type (Mingo and Fae) in API responses and displayed on the Admin Dashboard with human-readable model names (e.g., 'Claude Sonnet 4.6' instead of raw identifiers).
Stop Functionality for Mingo and Fae AI Assistants
Users can now interrupt and cancel ongoing AI responses for both Mingo and Fae. The stop button is automatically disabled during context compaction to prevent context corruption.
Debezium Health Check with Auto-Recovery Logic
Debezium health check job enhanced with automatic recovery and connector recreation logic in case of connector failures, improving CDC pipeline resilience.
Pinot Migrated to Shared Multi-Tenant Tables
Pinot data storage migrated from per-tenant tables (2 tables per tenant, growing linearly) to 2 shared multi-tenant tables for all tenants, with tenantId field for query filtering. Dramatically simplifies infrastructure and improves resource utilization.
Redis Migrated from Single Instance to Cluster Mode
Redis migrated to Cluster mode for high availability, scalability, and data partitioning. Helm charts, application connection configs, and all services updated to use cluster-aware Redis clients. Redis unified and standardized across Fleet, Tactical, and Authentic services, with Tactical Redis upgraded to 7.4.2.
Separate Reactive and Sync MongoDB Dependencies per Service
Audited all microservices to eliminate duplicate MongoClients caused by pulling both sync and reactive MongoDB starters. Each service now depends only on the stack it actually uses, reducing unnecessary connections.
Mongock Library Integrated for MongoDB Migrations in Management Service
Mongock provides a Flyway/Liquibase-style versioned, auditable migration framework for MongoDB in the Management Service, replacing error-prone manual or ad-hoc migration scripts.
Tactical RMM Frontend Migrated to Fork
Tactical RMM frontend and Docker images migrated to OpenFrame's forked versions, providing full control over UI customization, patches, and release cycle.
Tactical Nginx Functionality Migrated to Tenant Gateway
Nginx routing previously used by Tactical RMM consolidated into the tenant gateway, reducing infrastructure complexity and simplifying routing management.
Fleet Query and Policy Result Storage Optimization
Configured Fleet's built-in result rotation/retention settings and enforced minimum query execution intervals to prevent database bloat and performance degradation from excessive query/policy result accumulation.
DNS Cache Disabled for All Agents
DNS caching disabled across all agents to prevent connection failures from stale DNS records. Each request now performs a fresh DNS lookup, improving NATS connection reliability.
OSquery and OpenFrame Client Version Checks
Version check functionality added for both OSquery and the OpenFrame client to surface outdated installations. Gracefully skips the check if the OpenFrame client is absent on a machine.
Fleet Policy Deploying Status Indicator
Policies now show a 'Deploying' status indicator when the Fleet agent has not yet completed registration on a device, preventing confusion when policies are assigned but not yet active.
MeshAgent Timestamps Added to Logs
Timestamps added to MeshAgent logs to improve observability and enable time-based root cause analysis for intermittent Mesh connection drops.
Client Version Shown at Agents Tab on Initial Install
The OpenFrame Client version is now captured and displayed in the Agents tab immediately after installation, not only after a self-update. The --version parameter is passed during install command generation and stored during machine registration.
Deploying Status for Fleet Registration on Policies
Added a 'Deploying' status indicator on policies when the Fleet agent has not yet registered on the device, giving technicians clear visibility into policy deployment state.
Cluster Autoscaling Utilization Optimized
Cluster autoscaling configuration tuned to improve resource utilization and reduce unnecessary node provisioning.
Shared Primary and Pod Subnet Ranges Increased
Shared cluster primary ranges expanded from /24 to /20 and pod ranges from /20 to /19 (with further expansion to /17 planned for tenant-per-namespace migration) to address 50% subnet consumption.
Frontend Build Optimized with Locked Dependencies
Dependency versions locked and Dockerfile updated to build the frontend with pre-resolved dependencies, improving build reproducibility and reducing build times.
Server-Side Centralized Config for Frontend
Added server-side centralized configuration for the frontend, enabling environment-specific settings without frontend redeployment.
Tenant Bucket CORS Configured for Stage and Production
CORS settings configured on GCS tenant buckets for both staging and production environments to allow proper cross-origin access from the frontend.
Unified DB Backup Bucket Created
Centralized database backup bucket established for consolidated, manageable backup storage across services.
CODEOWNERS Configured for /manifests and /configs
GitHub CODEOWNERS file configured to enforce required code review for changes to /manifests and /configs directories, ensuring infrastructure and configuration changes are reviewed by appropriate team members.
Vercel API Keys Updated
API keys for Vercel integration updated to maintain deployment pipeline continuity.
Fae App Icon Updated with System Tray Persistence
Fae desktop app icon replaced with the OpenFrame icon. System tray icon now persists when the user closes the app window, since the agent continues running in the background.
Fae - Back Button to Home Screen
Added a clear 'Back' button to the Fae chat interface allowing users to intuitively return to the home screen.
Fae and Mingo Emoji Disabled
Emoji output disabled for both Fae and Mingo AI assistants for a more professional communication style.
AI Loader Shown During Streaming
A loading indicator is now displayed while AI responses are streaming, providing clear visual feedback that the assistant is actively generating a response.
Chat Chunks Processor Refactored
Chat chunks processor refactored for improved code quality, maintainability, and performance, including better handling of NATS reconnection scenarios.
Organization Details Page Redesigned with Tabs
Organization Details page simplified and restructured with tabs: Devices, Tickets, Logs, and Organization Details. Create and Edit Organization forms updated to match the redesigned layout.
'Organization' Renamed to 'Customer' Across the Platform
All references to 'Organization' replaced with 'Customer' across frontend labels, headings, tooltips, navigation, API endpoints, models, and DTOs for clearer MSP-oriented terminology.
Open in New Tab Support for Tables and Action Buttons
Tables and action buttons across the platform updated to support opening records in a new tab via a primary icon button (right-up arrow), while clicking the row cell opens in the same tab.
Standardized Date Format (mm/dd/yy) Across the Platform
All date displays audited and updated to use a consistent mm/dd/yy format across billing, device details, monitoring queries, and other locations.
Global UI Polish - Buttons, Chevrons, Tab Gradients, Tooltips, Toast Notifications
Comprehensive UI polish pass: button paddings standardized (16px L/R desktop, 12px mobile; 48×48px icon-only desktop), chevron buttons added to all drill-down table rows, fade gradient added to tab selectors, tooltip alignment corrected, and toast notifications added for user feedback on actions.
Table Component Fixes - Paddings, Header Cells, OS Icons
Removed incorrect paddings from table card block components. All header cells are now fully clickable for sorting and filtering. OS icons standardized to 24×24px on desktop and tablet.
Fix 'Add Users' Modal Spacing, Fonts, and Stroke
Spacing, fonts, and stroke in the 'Add Users' modal corrected to match the design system.
Organization Images Fixed to 80×80px on Organizations Page
Organization images on the Organizations page now correctly render at the specified 80×80px dimensions.
Device Details Disk Info Block Padding Fixed
Incorrect paddings inside disk info blocks on the Device Details page corrected, with spacing between blocks and section titles verified against design.
Button Paddings and Disabled State Icons Refactored
Button component fully refactored: vertical padding set to 16px (12px mobile), icon-only buttons made square at 48×48px (44×44px mobile), and disabled button icons now use soft-grey (#3A3A3A).
Run Script and Remote Control Button Positions Swapped
Remote Control button moved to the more prominent position (previously occupied by Run Script) since it is the more frequently used action.
MeshCentral Action Buttons Unified Across Tickets and Devices Views
Remote connect and other MeshCentral action buttons now behave consistently between Tickets and Devices views - offline devices have remote actions disabled regardless of entry point.
Pinot Regression Tests Added to Monitoring Suite
Regression tests added covering all Pinot-related GraphQL calls for devices, validating that data returned from Pinot matches MongoDB source of truth for counts and key data points.
Automation Test Coverage - Device, Scripts, Policies, Scheduled Scripts, Remote Control, Remote Shell, File Manager, Device Tags, Tickets
Comprehensive automation test coverage added across: device add/read/uninstall (VM), script search/run/bulk/env vars/arguments, policies, scheduled scripts, remote control, remote shell, file manager, device tags (CRUD, assign/unassign, filter), and ticket workflows. Browser added to test container for Playwright/Selenium support.
Mongock Data Migration for Existing Dialogs to Tickets Collection
Per-tenant data migration backfills the tickets collection from existing dialogs on every tenant DB of the shared MongoDB cluster. Idempotent - re-runs are safe via duplicate-key blocking.
Counting Active Tenant Devices Synchronized with Shared Cluster
Active device counts per tenant are now correctly synchronized with the shared cluster, ensuring accurate billing and dashboard metrics.
Calculating and Tracking Used AI Tokens
AI token consumption is now calculated and tracked per tenant, supporting usage-based billing and quota enforcement.
Discount Management via HubSpot Integration
Discount management capabilities integrated through HubSpot, enabling sales and operations teams to manage customer discounts from within the CRM.
Scripting End-to-End Functionality Restored
The scripting feature was broken or incomplete. Full end-to-end functionality restored covering execution, error handling, and all missing pieces for reliable operation in practice.
Rename 'Filter Tags' to 'Device Tags' Across All Pages
Updated the 'Filter Tags' button label to 'Device Tags' across all relevant pages including organization device lists, devices list, archived devices, script modals, monitoring, and more.
Column-Based Ticket Board View
New Kanban-style column-based board view for tickets, enabling visual workflow management across ticket status columns.
Investigate and Address Growth in Old MeshCentral Agents
Investigated the significant increase in old MeshCentral agents (34 → 120) following the last release. Root cause identified across auto-update triggering, new agent installs with outdated versions, and legacy agent upgrade paths.
Related Links