Profinity 2.3 release notes
Profinity 2.3 introduces commercial editions with offline licensing, Profinity AI, derived tags, publishers and subscribers, role-based security with single sign-on and two-factor authentication, a visual dashboard editor, and the Profinity Mobile app.
It also changes where Profinity stores data on Linux, how /api/v2 reports errors, and which features an instance without a licence can use.
Anyone upgrading from 2.2 should read Upgrade from Profinity 2.2 and Profinity 2.3 breaking changes before they upgrade a production system.
Changes after this release are in the Profinity 2.3.2 release notes.
This release is for operators, administrators, integrators, and OEMs who deploy Profinity on Windows, Linux, macOS, and Docker.
What is new
Editions and licensing
Profinity 2.3 limits commercial features by edition (Desktop, Server, and Enterprise) using a signed licence file that Profinity validates offline, with no activation service. An instance with no valid licence is unlicensed: it keeps the core product (the local web interface, the REST API, tags, dashboards, rules, device components, CAN utilities and file loggers) and loses the features that need an edition. A new installation that is not a Desktop host starts a one-time 14-day local trial with Server edition features (on builds that offer it), and drops to the unlicensed set when the trial ends. Remote web access, user and role administration, two-factor authentication, Profinity AI, the Email, Slack, Webhook, and MQTT rule actions and the data relay components need the Server edition, and single sign-on and SCIM provisioning need Enterprise. The ADMIN > License page shows the state, the edition, the machine fingerprint to send to Prohelion, and what each feature is blocked by. Refer to Licensing for the full feature table.
Profinity AI
Profinity AI adds a chat assistant inside the web interface that answers questions about a running instance by reading live tags, alert rules and alert history, and answers how-to questions from the Profinity documentation. An administrator configures one provider for the whole instance under ADMIN > System Configuration, and users with the Profinity AI permission open the chat from the Profinity AI entry in the side menu. The built-in MCP (Model Context Protocol) server lets other AI tools read the same data, and AI Skills packs help Claude Code, Cursor, Codex, and ChatGPT build dashboards, rules, collections, derived tags and scripts against your instance. Profinity AI and the MCP server need the Server edition. Refer to Profinity AI, AI Skills, and MCP Server.
Derived tags
A derived tag is a tag whose value Profinity calculates from an expression over other tags. It appears in the tag tree and behaves like any other tag for dashboards, rules, history, and the API. Derived tags are created in the Derived Tags editor in the tag utilities menu, and are included in every edition. Refer to Derived Tags.
Publishers and subscribers
The MQTT Publisher and the new Webhook Publisher push the values of a tag collection to a broker or a URL, and the MQTT Subscriber receives Sparkplug B data into read-only tags. The MQTT Logger is now the MQTT Publisher, and the Email, Slack, Webhook, and MQTT rule actions send a message when a rule fires. These components need the Server edition. Refer to MQTT Publisher, Webhook Publisher, and MQTT Subscriber.
Security and identity
Profinity 2.3 replaces security groups with role-based access control (RBAC): each user is assigned roles, each role holds a list of the 27 available permissions, and changing a user's roles or a role's permissions revokes that user's active sessions. A site chooses one sign-in method, Local or SSO, and a Local site can require two-factor authentication for every local user, with recovery codes and an optional remember-this-device period. Administrators can reset another user's password or two-factor enrolment, and service accounts with long-lived tokens support automation and MCP. Component and collection visibility lets an administrator hide a component or tag collection from chosen roles, and the password policy and session policy are set under ADMIN > System Configuration. Firmware passcodes are no longer saved in the profile, and users enter them when they unlock a component's firmware. Refer to Roles and Permissions, SSO and Sign-In, and Component and Collection Security.
Tags, rules, and alerts
The tag layer adds the Tag Explorer for browsing the tag catalogue with quality indicators, visual editors for collections and rules, and an Alerts Log with Active and History tabs, live indicators on dashboards and in the Tag Explorer, and dwell and deadband evaluation.
A rule can run a script on alert (C#, Python or Lua), and the script receives the tags that triggered the rule.
Rule scripts and the Email, Slack, Webhook, and MQTT actions need the Server edition.
Tag paths can now be absolute (starting with /) or relative to a component, and the Tag tree path setting mounts a component under a parent path.
Refer to Tags, Alerts, and Tag Tree Path.
Stale tags, quality in logs, and CAN Milliseconds Valid of -1 and 0 are in the Profinity 2.3.2 release notes.
Components, plugins, and dashboards
The Plugin Manager under ADMIN > Components & Plugins uploads, enables, disables, and reloads external DLL plugins (.nupkg or zip).
Custom Components support actions, firmware scripts and settings maps, and profinity-component-pack packs them for installation.
The Dashboard component is a YAML-only profile component, and a menu layout editor places profiles and components in the side menu.
The visual editor is now the main way to edit dashboards: add, arrange, and bind widgets in DESIGN mode, with the YAML tab as a fallback, and existing YAML dashboards keep working and open in the visual editor.
Charts accept several data sources, and map bindings take latitude and longitude.
Refer to Visual Editor, Components and Plugins, and Component Pack CLI.
Every component that holds a connection now starts even when the other end is down, shows Error with the reason in the log, and connects by itself when the broker, device, server, or database appears, including after a rejected login is corrected. Refer to Connections and Reconnecting.
Installation and mobile
Linux and macOS installs use a one-script installer (install.sh) and update.sh, with archives for each processor architecture, and Prohelion publishes a Docker image for linux/amd64, linux/arm64 and linux/arm/v7.
On Linux the default data directory is now /var/lib/prohelion/profinity, and PROFINITY_HOME overrides it on every platform.
Profinity Mobile for iOS and Android finds servers on the local network through a UDP heartbeat (port 49025 by default) and signs in with a password or a Kiosk Mode user.
Refer to Linux and macOS Installation, Docker Installation, Artefacts Directory, and Profinity Mobile.
Known issues
- Tag Relay shares live tags between Profinity instances and needs the Data Relay feature on both instances. It exports a sender's full tag tree with no field-level filtering, and a single path collision rejects the whole batch from that sender. Refer to Tag Relay.
- Reciprocal tag linking, such as adding a rule from the collections editor context menu, is not available in 2.3, although the Tag Explorer context menu flows work.
- Publishing plugins to a NuGet feed is not available in 2.3, so install a local
.nupkgor zip through the Plugin Manager. - The central firmware updater is not part of 2.3. Each component flashes its own firmware.
- Android emulators cannot receive local network UDP heartbeat broadcasts, so test mobile discovery on a physical device. Refer to Profinity Mobile.