Update infrastructure for Blender

One endpoint.Every add-onup to date.

Stop writing an updater for every add-on you ship. Register an ID, publish a version, and every user running the LEUC master add-on hears about it the next time Blender opens.

Free for developersNo telemetry by defaultPython SDK + REST
ViewportBlender 5.2
Update availablemajor · breaking
layersClean Panels7.0.78.0.0DownloadChangelog
Update availablepatch
handymanRanTools3.3.163.3.17DownloadChangelog

What your users see, inside Blender

Registry activity
RanTools3.3.183.3.19patchCleanPanels7.0.07.1.0minorNgonLoopSelect3.0.04.0.0majorGeoCables3.0.33.1.0minorGeoPipes1.2.01.3.0minor
The problem

Four add-ons, four update mechanisms, three of them silent.

Every add-on that ships its own updater duplicates the same network code, the same version parsing, and the same failure modes. Users end up on old builds not because they refused an update, but because nothing told them.

See how LEUC handles it
The check

One cycle, start to finish.

01

Blender opens

The master add-on collects every installed add-on ID and version in one pass. No per-add-on network code.

02

One request

A single batched POST carries the whole library. Version comparison happens server-side, against the registry.

03

One response

Back comes only what changed: latest version, semantic update type, changelog, download URL, criticality.

04

The user is told

A notification inside Blender, with the changelog attached. One click to the download. Nothing to configure.

leuc · update cyclePOST /api/bulk-check
# blender 5.2 · master add-on 1.4.0$ leuc scan --installed  found 4 add-ons  ·  1 request POST /api/bulk-check{  "addons": [    { "addon_id": "CleanPanels", "version": "7.0.0" },    { "addon_id": "NGonLoopSelect", "version": "3.0.0" }  ]} 200 OK  ·  38 ms  CleanPanels     7.0.0 → 7.1.0   minor  NGonLoopSelect  3.0.0 → 4.0.0   major · breaking → 2 notifications shown in Blender
The surface

Everything a release needs, and nothing else.

REST

One request answers the whole library

Send the IDs and versions you have. Comparison is semantic and server-side, so the add-on never parses a version string. The response carries only what changed.

{
  "addon_id":       "cleanpanels",
  "latest_version": "9.2.3",
  "update_type":    "patch",
  "is_critical":    false,
  "changelog_url":  "/addons/cleanpanels/changelog"
}
Namespace

Your add-on ID is yours

Claim the ID once and it is bound to your account. Nobody else can publish a version under it, and users can verify who shipped what.

Adoption

See which build is actually installed

Version spread, adoption after a release, and the Blender versions your users run. Enough to decide when a legacy branch can be dropped.

Bug reports

The crash reaches you in Discord, not a forum thread

Users file a report from inside Blender — the traceback redacted on their machine and again on arrival, no account, no email. Point an add-on at a Discord webhook and every report lands in the channel the moment it does. Answer in the thread; they read your reply in the same panel they filed from.

#addon-support
Project LEUC APP

Bug report - Clean Panels
AttributeError: 'NoneType' object has no attribute 'panels'
  File "/home/<user>/.config/blender/addons/cleanpanels/core.py", line 88

Ticket leuc-K4TQ-8ZP2WM1X-3RV0DCEA  ·  Blender 4.2  ·  v9.2.3
Click the title to triage this report
Python SDK

Two lines inside your add-on

Drop the module in and register it. It handles the request, the cache, the backoff, and the notification UI.

# __init__.py
from . import addon_update_checker

def register():
    addon_update_checker.register()
How it works

Three steps, either side of the release.

01

Register the add-on

Claim your ID in the dashboard. It is checked against the registry, so collisions are caught before your first release.

02

Publish a version

Push the version, changelog, and download URL — from the dashboard or the API. Mark it critical if users must take it.

03

Watch it land

Adoption shows up per version. You see how fast a release spreads and who is still on the old build.

Start

Ship your next version to everyone at once.