Skip to content

Release v0.38.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 12:16
· 62 commits to main since this release

Strands, an embedded agent engine built on the open-source Strands Agents
harness, replaces Libre Claw and the Cordis bridge. It runs on the models Libre
WebUI already serves, in Chat, Work, and its own page, and stays off until an
administrator turns it on.

✨ New Features

  • Strands engine: An embedded agent engine built on the open-source
    Strands Agents harness. It runs inside the backend on the models Libre WebUI
    already serves (Ollama and active chat provider plugins), with no separate
    provider setup. Use it from the new Strands page with persistent
    sessions and a per-session model picker, from Chat as the Strands agent,
    or in Work through the Strands engine option.
  • Strands access: Administrators choose who can use the engine under
    User Management → Access & policies → Strands engine (off,
    administrators, or all users). It is off by default, LIBRE_STRANDS_ACCESS
    pins the mode, and the server enforces it on REST, WebSocket, and Work
    requests.

🔧 Improvements

  • Contained agent tools: On the Strands page the agent gets only read,
    write, and edit, jailed to a private per-session workspace. It has no
    shell, no web access, and no memory or skills from the host.
  • Keyboard controls: Focus stays inside the automation dialog, so a
    background action can no longer replace an unsaved draft. Tabs, notes, and
    clock controls are reachable from the keyboard in every browser engine, and
    the clock panel stays usable in short windows.
  • Closable status popups: Short status messages now have a Close
    button that works with a pointer or keyboard, so a popup can no longer sit on
    top of Work actions.
  • Wider release checks: Every change now has to install cleanly on Linux,
    macOS, and Windows with Node 22 and 24, pass critical flows in Chromium,
    WebKit, and Firefox, and pass the real Work Computer check.

⚠️ Breaking Changes

  • Libre Claw removed: The /agents page, /api/libre-claw, and the
    LIBRE_CLAW_* variables are gone. Use the Strands page instead.
  • Cordis bridge and DeepSeek Harness removed: The Cordis Engine page,
    /api/cordis, cordis.config.yml, cordis.patch.yml,
    LIBRE_CORDIS_ENABLED, and the native DSH provider are gone, along with the
    @deepseek-ai/* packages. Work runs saved with the DeepSeek Harness engine
    open as Strands runs.

🐛 Bug Fixes

  • Team profile storage image: MinIO stopped publishing container images,
    and quay.io/minio now refuses anonymous pulls, so the team profile could not
    start its object store. The team profile and CI now pull Chainguard's MinIO
    server and client builds from cgr.dev, pinned by digest. The server keeps
    running as root so existing MinIO volumes stay writable.

🔒 Security

  • Stricter CORS origins: Hostnames that only begin with a local or private
    address, such as localhost.attacker.example, are no longer treated as local
    origins. Requests must carry one well-formed origin, and malformed values or
    lists of origins are rejected even with CORS_ORIGIN=*. Configured origins
    and literal LAN addresses keep working.

📚 Documentation

  • Added the Strands engine guide and removed the
    Libre Claw and Cordis guides.
  • The environment variables guide explains exactly how CORS_ORIGIN entries
    are matched, and the notifications guide covers closing status popups.