v0.38.0
⚠️ Major refactoring release. This version includes a significant refactor of the Agent OS controller layer along with several breaking changes (see below). If you run into problems after upgrading, roll back to a previous version (e.g.pip install "askui==0.37.0") while you work through the migration.
🎉 Overview
v0.38.0 is a feature-packed release centered on three capabilities. A single ComputerAgent can now drive multiple target computers — mixing a local controller with remote gRPC endpoints — and switch between them explicitly or let act() orchestrate across machines. A new secrets system lets agents use sensitive values (passwords, OTPs) without ever exposing them to the model, with placeholder substitution at the OS boundary and defense-in-depth redaction. And PDF documents are now first-class: tools, get(), and file reads can hand PDFs straight to the model for reasoning over text, tables, charts, and layout. This release also refactors the Agent OS controller layer, which changes some public imports.
✨ New Features
- Multiple target computers — a single
ComputerAgentcan drive one or more machines viaagent_os_target_computers, mixing oneLocalComputerTarget(managed controller subprocess) with any number ofRemoteComputerTargets reachable over gRPC; the active target can be switched at runtime withagent.tools.os.switch_agent_os_target_computer(...)or scoped withtemporary_select(...), andact()gainslist/switch/get_currenttarget tools to orchestrate work across machines on its own by @mlikasam-askui in #276 - Agent secrets — register sensitive values as
Secrets that the model only ever sees as<|secret|>NAME<|secret|>placeholders; the real (SecretStr) value is substituted into tool inputs at execution time and any leaked literal is redacted back to its placeholder before reaching the LLM, history, reporter, logs, or cache. Available on all agent types (ComputerAgent,AndroidAgent,WebAgent,WebTestingAgent,MultiDeviceAgent), at agent level or peract()call, and in the deterministictype()method; excluded from telemetry by @mlikasam-askui in #285 - PDF document support — tools can return a
PdfSourceto hand a PDF to the model (base64documentblock for Anthropic Claude,filecontent part for OpenAI, binary for AskUI/Google Gemini), and the newLoadPdfTool(base_dir)loads PDFs from disk duringact();ComputerGetFileToolnow returns aPdfSourcefor PDF documents soget()and file reads work over PDFs by @mlikasam-askui in #289
🔧 Improvements
- Anthropic Claude and OpenAI added to the PDF model-compatibility matrix — PDFs are now passed to the model unchanged (every page as both text and image) with no Markdown conversion by @mlikasam-askui in #289
- Raised the PDF file-size limit from 20MB to 32MB; larger files raise
PdfTooLargeErrorbefore any request is sent by @mlikasam-askui in #289 - New public exports —
Secret,SecretVault,LocalComputerTarget,RemoteComputerTarget,PdfSource,Base64PdfSourceParam, andDocumentBlockParamare now importable from the top-levelaskuipackage by @mlikasam-askui in #276 - New documentation and runnable examples for secrets (
docs/12_secrets.md,examples/secrets.py), multi-target computers (docs/13_multi_target_computers.md,examples/multi_target_computers.py), and PDF documents (examples/pdf_documents.py) by @mlikasam-askui in #289
⚠️ Breaking Changes
- The Agent OS controller layer was refactored.
AskUiControllerClientandAskUiControllerServerare no longer exported fromaskui.tools.askui; the module now exposesMultiComputerTargetAgentOS,ComputerTarget,LocalComputerTarget,RemoteComputerTarget,ComputerTargetConnection, andComputerTargetPool. Code importingAskUiControllerClientmust migrate to the new target-based API. - When
agent_os_target_computersis provided toComputerAgent, the top-leveldisplayargument is ignored — setdisplayon the individual targets instead. - PDFs returned from a tool must not exceed 32MB; a larger PDF now raises
PdfTooLargeError(previously the limit was 20MB and enforced differently).
Full Changelog: v0.37.0...v0.38.0