Gravio HubKit / Gravio Studio Change Log
This page summarizes the main changes in each release of Gravio HubKit and Gravio Studio (Windows / Mac).
Table of Contents
Gravio HubKit
6.4.0 (November 9, 2026)
Before you update
- Some components change in ways that affect existing Actions. In particular, check how File Delete handles folders and the renamed and retyped output variables.
- After the update you are signed out of the Web UI once. Please sign in again.
- The Mac version now requires macOS 15.8 or later.
New Features
Web UI: MCP Client Setup Guide
The Account Management page can now show the steps for connecting to the HubKit MCP Server with a personal access token.
- Shows the configuration for Claude Desktop, Cursor and other MCP clients (Streamable HTTP), ready to copy
- On Windows and Mac hubs, you can download a Claude Desktop extension file (
.mcpb). The token is not stored in the file; you enter it when installing - The HubKit MCP Server can now also be used on Linux and Gravio Hub X64. From PCs other than the hub, connect to
https://<hub address>/mcp(example)
Gravio Hub X64: Network Access Settings
Added a "Network Access" section to the Gravio Hub Settings (administrators only). For each service that other machines on the network can reach, it shows whether the service is listening and what the firewall allows, and lets you open or close its port. Closed ports stay closed across restarts and updates.
- Services covered: Web UI and Gravio Studio (HTTPS), SSH, the Hub API that needs no login, the App Service public listener, i-PRO camera events, the MQTT broker and the MCP server
- Opening and closing ports requires the newer OS image with the host firewall (you can move to it with "OS Update" below). The MCP server can be switched on and off on any OS image
- A warning is shown for WAN port-forwarding rules that expose the unauthenticated Hub API (29442), or port 443 while its API can be used without signing in
Gravio Hub X64: OS Update (Disk Layout Migration)
A Gravio Hub X64 with the old disk layout can now move, without a USB stick, to the current OS image with a recovery partition and a host firewall. From the Gravio Hub Settings you can run the check, download the new OS, save a backup to your PC, start the update, and follow its progress and result.
- The Hub ID, Hub settings and network settings are carried over
- If the Hub data exceeds 4 GB, logs, camera images and videos, sensor data history, AI models and files saved by Actions are not carried over. Save a PC backup before updating and restore it afterwards with "HubKit Data Import"
- The Hub restarts twice during the update and is unavailable for usually 5 to 15 minutes (about 30 minutes with a lot of data). Do not turn the power off until the update finishes
- After the update, the firewall blocks connections from other machines except on the allowed ports, which are listed on the screen before you start
Cameras: ONVIF over HTTPS and IPv6
- ONVIF cameras can now be reached over HTTPS and at IPv6 addresses
- Added an
Insecureoption to RTSP sources that skips TLS certificate verification - The default port for
rtsps://is now 322
Function Specification API
Added GET /api/action/spec/functions, which returns the functions available in Action flow expressions with their argument and return types. The HubKit MCP server now reads this list too, so AI clients are offered only the functions the hub actually supports.
Changes and Improvements
File Delete: Wildcards and a Change in Folder Handling
The File Delete component has been reworked.
- File names can now contain wildcards (
*,?, etc.). Separate multiple patterns with semicolons (;) - Added a
Foldersproperty that sets what happens when a pattern matches a folderSkip(default): leave the folder in placeStop: stop the Action with an errorDelete: delete the folder and its contents
- The deleted paths are available as
cv.Deleted, and the skipped folders ascv.Skipped - The Action data folder itself, and anything outside it, cannot be deleted
Earlier versions deleted a folder and its contents when the given path was a folder. Since 6.4.0 does not delete folders by default, set Folders to Delete in Actions that rely on folders being deleted. The old All property is no longer used.
Output Variable Names Unified
The output variables of the following components now start with a capital letter.
- Claude:
id→Id,model→Model,stop_reason→StopReason,stop_sequence→StopSequence,input_tokens→InputTokens,output_tokens→OutputTokens - Standard LLM:
model→Model,input_tokens→InputTokens,output_tokens→OutputTokens,finish_reason→FinishReason,reasoning→Reasoning - Microsoft Drive Upload / SharePoint Upload:
fileURL→FileURL,fileId→FileId,fileName→FileName - Gemini / OpenAIChat:
FinshReasons→FinishReasons(spelling corrected)
6.4.0 still outputs the variables under their old names as well, but they will be removed in a future release.
Output Variable Types Unified
The following output variables now always return the same type, whatever the number of results or the output format. They are not output in the old form, so please check Actions that use them.
- OpenAIChat:
cv.FinishReasons,cv.MessageNamesandcv.MessageRolesare always arrays, even with a single choice (previously a single value in that case) - Statistics:
cv.Statisticsis always an array (previously a single value when the target value was not an array) - Exec:
cv.Stderris always a string (previously a byte array when the output format was binary)
IVAR Integration Retired
The integration with IVAR (a third-party video analytics engine) has been retired. New layers can no longer use the IVAR data kinds (face recognition, people counting, etc.), and the API for registering and configuring IVAR servers (/ivar/*) has been removed. Existing IVAR layers and their recorded data can still be viewed, but new events from IVAR are no longer received. The i-PRO camera integration remains available as before.
CSV File Write: New Header Property
Added a Header property that writes a header row as the first line when the file is created or overwritten (when Append is off). Specify it as a comma-separated string or as an array. No header is written when appending. When left empty (the default), the output has no header, as before.
Function: Number Formatting in Sprintf
Sprintf now converts each number to the type its format verb (%d, %f, %x, etc.) expects. Previously, depending on whether a number was held internally as an integer or a decimal, it could be formatted incorrectly; for example, Sprintf("%d", 42) returned %!d(float64=42).
AI Components: Decimal Values for Temperature and Similar Parameters
Temperature, Top-P and similar parameters of Amazon Nova, OpenAIChat, OpenAICompletion, OpenAIAudio and OpenAITextEdit now accept decimal values such as 0.7 (previously whole numbers only).
Internal Services Listen on the Hub Only
To improve security, services used only inside the hub now accept connections from the hub itself only.
- IVAR Manager (29448): Only i-PRO camera events are accepted from other machines
- MCP server (29454): MCP clients on other PCs should connect to
https://<hub address>/mcp(example)
Windows Version Changes
- The tray app (Gravio Tools) now shows when services are stopping, lets you toggle services with the keyboard, and starts automatically after a PC restart without a UAC prompt
- HubKit services now restart automatically if they stop unexpectedly
- During installation, the installer backs up the databases of all services and keeps the latest three backups
- Fixed an issue where the OS version could not be read on Windows 11
Mac Version Changes
- macOS 15.8 or later is now required
/usr/local/binis now first on each service'sPATH, andHOMEis set, so commands run from the Exec component and others are found the same way as on Linux
Other
- Fixed an issue where a mapping consisting only of
$made the Action run fail - Fixed an issue where JSON strings sent to a String layer through an MQTT webhook were not decoded correctly
- Fixed an issue where timer triggers with a schedule that could not be parsed (such as a time zone alone) were saved and made the Trigger Manager crash. They are now rejected when saving
- Fixed an issue where the additional conditions of event triggers were not validated, so invalid conditions could be saved
- Fixed an issue where Actions whose ID contains a backslash (
\) could not be opened, saved or deleted - Gravio Hub X64:
- When Wi-Fi AP mode was started as the fallback for having no uplink, the hub now retries its uplinks at startup
- When the hotspot is down but AP mode is set to start at the next Hub start, this is now shown and can be stopped
6.3.2 (August 18, 2026)
New Features
Standard LLM Component
Added a new general-purpose LLM action component that calls LLM servers and services exposing an OpenAI-compatible or Anthropic-compatible API endpoint.
- A single component covers everything from open-source LLMs running locally (Ollama, LM Studio, vLLM, etc.) to cloud services such as OpenRouter and Groq
- Supports multimodal input via file attachments such as images (multiple files supported)
- Response format can be set to
text,json_object, orjson_schema(json_objectis not supported by Anthropic-compatible APIs) - Supports additional parameters such as temperature, Top-P, stop sequences and seed, and exposes the model's reasoning content as a component variable
See Action Reference: Standard LLM for details.
Web UI: Let's Encrypt Automatic Issuance and Renewal in Certificate Settings
Server certificates can now be automatically obtained and renewed via Let's Encrypt from the certificate settings in the Web UI.
Gravio Hub X64 Enhancements
- Start/stop AP mode (hotspot): The Gravio Hub's AP mode can now be started and stopped from the Hub settings tab in the Web UI
- WAN connectivity via LTE USB dongles: Added WAN support for the SWD01 and Soracom Onyx (SC-QGLC4-C1) LTE USB dongles. Wi-Fi acts as the primary uplink with LTE as the fallback, and the Web UI provides a toggle to switch between them
- On-demand ON/OFF for Tailscale remote access: Tailscale remote access can now be switched on and off on demand from the Web UI (Gravio Hub X64 only). The connection persists across reboots
Changes and Improvements
Gravio Matrix Gen2 Display: Enhanced Image Support
- In addition to 32-bit, 8-bit, 16-bit (5-5-5 / 5-6-5) and 24-bit BMP files are now supported. They are automatically converted to 32-bit format for display (compressed BMPs are not supported)
- Added a new "Other" image type that automatically converts PNG / JPG files to GIF for display
Fixes
- Fixed an issue where cameras were not listed in the bind-device dialog for inference layers
6.3.0 (May 20, 2026)
How to update the Mac version of Gravio HubKit
Due to a change in the installer mechanism, for this release only, please download the DMG from the gravio.com website and install it on top of your existing copy. Before overwriting, stop Gravio HubKit and quit the toolbar app first.
New Features
Gravio Matrix Gen2 Components
Three new action components have been added for the second-generation Gravio LED Matrix Gen2 device. Both HTTP and MQTT connections are supported.
- Gravio Matrix Gen2 Display: Displays text and images (GIF / BMP), including animated GIFs and customizable display areas (Simple / Advanced modes)
- Gravio Matrix Gen2 Control: Clear the screen, set brightness, or reboot the device
- Gravio Matrix Gen2 Template: Display sensor templates such as Temperature, Humidity, Barometric Pressure, CO2 Concentration, and Open/Close status
For the device-side connection setup procedure and the MQTT / HTTP protocol specifications, see Sensor and Device Connection Guide: Gravio LED Matrix Gen2.
Important: The Gravio Matrix (Gen1) and the Gravio LED Matrix Gen2 are completely different products with different hardware, connection methods, and device ID formats. Each device works only with its own components and they are not interchangeable.
- Gen1 device → original Gravio Matrix component only
- Gen2 device → the new Gravio Matrix Gen2 components above only
Simple Counter Components
Two new components have been added for managing integer counters persisted on the HubKit.
- Simple Counter (Read): Reads a stored counter value (
0if not set) - Simple Counter (Write): Increments or decrements a counter (configured via the
AdjustByproperty)
The variable scope can be either HubKit (shared across all actions on the installation) or ActionGlobal (shared only between runs of a specific .acs file). Values are persisted as Component Local State files under $ActionDataDirectory/storage/localState/, surviving across action executions.
Web UI: Feature Package Management
You can now create, apply, export, import, and remove feature packages (zip bundles of triggers, actions, and related resources) directly from the Web UI. Access this feature from the "Action Configuration" section of the Hub Management screen.
To protect sensitive data, enable the Exclude Base Property field values option when creating a package; tokens and credentials are then stripped from the package.
Web UI: Base Property Profiles
A new Web UI page has been added for centrally managing reusable settings such as credentials, connection endpoints, and API keys (Base Property Profiles). For OAuth2-based categories, an Obtain Token button launches the authorization flow directly from the form.
Web UI: Device Integration Settings (i-PRO / Webhook / MQTT Broker)
The device list area on the Hub Management screen now exposes buttons that open configuration dialogs for external device integrations.
- i-PRO: List, add, and edit i-PRO series cameras, and view the HubKit endpoint URLs to register on the camera side
- Webhook: Create webhook endpoints, configure payload format (
query-params/json) and authentication (None / BASIC), and copy the webhook URL - MQTT Broker: Create subscribe topic entries, register brokers, and configure QoS, Clean Session, timeouts, etc.
Webhook: Binary / Media File Reception
Webhook endpoints can now accept binary files (images, audio, video, etc.) in addition to JSON payloads, and persist them on the HubKit.
- File type detection order:
Content-Type→filenameextension fromContent-Disposition→ first 3 KB of the body (using mimetype) - Storage layout:
<endpoint-short-id>/<YYYYMMDD>/data-<timestamp>.<ext> - When
Content-Dispositionspecifies afilename, that value is used as the storage name (unsafe characters are replaced with_)
Functions: Add / Sub / DurationParse
The action flow expression language gains new built-in functions.
Add(x, y): Generic addition that handles numbers, strings, durations, times, and arrays (behavior is determined by the type of the left-hand side)Sub(x, y): Generic subtraction that handles numbers, durations, and times (arrays are not supported)DurationParse(s): Parses a Go-style duration string such as"300ms","-1.5h", or"2h45m"into a Duration
Changes and Improvements
Microsoft Exchange List Events
The component has been updated to align with the Microsoft Graph API POST /users/{id}/calendarView endpoint.
- Each instance of a recurring event is now returned
- The time-range filter has been consolidated into
Events Starting After(StartDateTime) andEvents Ending Before(EndDateTime).Events Starting BeforeandEvents Ending Afterhave been removed. - When neither
Events Happening TodaynorEvents Currently Ongoingis checked, bothEvents Starting AfterandEvents Ending Beforebecome required
Any existing actions relying on the old properties must be updated to use the new ones.
Sensor Data DB: ContinueOnEmpty Property
The Sensor Data DB component gained a new ContinueOnEmpty property that controls behavior when zero records are returned.
false(default): Stops the action when no records are returned (existing behavior)true: Emits an empty payload and lets the action continue executing
Split: JSON Object (Map) Input Support
When the input to the Split component is a JSON Object, each entry is now emitted as a { "Key": ..., "Value": ... } struct to the next component. Conditions can reference Value.Key and Value.Value.
Webhook: Filename Format Change
Filenames for files received through webhooks have been changed:
- Before:
webhook-<id>-<timestamp>.<ext> - After:
data-<timestamp>.<ext>
If you have actions that rely on the old pattern, please update them accordingly.
Webhook: Improved Error Messages
When a webhook endpoint receives a request using an HTTP method that does not match its configured payload format (query-params / json), the error response is now more specific and easier to act on.
Gravio Studio for Windows
6.3.4846 (August 18, 2026)
- Support for the component added in Gravio HubKit 6.3.2 (Standard LLM)
6.3.4837 (May 20, 2026)
New Features
Copy ID / Name Buttons
Added Copy ID / Copy Name buttons to the Area, Layer, Device and Triggers entries. These let you copy identifiers and names to the clipboard with one click, so you no longer need to retype device or area IDs when writing expressions in the Action editor.
Webhook: Binary / Media File Payload Support
You can now configure the new Webhook binary file reception feature (added in Gravio HubKit 6.3.0) directly from Gravio Studio. In addition to the existing query-params and json payload formats, endpoints can now be set up to accept binary payloads such as images, audio or video.
Changes and Improvements
Settings Menu: "Download Logs" and "Experimental Components" split
The previously combined Download Logs and Experimental Components entries on the Settings menu are now separate options. This reduces the chance of triggering one when you intended the other.
Notification Settings: Port 587 Placeholder
The port input field for notification (SMTP) settings now shows the common SMTP submission port 587 as its placeholder value.
Quick Run Console: Local Time Display
Action logs in the Quick Run console are now printed in the local time of the machine running Studio, making logs easier to follow when the server and client are in different time zones.
Gravio Studio for Mac
6.3.0 (May 20, 2026)
- Support for components added in Gravio HubKit 6.3.0