SDK
What's new in the Miblo SDK: what changed in each version
What each version of the Miblo SDK (@miblo/status and miblo-status) lets you do, from 1.0.0 to the newest, with the 2.0.0 breaking change marked.
What each version of the Miblo SDK lets you do, newest first. @miblo/status (Node.js 20+) and miblo-status (Python 3.9+) are versioned together. Where only one package has a method, it says so. A method that is not listed for a version was not added or changed in it.
To update, follow Install: the packages come from miblo.ai only, not from npm or PyPI. To see which version you have, run npm ls @miblo/status or pip show miblo-status.
2.1.0 (2026-10-27)
Desk apps as web pages (Miblo 1.45, TypeScript only).
screen.page(file, { data, quality, max })makes a web page your screen, drawn by Miblo Hub at 240x240 and streamed to the Miblo Desk;screen.data(data)sends the page new JSON (at most 16 KB);screen.quality(quality, { max })changes how fast it is drawn (auto,verylow,low,medium,high,ultra).data()andquality()beforepage()fail with the new errorno_page(409).Deprecated, not removed:
screen.card(),frame(),layer(),animate(),mesh(),mode7()andpush()(live charts) keep working; new Desk apps should draw a web page.Plans (Miblo 1.42.0).
app.plans(),app.plans.wait(rev)andapp.plans.onChange(cb)read the progress of the person's plans (title, status, progress, the tasks being done, the AI and the folder's name, never a plan's text). The app declares it and the person allows it; until then the error isnot_declaredorplans_off(asked). Miblo+ Pro only.This computer (Miblo 1.44.0, TypeScript only).
app.sys(name, params)reads one value of the computer (cpu,memory,battery,network,gpu,processes,containers,tcpProbe,nowPlaying,notifications,calendar) once the person allowed its group; the app declares it insystem. Errors:system_off(asked),not_declared.Sessions (Miblo 1.34.0).
app.sessions()lists the AI sessions the person allowed the app to see (id, tool, the project folder's name, state, since); never prompts, commands or files. Errorsnot_declaredandsessions_off(asked) until then.Cost estimate.
screen.budget()returns what the screen costs the Miblo (RAM, storage and processing, each in a band), ornullfrom an older bridge;screen.status()carries it too (budget).New error codes in the types:
plans_off,sessions_off,not_declared.
2.0.0 (2026-10-11)
Breaking: one minimum version per side (Miblo 1.30.0). SDK 2.x speaks Status API 2 and needs Miblo 1.30.0 or newer on the computer. Every request carries
x-miblo-sdk-api. An SDK older than the bridge accepts gets the errorupgrade(426); a bridge older than the SDK givesbridge_outdated: update Miblo withmiblo update. There is no fallback for older SDKs, bridges or firmware: SDK 1.x stops working against Miblo 1.30.0 and newer, so move to 2.x.API_VERSIONis 2 (it was 1). The routes stay/sdk/v1/*.Asking for the screen (Miblo 1.29).
screen.request({ seconds })puts your screen on the App screen for 5-120 s unless something important is happening, and answers honestly withshownandwhy;screen.release()gives it back early.screen.status()hasrequest(the seconds left).Animation slots go from 0-7 to 0-47 on a Miblo from 1.29.
1.4.0 (2026-10-09)
Alerts.
app.alerts({ id, tool })declares alert types and sends them (send,trySend) with atype, akeyagainst repeats (dedupeMin) andwhenQuiet(droporlater);test()andstatus()(permission, types, quiet hours). New errorstype_off,quietandrate_limited(withreason:limitorcooldown).Alert-only Desk apps:
declare({ screen: false, alerts: [...] }), with no screen at all.screen.status()hasallowed: false when the person turned the app's screen off (the app runs for its alerts and its drawing answershidden).declare({ dwell })suggests how many seconds (5-120) the app's screen shows.screen.status()says whether your animation isplayingorqueuedfor your screen's turn.
1.3.0 (2026-10-09)
Live charts.
screen.push(id, value)(orpush({ id: value })) streams values to a live item of the card: coalesced to 60 Hz per id and sent every 500 ms or 32 samples;flush()sends now, andstop()orclear()end the streams.status()haslive.app.alert({ title, text, level, seconds }): one alert over the screen once the person allows the app's alerts.MibloError.askedsays the person was asked.
1.2.0 (2026-10-09)
Animations.
screen.animate()(a GIF/APNG, PNGs, a sprite sheet or a mesh),mesh(),mode7(),stop()andpreview();status()hasanim.Accounts.
app.connect.start(),token()andoff()connect a Google or Microsoft account the person chooses; the token stays in Miblo.Settings. A
selecttakes up to 2000 choices ({ value, label }), a multi-pick (max) anddependsOn; atextsetting takessuggestfor type-ahead, answered withapp.settings.onSuggest(key, handler);app.settings.suggest(key, q)asks.
1.1.0 (2026-10-08)
The App screen.
client.screen({ tool })withcard(),frame(),layer(),show(),peek(),removeFrame()andclear(): a card of numbers, rings, bars and charts, and up to 4 background images.Desk apps and settings.
client.app({ id, tool })withdeclare()andsettings:get(),request(),wait()andonChange().client.call()for any/sdk/v1route.
1.0.0 (2026-10-08)
First release:
session()withworking,needsYou,idleanddone,say(),focus(),timer()and a read-onlysnapshot(). Both packages check the bridge'shelloproof and every answer's MAC, sign each request over a single-use challenge with the status-only token, and refuse bodies over 4096 bytes. Node.js 20+ with no dependencies; Python 3.9+ with the standard library.