Version-by-version updates to the Grablo platform and controller.
A new product that does one thing: find people in the camera footage you have already recorded. There are no rules to build and no devices to wire up. Add a camera and it starts keeping a log, which you can then search in the four ways described below.
People and faces in the log are grouped automatically by who they are. Until now, finding someone meant you had to find them first; open the People tab and everyone who passed through in that period is already grouped. You can choose whether to group by face or by appearance, so shots taken from an angle where the face is not visible are still grouped by clothing and build. Name a person card and you can search by that name from then on.
Groups that are not certain are never merged on their own. Several photos are placed side by side and you are asked whether this is the same person. Only what you confirm is merged, and a pair you reject is not raised again. A merge cannot be undone, so check the photos before you decide.
Describe the scene you are looking for and it finds the closest records. Type something like “person in a red coat” and the matching entries are gathered for you. This works for people who were never enrolled by name.
Search by top and bottom colour, age range, glasses, patterns on the top, skirts and boots, carried items such as bags, and the direction a person is facing. Colour search can be set to include nearby shades, so someone is not missed when lighting changes how the colour looks.
While reviewing a record, press a person on screen and other records of that person are found for you. Searching by face needs no enrolled name, and searching by appearance takes clothing, build and carried items into account, so it works even from angles where the face cannot be seen.
Set the clip length to “while detected” instead of a fixed time and recording continues for as long as the condition holds, then stops when the situation ends. Use it when there is no way to know how long something will last. One camera can have one such recording at a time.
Searching thirty days of records now takes around half a second instead of about four. Even where a very large number of records has built up, searches that took over thirty seconds finish in around three. The list of enrolled faces also opens instantly.
Analysis now rests while there is no movement in the frame, which lightens the load on the device. You can also set how many times per second to analyse, from once to ten times, to suit the device and the scene.
Deleting a record also clears the data used to search for it, so the storage is genuinely reclaimed. The same applies when records are cleared automatically once their retention period has passed.
Several issues have been corrected together: analysis failing to start on a camera that connected late, the screen appearing to freeze briefly while many records were being written, and person grouping stopping partway through.
The camera view is now kept in a short rolling buffer, so when a condition triggers, the period before and after that moment is saved as a single video. What a single still image could never show, the run-up to the event, is now there from the seconds before it happened. The length of the pre-event and post-event segments can be set separately for each entry.
New actions let you start and stop recording whenever you want, independently of any condition. This is useful when a whole work session needs to be kept, and if power is lost mid-recording, everything written up to that point still plays back.
A play badge now sits on the thumbnail in the log list, and pressing it plays the video right there. Photos and videos can be paged through left and right in the same viewer, so there is no need to close the window and hunt for the entry again, and a video you have already received opens instantly the next time. The playback bar marks the moment the event occurred, so you know exactly where to look.
A logging action can now pick exactly which cameras and which values to record. If a person is seen on camera 1, for example, video from cameras 2 and 3 can be kept as well, which means cameras that take no part in the decision can still be recorded. Each entry can have its own targets and clip lengths, and existing configurations carry over unchanged.
You can now choose how it is decided that an object has entered a zone: the point where a person or vehicle meets the ground, the centre of the object, or the percentage of overlap with the zone. Previously only the centre point was used, so with an angled camera the decision drifted away from where the subject actually stood. Using the ground contact point keeps distant subjects accurate as well. Existing projects behave exactly as before.
The controller now remembers which logged scenes have been registered as training samples. Open the project on another PC or another browser and the ones already registered are still marked, so the same scene never goes in twice, and progress is shared when several people review together. Delete a sample on the training screen and that scene becomes available to register again.
As photos and videos accumulate and free space runs low, the oldest files are cleared automatically. Log entries themselves are kept and only the files are removed, so the record of what happened and when remains intact. There is nothing to configure, and files saved to a path you specified yourself are never touched.
Values that are hard to judge, such as quality and buffer size, are now chosen automatically to suit the camera and the device. All you set is where to save and how long the segments before and after the event should be. On devices with memory to spare, up to five minutes of pre-event footage can be held.
When the browser had been open for a long time, or after returning from another tab, the camera view could stay on connecting and only appear after a refresh. Cameras whose first frame takes a while to arrive could also fail to appear at all, and a stream that was already playing could fall back to connecting. All of these are fixed.
On PCs without graphics acceleration hardware and in virtual environments (Windows), a network camera could receive no frames at all and reconnect over and over. The available acceleration methods are now verified before use, and if none can be used the camera falls back to another method automatically.
Video saved by continuous recording could play back black for its entire length. This affected cameras whose frames are re-encoded before saving, such as USB webcams.
When events followed one another closely, videos were not saved per event: they cut each other short, and the most recent one would not play until the next event occurred. Each event now produces its own video with the full pre-event and post-event segments.
Deleting a log entry left its video files on disk. A related problem where only some of the photos were removed when an entry had several conditions is fixed as well.
Analysis could stall when a zone was drawn with a very large number of vertices.
Playing a video switched automatically to full screen, which hid the event marker on the playback bar.
On angled polygon regions the label floated in empty space far from the region it belonged to. The label is now attached to the topmost vertex of the shape, so it is immediately clear which region it names. Rectangular regions are unchanged.
Regions drawn as polygons were not labelled at all. With several regions in use it was impossible to tell them apart on screen; their names are now drawn as expected.
When a region sat against the top or right edge of the frame, its label ran outside the frame and was clipped or hidden entirely. Labels are now always kept inside the frame.
Regions were drawn in different colours depending on their shape, which made them easy to confuse with detection results. They now use a single colour regardless of shape, so detected objects and the regions you configured are easy to tell apart at a glance.
Analysis regions could previously only be rectangles. You can now draw them as polygons of any shape. For angled conveyors, walkways and similar scenes where a rectangle inevitably pulled in areas you did not want, you can now capture exactly the area you care about. This works the same way across every AI analysis.
While reviewing recorded scenes, if you spot something the AI judged incorrectly, you can register it as a training sample right there. Collecting what was missed and what was wrongly detected and training again lets you steadily improve accuracy. Available for image classification, anomaly detection and face enrollment.
The training screen now marks samples that were newly added and are not yet reflected in training. You can see at a glance what has come in and whether another training run is needed.
The anomaly detection training and registration screens now show the current score together with the decision boundary. You can see how far the current scene deviates from normal while you adjust sensitivity.
A data logging action can now select exactly which variables to record. You no longer need a separate store for each kind of entry — everything can be kept together, which makes setup much simpler. Existing configurations continue to work unchanged.
Anomaly detection now uses several processing cores together. The time needed to judge a single frame is greatly reduced, so video stays smooth even while analysis is running.
When highlighting areas judged to be anomalous, the surrounding area is now taken into account so isolated speckles are filtered out. Only the actual defect areas are shown, which makes the display much easier to read.
Text recognition results used to flicker slightly from frame to frame. Several frames are now considered together and only the most reliable result is emitted, so values stay stable despite hand shake or changing lighting.
When analyzing once on a trigger, the result from that moment could fail to reach the variable or an older value could remain. This has been corrected. When several actions share the same analysis, each result is now recorded accurately, and running alongside continuous analysis no longer interferes either way.
Face recognition ignored the analysis region you specified and searched the whole frame. It now searches only within the region you set.
Preview in the stopped state behaved differently from the values configured on the analyzer. Preview now runs with the same settings as the actual analysis, so what you confirm in preview carries over once you start running.
Several record-related problems have been corrected together: records that had just been written disappearing silently, past records not being viewable while stopped, and connections failing once many records had accumulated. The anomaly detection preview freezing, and defect highlighting being drawn on a different basis from the actual decision, have also been fixed.
Register a few example images from the camera and the device trains its own image classifier right on the device — no separate server or online training required. It learns directly on the device and tells your chosen categories apart on its own.
Train it on images of the normal state and it automatically spots anything unusual or defective. It’s well suited to tasks like visual product inspection, where you need to catch “anything that differs from normal.”
Register and manage the vehicle plates you want to allow, right on the device. You can add, remove, and list plates with aliases, and instantly check whether a recognized plate is registered — handy for parking and access control.
Enroll faces on the spot while watching the camera view, without stopping the program. You can manage enrollment photos and preview the recognition result before enrolling.
You can now use the audio from an IP camera or network stream as the input for audio analysis, speech recognition, and AI sound analysis. Set the stream address and, if needed, a username and password (credentials).
Send a signal at the moment you want and the AI runs the analysis just once, then records the result. You don’t have to leave analysis running continuously — it runs a single pass only when needed, for better efficiency.
You can now see the AI’s recognition confidence (%) live on screen.
You can now set your own display name for items exposed to Home Assistant.
If a network audio connection drops, it reconnects automatically so the sound input keeps flowing without interruption.
Communication and media devices now recover on their own from temporary errors. We also fixed several stability issues related to network audio and single-shot analysis.
AI chat, email, and Telegram notification actions can now attach several files at once. Previously only a single file could be sent; now you can send multiple photos, documents, and other files together. This works with fixed files as well as paths or variables that change depending on the situation.
When connecting multiple network (ONVIF) cameras, they now connect at the same time instead of waiting for each one in turn, so setups with several cameras are ready much faster. The controller also remembers each camera’s address and connects directly next time, so the first connection after a restart is quicker too. Cameras that do not respond are skipped faster so they no longer hold up the rest.
Fixed an issue where camera discovery could occasionally hang on Windows, and a rare case where a camera could appear as “not found” while several cameras were connecting at the same time. Overall connection stability has also been strengthened.
We rebuilt how ONVIF IP cameras are discovered and connected so it follows the standard more closely. Some cameras that were found but would not connect (such as certain Dahua models) now connect reliably, and non-camera devices such as NAS units are filtered out of the search results.
Fixed an issue where the database save action could store the same entry twice. We also improved stability when handling empty values and multi-row results.
The delay timer (PEND) now offers a “hold” option that keeps the output on for as long as the set condition stays true, letting you tailor timer behavior more precisely. The original timer was also cleaned up so it works exactly as intended.
You can now select and delete multiple recorded logs at once, and any captured photos or files stored with them are cleaned up together. The retention limit now also applies to manually recorded entries, and storage space is reclaimed automatically as logs are removed.
The face recognition enrollment list now shows the number of samples registered for each person. Invalid characters that could corrupt the list are also no longer allowed in names.
Fixed an issue where the live camera video could get stuck while connecting in certain situations. The app now detects this state and recovers on its own.
Improved detection of capture saves that could silently fail when storage was full, and corrected captures saved to subfolders as well as file-size calculation.
Fixed a rare error during video recognition processing for more stable operation.
Fixed an issue where detection boxes on the video could drag and leave a trailing afterimage between detections. Boxes now appear cleanly at a more accurate position.
When a project starts, only the files needed by the features you actually use are downloaded. Files for unused features are skipped, so projects start faster and lighter.
Fixed an issue where the voice announcement and speech recognition features could fail to load their voice models.
Fixed issues where MQTT message receiving and some Zigbee and Modbus device setups could fail to connect or run.
You can now select a specific area of the camera view to zoom into before recognition. Distant or small objects are detected more accurately because that area is enlarged first. This applies to all vision recognition, including objects, faces, pose, hands, color, QR codes, text, license plates, and fire detection. If no area is selected, the full screen is used as before.
The object detection engine has been replaced with a new one for higher accuracy. You can choose from three levels, Fast, Balanced, and Accurate, to match your environment.
A single command can now detect and filter several object types at once, such as people and cars together. The detection commands have also been simplified.
You can now set a detection rate for each analysis item to cut unnecessary processing and reduce device load. Detection boxes also stay smooth between detections, without flickering or trailing afterimages.
Images attached to push notifications are now automatically resized to fit the mobile notification banner, so alerts arrive faster and more reliably.
Face recognition, fire detection, and object/face detection results used to flicker on screen or switch on and off near the threshold. This release greatly reduces that. Instead of judging from a single frame, Grablo now combines several frames for a much steadier result.
Face recognition now shows a clearer three-state result — “No Face / Unknown / Registered Name” — and you can also view the list of enrolled faces.
Added a dedicated data folder where result files — such as face-recognition snapshots — can be stored safely. It works the same way on Windows, macOS, and Linux, and your saved files are kept even after you update or reinstall the program.
When a data log table holds saved images, you can now view both the thumbnail and the full-screen image directly from the table.
Images shown in full screen are now rendered to match your display resolution, so they look sharper — including on high-resolution displays such as 4K.
Fixed several issues with scheduled execution: a repeat-count schedule that ran one time fewer than set, monthly and yearly repeat schedules that never fired, and start/end times that are the same are now correctly treated as all day (24 hours).
When an action calls another action or control that has been turned off (disabled), Grablo now skips it smoothly instead of stopping with an error, so turning off a few items no longer halts the whole flow.
When you run a project, Grablo now prepares only the settings your project actually uses. Unused cameras, analyzers, and other settings are skipped at startup, so projects with many heavy settings start faster and use less memory and resources.
You can now install Grablo as a Home Assistant add-on or with Docker. When installed as a Home Assistant add-on, it connects automatically with no server address or credentials needed.
Improved camera reconnection stability and fixed several bugs, including handling of Windows folder paths that contain Korean (non-ASCII) characters.
You can now set the attachment file path for push notifications using variables or expressions, not just a fixed value. For example, you can combine the temporary folder path with a file name to automatically attach a file that is created freshly on each run.
Fixed an issue on Windows where paths containing Korean or other non-ASCII characters in folder or file names were not found correctly. Files in such paths are now read and saved properly. (Supported on Windows 10 and later.)
When using object, face, color, and anomaly detection in AI analysis actions, you can now set the detection zone directly in the main command, without a separate command. Draw a zone to analyze only that area, or leave it unset to analyze the whole screen. Your existing actions keep working as before.
Added a command that returns the system’s temporary folder path in file actions. It automatically uses the correct temporary folder for each operating system on Windows, macOS, and Linux, which is handy for saving files you only need briefly.
Fixed an issue where AI anomaly detection results were drawn misaligned in a corner of the screen, so they now appear accurately at the actual detected location.
Prevented several situations where the program could shut down unexpectedly due to abnormal input or external data, and strengthened the handling of variable save failures and file uploads. Normal use is unaffected.
You can now choose which area of the AI Camera view to analyze or capture. Create named regions in the camera settings, then select a region in your AI analyzers and image capture actions to process only the part you want.
Image capture now saves the clean original camera image, without the on-screen information (such as frame rate) and analysis overlays.
Fixed an issue where AI video analysis could stop under certain conditions, and corrected the misalignment between the analysis region and overlays when the view was rotated.
AI Camera pose analysis can now measure how far the neck is tilted to the side. Used together with the existing Spine Tilt, it lets you check posture more precisely.
Fixed an issue where some AI Camera analysis commands did not run.
When Grablo runs as a Modbus slave, communication is now handled on a dedicated background task for improved stability and responsiveness. Unexpected communication errors are cleaned up safely without affecting the rest of your setup, and unnecessary CPU usage while idle has been reduced.
Fixed an issue where connecting to a Modbus device could fail on some Windows systems. Modbus communication now connects correctly on Windows as well.
The automatic input formatting cleanup added in the previous update did not apply to some fields, such as Home Assistant addresses, camera addresses, and file paths. This has been corrected, so minor formatting differences are now tidied up across more setting fields.
Many input fields—addresses (URLs), file and folder paths, email, device ports, and more—now tidy up minor formatting differences automatically. Leading or trailing spaces and quotation marks that sneak in when you copy and paste are removed, and if you omit the http:// prefix in an address it is filled in for you. Email recipients can be separated by semicolons or line breaks as well as commas, and device MAC addresses can be entered without separators. This greatly reduces connection and execution failures caused by small input mistakes.
Fixed an issue where, in some cases, the entered Home Assistant address was not correctly applied to live entity and service lookups. Saving settings and live lookups now handle the address the same way.
We’ve greatly expanded the per-language models available in Speech-to-Text (STT) and Text-to-Speech (TTS). Speech recognition now supports English, Korean, Chinese, Japanese, German, Spanish, Portuguese, and Russian, plus a new multilingual model that recognizes Korean, Chinese, Japanese, English, and Cantonese all at once. Speech synthesis adds new voices for English, Chinese, German, French, Portuguese, and Hindi. You can also specify your own model if it isn’t in the list.
Speech-to-Text (STT) now lets you choose the audio input source. In addition to the microphone, you can select the sound played through the device (speaker output) as the recognition target, making it easy to transcribe audio that is currently playing.
A new action type LLM AI Query has been added. Send a query text (prompt) to LLM providers such as OpenAI, Anthropic, Google Gemini, Ollama, and OpenAI Compatible, and store the response in a variable. Image attachments (JPEG/PNG/WebP) are supported by all providers; PDFs are supported by OpenAI and Anthropic. Attached images are automatically downscaled to speed up transfers and reduce cost. Register each provider’s API key and model in [Setting] > [LLM AI] before use.
The push notification action now supports file attachments. Captured images or document files can be delivered alongside the notification.
Fixed an issue where reading text files on Windows could produce a misleading “File read error: No error” message. The Windows C runtime performs CRLF→LF translation in text mode, so the actual number of bytes read can be smaller than the requested size at end-of-file, which previously tripped a false-positive error path. EOF is no longer treated as an error — only genuine I/O failures are reported. The underlying file read/write behavior is unchanged.
License Plate Recognition (LPR) now supports FAST and ACCURATE quality presets. FAST suits low-power boards like the Raspberry Pi 4, while ACCURATE targets mini PCs and amd64 environments. The Korean plate model has been replaced with a v2 model reaching 99.3% measured recognition accuracy.
Each data logging channel’s automatic interval recording can now be toggled on or off, and a new action type (data logging) records the channel once. This enables trigger-based snapshots such as event-driven logging.
Fixed an issue where Grablo failed to detect a dropped Home Assistant session after an HA restart, requiring a STOP→RUN cycle to recover. An RFC 6455 PING/PONG heartbeat every 30 seconds now detects dead sessions and reconnects automatically within about 30 seconds.
System asset files referenced by legacy gallery example projects (v0.x~v1.2.x) via absolute paths are now bundled directly into the Linux package. Imported legacy examples now work immediately without additional downloads. Bundled assets: SoundFont (TimGM6mb.sf2), sample media (sample.mid/mp3/wav/jpg), and OPC-UA certificates (cert.der/key.der).
Fixed an issue where the License Plate Recognition (LPR) “Confidence (%)” output variable reported values in the 0–1 range, inconsistent with the label’s “%” notation. It is now corrected to the 0–100 range, matching the scale of the “Min Confidence (%)” input. The confidence field in the “Scan All” JSON output is now unified to 0–100 as well.
The AI camera now supports automatic license plate recognition. Two models are available — Latin scripts (Europe, US, etc.) and Korean plates. The Latin model reaches about 97.4% plate accuracy on a 66-country validation set, and the Korean model reaches about 96.5%. Multi-frame majority voting automatically corrects single-frame misreads to deliver stable results. Models are downloaded on first use and continue to work offline thereafter.
Home Assistant initialization no longer blocks other modules from starting. The “Timeout” errors that previously appeared under heavy load (such as multiple cameras and AI features starting together) are gone — the action now shows “Connecting to server…” while the background connection completes, then resumes naturally once connected. The reconnection interval has also been shortened from 60 to 30 seconds.
If power is cut while AI models are being downloaded or extracted, the system automatically detects damaged model files on the next start and reinstalls them. No manual folder cleanup is required, and AI features such as line crossing, face recognition, and speech recognition resume normal operation on the next RUN.
Right after model downloads and archive extraction complete, data is now flushed to disk immediately. This significantly reduces the risk of file corruption from sudden power loss on SD-card environments such as Raspberry Pi.
AI camera analysis now uses about half the CPU compared with the previous version. Detection-box ghosting on screen is also gone, producing cleaner results.
Speech-to-text and audio classification automatically use the acceleration method best suited to each operating system and device. The same input now returns a faster response.
On newer chips such as Raspberry Pi 5 and Apple Silicon Mac, AI video analysis automatically uses a faster processing path. The same hardware can now analyze more frames in the same time.
Fixed an issue where camera recording or streaming could fail on systems with the latest system video library.
A new feature blocks attempts to fool face recognition with photos or videos shown on a screen. The system automatically tells real faces apart from on-screen images, providing safer use. You can turn this feature on or off to match your situation.
Movements of hands, feet, shoulders, and other body parts are now shown more smoothly. Jitter in the video is reduced, so motion looks much more natural.
When following a person or object on video, the system now stays locked on the same target even when the image briefly becomes unclear.
Fixed several minor issues that occurred during face enrollment and recognition.
You can now enroll multiple samples per person at different angles (front, left, right) or with different expressions. Recognition uses the best match among all enrolled samples, providing stable identification across various poses and expressions.
Fixed an issue where voice recognition, voice synthesis, and media playback could fail on Debian Trixie (13) or PipeWire-based Raspberry Pi OS releases. The installer now detects the user-session PipeWire audio socket automatically, so sound features work out of the box without any manual configuration.
The model used for voice recognition is now downloaded automatically the first time it is used instead of being bundled in the installer. The installer is smaller, so installation is faster.
Fire detection now analyzes video in finer detail, so small or distant flames are detected more reliably than before. You can also choose a precision mode for the camera analyzer (Fast / Balanced / Accurate).
Fixed an issue where remote video could remain frozen on a black screen after a brief network interruption. The video now resumes automatically once reconnected.
Closing the Zigbee device-add modal no longer stops device discovery, and devices currently being interviewed are now shown in the list so you can track progress.
The chart time picker has been redesigned in a Grafana-style unified UI — quick presets, calendar, and absolute datetime input are all available in one place, and ◀ ▶ buttons let you shift to the previous/next interval quickly. View settings such as chart type, time range, and Y-axis are now saved per widget and restored when reopened. In addition, continuously accumulating values such as energy or production count can be displayed as per-interval deltas (hourly, daily, monthly) in bar charts.
Raspberry Pi OS images with Grablo pre-installed are now available. Just flash to an SD card and boot.
Fixed issues where the frontend could get stuck on “Connecting…” after the controller restarted, and where closing the modal after a forced update would terminate the P2P connection.
Fixed an issue where the collection interval setting of the Data Log component was ignored and fell back to the 1-second default. The interval specified in the project is now respected exactly.
Improved how the camera recovers when the connection is briefly interrupted. Previously, accumulated transient errors could disable hardware-accelerated decoding or cause repeated reconnect attempts in rare cases. With this update, every reconnect starts from a clean state — the same pattern used by industrial NVR systems such as Frigate and go2rtc. For ONVIF-compatible cameras, an immediate keyframe request restores video within about 200 ms.
Unified the progress state between RUN cycle cloud downloads and Zigbee runtime installs into a single session. The modal now displays consistently across multiple tabs or after page refresh during download, and intermediate stage flicker has been eliminated.
The Zigbee runtime is now downloaded only when you actually use a Zigbee dongle. Users who don’t use Zigbee benefit from a ~30 MB smaller installer, and first-time Zigbee users get the required files automatically downloaded at the moment they need them. The download is cached for instant startup on subsequent runs. Existing Zigbee users are unaffected — the runtime continues to work as before with no extra download.
Resolved rare crashes in modules that rely on external libraries — STT (speech-to-text), TTS (text-to-speech), Modbus, OPC UA. Also fixed a crash that could occur during ONVIF camera auto-discovery on networks with unusual configurations.
Reduced cases where tracking IDs would incorrectly swap when people or objects were temporarily occluded. Tracking-based features such as pedestrian line counting are now more accurate.
RTSP and USB cameras now display reliably on macOS. Resolves cases where some cameras showed gray/green frames or distorted colors.
When an RTSP/ONVIF camera fails to connect right after the controller starts, Grablo now automatically retries once. Connection success rate is noticeably higher.
Starting with 1.8.2, the 32-bit Raspberry Pi OS (armhf) build is no longer distributed. Users on Raspberry Pi 3 or newer should switch to the 64-bit Raspberry Pi OS (arm64) and use the arm64 build. Users on Pi 0/Zero/Pi 2 can continue using 1.8.1.
The frontend now reconnects faster and more reliably after controller restarts, upgrades, or transient network drops. Resolves the previous “Connecting” stuck state — video resumes within 5–15 seconds once the controller is back up.
Fixed an issue where, when streaming two or more cameras simultaneously, only one camera would resume or others would take much longer. After minimizing the browser or returning the mobile app from the background, all cameras now resume immediately and concurrently.
The runtime now auto-detects the host hardware and selects the best H.264 encoder/decoder. Leverages macOS VideoToolbox, NVIDIA NVENC/NVDEC, Intel Quick Sync, Raspberry Pi BCM2711 V4L2 M2M, Rockchip MPP, and others to minimize CPU load.
Fixed encoder init races during rapid RUN/STOP cycles, permanent stuck states caused by SRTP replay detection on quick reconnects, and various other streaming stability issues.
Connect to Home Assistant in real time. Link multiple Home Assistant servers at once, control smart-home sensors, switches, and lights directly from Grablo, or expose Grablo variables to Home Assistant.
Automatically detects and recovers when the Zigbee dongle is unplugged and reconnected or when the Zigbee service stops unexpectedly. Normal operation resumes without user intervention.
Turn GPU acceleration on or off per AI analysis model. Choose CPU or GPU for each model based on your hardware situation or the performance balance with other tasks.
Connect over 3,400 types of Zigbee devices — including smart lights, temperature/humidity sensors, switches, and buttons — directly to Grablo. Add devices discovered in the settings screen, then read sensor values or control them in an action.
Automatically record variable changes over time. Configure storage limits by maximum size, record count, or retention days to safely manage long-term monitoring data.
Five new AI analysis models have been added.
Previously, detection zones and reference points had to be entered as separate X1, Y1, X2, and Y2 values. You can now draw and place them directly on the video preview by dragging. This applies to object, face, pose, hand, color, and QR/barcode detection.
When connecting to IP cameras (ONVIF), higher quality video is now automatically selected. H.264/H.265 video is prioritized, improving both image quality and streaming efficiency.
Fixed an issue where installation did not proceed correctly on the latest Linux environments such as Debian 13.
The product name has been changed from Grablo to Grablo IoT Core.
Installation and runtime stability has been improved across various Linux distributions including Debian 11-13, Ubuntu 22.04/24.04, and Raspberry Pi OS.
Unnecessary components have been removed, resulting in a smaller package size and faster installation.
ONVIF-compatible network cameras (IP cameras) can now be automatically discovered and connected. Stream camera video in real time, and cameras are automatically recognized even when their IP address changes.
Send push notifications to the user’s mobile app. You can freely customize the title and message, and even include variable values. For example, you can receive an alert like “Current temperature: 35°C” when the temperature exceeds a certain threshold.
The time it takes for camera video to appear has been greatly reduced. Previously it took 5 to 10 seconds for the stream to start, but now it appears almost instantly.
Fixed an intermittent crash that occurred when entering sleep mode.
Web browser connections are now automatically restored after waking from sleep mode.
Fixed an issue where the program would crash when the device resumed from sleep mode. Grablo now automatically resumes normal operation after waking from sleep.
Reduced repetitive warning logs to improve log file readability.
Grablo is now available on macOS! Both Apple Silicon (M1/M2/M3/M4) and Intel Macs are supported. You can download and install it just like on other platforms.
Bluetooth serial communication now automatically finds available channels, so you no longer need to set the channel number manually. This works on Linux, Windows, and macOS.
MQTT connection credentials are now stored more securely with stronger protection applied.
WebRTC-based camera video streaming stability has been improved. Non-trickle ICE has been applied for better renegotiation reliability, and race conditions and data races in video track management have been fixed.
When speech is detected but cannot be converted to text, it is now handled as a successful completion with empty text instead of an error. This resolves unnecessary errors that occurred especially with Korean language models.
Duplicate calls to already-running commands (recording, timer, audio analysis, etc.) are now handled gracefully without errors.
Grablo is now available on Windows PC. Simply install it with the installer and run it from the system tray. Updates are delivered automatically when new versions are released.
When entering host addresses for MQTT, Modbus TCP, HTTP, and other network modules, prefixes like http:// or trailing slashes are now handled automatically.
Fixed an issue where SPI communication initialization failed on FTDI devices.
AI camera analysis results are now more stable. Improved stability across all AI vision features including Object Detection, Face Detection/Recognition, Pose Estimation, Hand Tracking, Color Tracking, Teachable Machine, and EdgeImpulse.
The voice detection model has been upgraded to the latest version. More accurate detection of speech start and end points improves overall speech recognition accuracy.
The model selection for On Device TTS/STT settings has been improved. Previously, all language models were shown in a single list. Now, you first select a language, and only the models for that language are displayed.
Language support for Text-to-Speech (TTS) and Speech-to-Text (STT) has been greatly expanded.
Models required for AI, TTS, and STT are now automatically downloaded from the cloud. The controller installation size has been significantly reduced as models are no longer bundled.
You can now check your remote connection data usage in your profile. 3GB of free monthly traffic is provided.
The per-file upload limit has been increased to 250MB, and total storage has been increased to 1GB.
Camera streaming is now available when connecting from external networks.
Fixed bugs in the Stepper and Dropdown widgets.
Five new widget types have been added to the dashboard.
A per-account image storage has been added. Upload images to the cloud and use them in dashboard widgets. Supports gallery view, drag-and-drop upload, and file quota management.
Cloud files used in the project are automatically downloaded to the controller when RUN is executed. Download progress can be monitored in real time, and file integrity is ensured through SHA-256 verification.
A community feature has been added for sharing projects and interacting with other users. Supports project publishing, likes, bookmarks, comments, and notifications.
Recognize QR codes and barcodes in real time using the camera. Supports various code types including EAN-13, Code 128, and QR-Code.
Recognize text from camera feed in real time. Supports multiple languages with stabilization to prevent flickering of recognition results.
Added line tracking for line-following robots. Supports 3 modes: dark line, light line, and custom color. Outputs line position and angle information.
Added gesture recognition to hand tracking. Recognizes 33 different gestures.
Added emotion recognition and age/gender estimation to face detection. Classifies 8 emotions and estimates age and gender.
Improved accuracy and stability of color tracking. Sensitivity settings now apply to all color modes, and tracking jitter has been reduced.
Overall stability of AI camera has been improved. Fixed freezing issues during analysis, and improved stability of Speech-to-Text (STT) and Text-to-Speech (TTS).
Fixed raspi-config related errors that occurred during package installation on non-Raspberry Pi boards such as BeagleBone and Jetson.
Simplified IP handling logic in the P2P server for remote connections, improving connection stability.
Fixed an issue where the Grablo service could fail to start on Jetson Nano after installation. The service now starts reliably on first boot.
Improved overall system stability and reliability during long-term operation.
Fixed an issue where public IP detection could fail on first boot. The system now automatically detects network changes for more stable P2P remote connections.
Fixed memory leaks and crash issues that could occur during long-term operation. Overall system stability has been improved.
Fixed an issue where the controller could get stuck during RUN/STOP mode transitions. Also resolved duplicate request handling that could cause unexpected behavior when rapidly switching modes.
Fixed H.264 video streaming issues by adding the required GStreamer plugins dependency. Video streaming now works reliably across all supported platforms.
Improved the reliability of public IP address detection for P2P connections. Added AWS checkip service, retry logic, and better error handling to ensure stable remote connections even in challenging network environments.
Now works reliably on the latest Debian 13 operating system. Enhanced stability for P2P connections and audio analysis features.
Fixed the issue where videos would not play in the LXQT desktop environment. Supports various display managers including SDDM and LightDM, ensuring media playback works properly across all major desktop environments such as GNOME, KDE, XFCE, and LXQT.
Video streaming is now more resilient to network instability. Packet loss recovery is handled natively using standard WebRTC mechanisms, replacing the previous custom implementation for more reliable video recovery.
We’ve redesigned how devices connect. No more typing IP addresses manually.
Select your target board when creating a project. The editor automatically adapts to your board—displaying visual pin maps, filtering compatible devices, scanning I2C devices, and enabling ADC/DAC/PWM channel selection.
Supported Boards
Create and edit variables directly in the Blockly editor.
Copy logic blocks or dashboard widgets and paste them anywhere in your project.
Variables and devices in use are protected from accidental deletion.
A new database name input field has been added to [Settings] → [AI Analyzer] for face recognition. This allows you to create and manage multiple face databases for different use cases.
AI Analysis now supports custom models trained with Teachable Machine and Edge Impulse. You can perform image classification, object detection, and anomaly detection using your own trained models.
Teachable Machine Classification
Edge Impulse Classification
Edge Impulse Object Detection
Edge Impulse Visual Anomaly
Audio source selection for Audio Analysis has been moved from [Action] → [Audio Analysis] to [Settings] → [AI Analyzer].
Audio analysis has been separated into a standalone action. You can now use audio analysis with any audio input/output device, not just media playback or audio recording.
AI analysis has been separated from the Camera action into a standalone action. This allows for more flexible AI vision pipeline configurations.
A new “By Range” repeat option has been added to Action Groups. Similar to a for-loop in programming, you can specify start value, end value, and step value for repeated execution.