---
title: "Platform Updates — July 31–August 7, 2026"
slug: "platform-update-2026-08-07"
date: "2026-08-07"
tag: "Application"
summary: "13 production image releases (1.120.0 → 1.132.0) plus 39 iblai-web-frontend package releases — 52 in all: admin-set LLM spend caps enforced across tenant, agent, and per-user scopes; the Agent Computer Protocol and in-chat computer use in OS; a grading results API with grader components and a results tab; a new first-party iblai LLM provider covering chat, embeddings, and TTS; SEO foundations across OS and LMS; and notarized macOS desktop builds."
author: "ibl.ai Engineering"
repo: "iblai/iblai-prod-images"
linkedin: |
  52 releases in eight days — 13 production images and 39 frontend packages. Some of what shipped:

  → LLM spend caps. Admins can now set a maximum LLM spend over a calendar day, week, month, or year, enforced at three scopes at once: the whole tenant, a single agent, or one user on one agent. Two modes — block or alert-only — and when a block-mode cap is hit, chat setup returns a 402 naming the most specific cap that stopped it. A task reconciles cached spend against ClickHouse every 15 minutes and emails admins as thresholds are crossed. Members can read their own usage zones and percent-used without ever seeing dollar figures.

  → The Agent Computer Protocol, for agent-to-agent interoperability, with an in-chat toggle for screen-based computer use. Computer use no longer requires a local model.

  → Grading, end to end. Results are exposed via API, grader components ship with a results tab, and agent settings gained a grading tab that responds to iframe messages from the parent frame.

  → A first-party iblai LLM provider covering chat, embeddings, and text-to-speech from a single tenant credential. Model choice is delegated to the gateway's auto-router by default, with an optional rule table for explicit routing — and embeddings use the same model as the OpenAI provider, so switching a tenant requires no re-index.

  → SEO foundations across both SPAs: robots.txt, sitemaps, Open Graph, and JSON-LD, with public agent pages and course/program about pages indexable behind a self-linking gate.

  → Notarized Developer ID macOS builds, signed Windows x64 and arm64 builds, and desktop builds that can be locked to a single tenant.

  → Four more independent OpenID SSO backends in the CLI, a crawler that identifies itself with a documented user-agent and can carry per-document auth headers to gated sites, and per-request TTS cost tracing.

  This is one week. Our customers run this stack on their own infrastructure — you own all the code and the data — so every release above is something they own outright, not something they wait for a vendor to enable.

  Full changelog: https://ibl.ai/updates/platform-update-2026-08-07

  #iblai #AgenticAI #EnterpriseAI #Engineering #ShipLog
---

Releases from July 31–August 7, 2026 — covering `iblai-prod-images` `1.120.0` through `1.132.0` and 39 `iblai-web-frontend` package releases. 52 releases in all.

| service | image / pin | version span |
|---|---|---|
| dm | `iblai-dm-pro` | `4.324.0-ai` → `4.332.0-ai` |
| os | `iblai-os-spa` | `0.108.9` → `0.117.0` |
| edx | `iblai-edx-pro` | `sumac.2.45.0` → `sumac.2.49.0` |
| lms | `iblai-lms-spa` | `0.54.3` → `0.60.0` |
| cli | `ibl-cli` | `5.53.1` → `5.54.0` |
| auth | `iblai-auth-spa` | `2.1.1` → `2.2.1` |
| agent-ai | `@iblai/agent-ai` | `2.8.0` → `2.8.1` |
| web-utils | `@iblai/web-utils` | `2.1.6` → `2.1.11` |
| web-containers | `@iblai/web-containers` | `1.15.8` → `1.16.5` |
| data-layer | `@iblai/data-layer` | `1.11.1` → `1.12.1` |
| mcp | `@iblai/mcp` | `1.8.4` → `1.8.9` |
| iblai-js | `@iblai/iblai-js` | `2.2.7` → `2.3.7` |

---

## iblai-dm-pro (`4.324.0-ai` → `4.332.0-ai`)

**LLM Spend Caps.** Admin-imposed maximum LLM spend over a calendar-aligned interval (day / week / month / year), enforced across three scopes: tenant, agent, and user-per-agent. New `SpendCap` model (migration `0342`) with `block` and `alert_only` enforcement modes. When a `block`-mode cap is exceeded, chat setup returns `402` (`error="spend_cap_exceeded"`) reporting the most-specific cap (user > agent > tenant).

A `reconcile_spend_caps` Celery beat task (every 15 minutes, configured in `dl_manager/settings/client.py`) refreshes each cap's cached spend from ClickHouse and fires near-limit admin alerts as `alert_thresholds` are crossed. Admin REST API under `/orgs/<org>/…` (RBAC `Ibl.Mentor/SpendCaps/*`) for CRUD on tenant / agent / user-per-agent caps, returning live `current_spend_usd` / `remaining_usd` / `is_exceeded`.

Status endpoint `GET /orgs/<org>/spend-caps/status/<user_id>/` lets members read their own spend zones and `percent_used` (no dollar amounts). `GET /orgs/<org>/spend-caps/agents/` lists every agent-scoped cap for a tenant including `mentor_unique_id`, `mentor_name`, and reconciled counters. User-per-agent cap payloads include the capped user's `email` alongside `username`.

A `SPEND_CAP_ALERT` notification type (`ibl-notification-consumer` 1.43.0, migration `0054`) emails platform admins as spend crosses thresholds. `SpendCap` is registered in Django admin with audit-logging and scope / interval / enforcement / enabled filters.

**Grading Results API.** Grading results are now exposed via API. Deployment: run migrations on DM.

**Web Crawler User-Agent.** The web crawler sends an identifying `User-Agent` header (`Iblai-bot/1.0 (+https://ibl.ai/bot)`), overridable per-tenant via the `WEBCRAWLER_USER_AGENT` core `Config` key. A per-document `crawler_extra_headers` JSONField (migration `0343`) supports sending auth tokens or custom HTTP headers to gated sites. Header values are never logged.

**Memory Users Endpoint.** New endpoint listing users whose memories you have permission to view. Deployment: run migrations in DM.

**iblai LLM Provider.** New `iblai` provider (`ibl-ai-mentor-app` 3.263.0) covering chat, embeddings, and text-to-speech, powered by a single tenant credential named `iblai`. Chat model choice is delegated to the gateway's auto-router by default, with an optional rule table for explicit routing. Embeddings use the same model as the `openai` provider, so switching a tenant requires no re-index. Migration `0345` adds two routing tables and the new provider choices (rolling-safe). Deployment: run `python manage.py seed_llm_registry`. Switch tenants onto `iblai` only after rollout completes.

**TTS Cost Tracking.** OpenAI and Google TTS calls are now traced per request in Langfuse. Run `register_langfuse_tts_models` once per environment to register their prices.

**Platform API Key Expiration.** Updating a Platform API Key's `expires_in` now applies the new expiration, measured from the time of the update.

## iblai-os-spa (`0.108.9` → `0.117.0`)

**Agent Computer Protocol (ACP).** The OS SPA integrates ACP for agent-to-agent interoperability. An in-chat computer use toggle lets users enable screen-based computer use directly from the chat interface; computer use no longer requires a local model.

**Human Support Tab.** Agents can now have a human-support configuration in their settings.

**Sidebar Overhaul.** The sidebar is now called "Recents", Search is grouped with it, and pinned chats carry a visible pin marker. Infinite-scroll pagination is available for the projects list.

**Searchable Chat History.** A searchable chats dialog with recency grouping (today, yesterday, last 7 days, etc.) is available from the sidebar.

**Voice Captions.** A `useLiveKitTranscription` hook renders live captions for voice calls; captions are behind a toggle, off by default.

**Agent Evaluations.** Agent evaluation features are available in the agent settings area.

**Grading Tab.** Agent settings include a grading tab that responds to `MENTOR:ENABLE_GRADING` iframe messages from the parent frame.

**SEO Foundation.** robots.txt, sitemap, manifest, structured metadata, and JSON-LD are now emitted. Public agent pages are indexable with rich metadata. The explore agent-directory pages are also indexable.

**Content Rendering.** Inline math and currency symbols are correctly disambiguated. LLM-emitted `$…$` styling wrappers render as prose instead of LaTeX. Code fence newlines and bodies are preserved in canvas rendering.

**Configurable Partner CSP.** Partner Content Security Policy hosts are configurable via the `CSP_PARTNER_HOSTS` environment variable, supporting both HTTPS and WSS origins. S3 presigned media hosts are allowed in `connect-src`.

**Desktop App.** macOS builds are notarized Developer ID distributions. Self-signed Windows builds (x64 + arm64) are available. Builds can be locked to a single tenant via `IBL_TENANT`. The ibl.ai logo is used as the header and macOS app icon (proper squircle). Tauri IPC event emits are marshalled to the main thread.

**Dataset Curator Role.** A dataset curator / viewer role is available on the access tab.

**Agent Settings from SDK.** The agent settings tab is sourced from the SDK `AgentSettingsTab` component.

**Clipboard in Embeds.** Copy-to-clipboard works even when the embedding page withholds the clipboard permission.

**Workflow Renames.** Auto-save refetch no longer discards an inline rename in progress.

## iblai-edx-pro (`sumac.2.45.0` → `sumac.2.49.0`)

**XBlock Completion API for AI Trainers.** New `POST /api/ibl/completion/xblock/<usage_id>/complete` endpoint (`ibl_completion_api` 1.9.6 → 1.10.0) allows staff or superuser callers to mark completions on behalf of a learner identified by `username`. The endpoint requires the learner to be enrolled and accepts only plain completable leaves (HTML, discussion, poll, drag-and-drop-v2, word_cloud, etc.); container/aggregator blocks, graded/scored blocks, and blocks with custom completion tracking (video, SCORM, LTI, agent xblock) are rejected. LMS-only route, inert unless called by a staff/superuser identity. Deployment: picked up on image rebuild + LMS restart, no migrations.

**Iframe Completion Tracker.** The iframe completion tracker fires `publish_completion` for HTML/Text XBlocks (`ibl-edx-lmsx-addon-theme` 0.1.5 → 0.1.6). Tracked elements are treated as visible immediately once the tracker initialises; the configured completion delay is unchanged. Deployment: picked up on image rebuild + LMS restart, no migrations.

## ibl-cli (`5.53.1` → `5.54.0`)

**Additional OpenID SSO Backends.** Four more independent OpenID SSO backends: `IBLOpenIDThreeBackend` through `IBLOpenIDSixBackend`. The `ibl-edx-base-oauth-sso-backend` Tutor plugin template renders `IBL_OPENID_SSO_THREE_*` through `_SIX_*` Django settings blocks (each with `NAME`, `OIDC_ENDPOINT`, `USE_IDP_USERNAME`, `USERNAME_KEY`, `FULLNAME_KEY`, `EMAIL_KEY`, `FIRST_NAME_KEY`, `LAST_NAME_KEY`, `ID_TOKEN_ISSUER`, `ACCESS_TOKEN_URL`, `AUTHORIZATION_URL`, `REVOKE_TOKEN_URL`, `USERINFO_URL`, `JWKS_URI`, `JWT_DECODE_OPTIONS`, `USE_IDTOKEN_FIELDS`), and appends all four backends to `THIRD_PARTY_AUTH_BACKENDS`. Requires `iblai-edx-pro` `ibl-base-oauth-sso-backend` >= 1.11.0.

## iblai-lms-spa (`0.54.3` → `0.60.0`)

**EdX Iframe Display.** The edx iframe display mode changed from `display: none` to `visibility: hidden`, allowing embedded content to initialise in the background before becoming visible.

**SEO for Courses and Programs.** Public course and program about pages (Phase 2) are available behind an `allow_self_linking` gate. Tenant-aware metadata foundation includes robots.txt, sitemap, Open Graph tags, and JSON-LD. Default page title/branding is "ibl.ai | Agentic LMS".

**iOS App Icon.** The iOS app icon now uses the blue ibl.ai logo.

**Analytics Integration.** Analytics SDK memory menu items are integrated into the LMS.

**Partner CSP.** Configurable partner CSP hosts via `CSP_PARTNER_HOSTS`, supporting HTTPS and WSS origins.

## iblai-auth-spa (`2.1.1` → `2.2.1`)

**Application Page.** A new application page is available in the auth SPA.

**Branding.** The ibl.ai logo is always shown and the header logo is enlarged. Per-app theme defaults (skills, analytics) use the ibl.ai logo.

**Partner CSP.** Partner CSP hosts are configurable via `CSP_PARTNER_HOSTS`. WSS partner origins are allowed in `connect-src`.

**Stale Tenant Cleanup.** A stale `selected_tenant` no longer triggers an unwanted `/join` redirect.

## @iblai/agent-ai (`2.8.0` → `2.8.1`)

**Chat Links.** Links in chat messages now open in a new tab instead of navigating the current window.

## @iblai/web-utils (`2.1.6` → `2.1.11`)

**Chat Phase Tracking.** A new `ChatPhase` type tracks the in-flight turn state (thinking, tool calling, streaming, etc.). `useAdvancedChat` exposes `chatPhase`; selectors `selectChatPhase` and constant `IDLE_CHAT_PHASE` are exported.

**OpenAI-Compatible Remote Chat.** An OpenAI-compatible remote chat mode with MCP tool support for computer use is available. Streaming is enabled by default; non-streaming is gated.

**Tool Call Improvements.** `write_todos` extracts todo lists from tool calls. `tool_call.end` frames are captured, and tool calls are upserted by id instead of appended.

**Token Forwarding.** Preserved tokens are forwarded as `edx_jwt_token` on native redirect.

**Screen Capture.** Screen capture support added for Cowork computer use.

## @iblai/web-containers (`1.15.8` → `1.16.5`)

**Grading.** Grader components with a results tab. The grading view endpoint integration is updated.

**Agent Skills.** Slash-command skill components with consistent-height popups are available in chat.

**Time Tracking.** The time-tracking hook and provider now send `course_id` and `block_id` alongside session data.

**API Token Policy.** API token policy management is available in the integration settings.

**LLM Provider Management.** The LLM tab shows ordered provider cards with active/inactive states, the ibl.ai provider logo, and bundled logo fallbacks. The profile Local Models card shows only Model Manager status (models are managed in the LLM tab).

**Analytics.** Analytics memory feature with profile preview mode. Analytics tabs for watchers. Updates for memory, course, program, and management users views.

**Category Search.** The Edit Agent category dropdown is interactive, searches by name instead of id, and the category list stays inside the host dialog.

**ACP / Cowork.** ACP integration with Cowork MCP tool support.

## @iblai/data-layer (`1.11.1` → `1.12.1`)

**Time Tracking.** The data layer now supports `course_id` and `block_id` fields for time-tracking requests.

## @iblai/mcp (`1.8.4` → `1.8.9`)

**Cowork.** ACP support merged; Cowork MCP arguments cleaned up for the computer-use flow.

## @iblai/iblai-js (`2.2.7` → `2.3.7`)

**SDK Updates.** Cascading updates from auth, web-containers, web-utils, data-layer, mcp, and agent-ai releases. The SDK bundles the latest versions of all frontend packages.
