OpenFrame v0.8.14 - PSA, Knowledge Management & Device Tagging

Version: 0.8.14

MSPAUTOMATIONPLATFORM UPDATESOPENFRAMEPSATICKETINGRMMAI AGENTSAI HELP DESKKNOWLEDGE MANAGEMENT

MAJOR

Release Type

BETA

Release Status

May 19, 2026

Release Date

Michael Assraf

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 Added
15

  • Extended PSA Platform with Mingo & Fae AI Assistants

    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.

  • 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 Fixed
32

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

Improvements
55

  • 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

Github Release0.8.14