Skip to content

v0.17.0

Choose a tag to compare

@airut-agent airut-agent released this 17 Mar 06:57
· 247 commits to main since this release
87cabe1

Performance

Async IO execution layer — Rewrote the sandbox execution layer from blocking subprocess.Popen to asyncio, eliminating deadlock risk from sequential stdout/stderr reads. Stream reading uses chunk-based read() with manual line splitting, removing any line-length limit. (#275, #277, #280)

Reduced execution memory footprintExecutionResult no longer stores raw stdout, stderr, or event lists. A new streaming ExecutionAccumulator extracts fields in a single pass, so the execution layer holds zero buffered output. (#283)

Unified image cache — Replaced split image management with a single ImageCache class using content-addressed tags and persistent staleness detection that survives restarts. (#282)

CI image caching — New airut-sandbox image hash, image save, and image load subcommands let CI workflows cache pre-built container images. (#288, #292, #299)

Features & Improvements

Email subject line in prompt — New conversations include the decoded email subject as context for Claude. Messages with a subject but empty body are now accepted, since the subject alone can carry the full request. (#304, #307)

  • Subnet conflict resolution — Running airut and airut-sandbox concurrently on the same host no longer fails; subnet allocation retries with the next available octet on conflict. (#287)
  • Live network logging — New --network-log-live flag on airut-sandbox streams proxy log lines to stderr during execution. (#278)
  • Sandbox CLI output flushing — stdout/stderr now flush after each line, fixing delayed output when piped in CI. (#285)
  • Dashboard stop-button fix — API error responses now return JSON bodies, fixing a parse error when stopping tasks during early startup. (#279)
  • Image save overwrite fixairut-sandbox image save removes existing tarballs before writing. (#298)
  • sandbox-action vN branches — Replaced floating tags with a v0 branch for release distribution, eliminating tag deletion race conditions. (#271)

Cleanups

  • Type annotation overhaul — Replaced all bare typing.Any and object annotations across production and test code with concrete types. Added JsonValue/JsonDict/YamlValue type aliases and enabled the ruff ANN401 lint rule project-wide. (#291, #296, #300, #301, #302)
  • Dependency updates — Bumped all dev dependency floors and fixed Flask vulnerability (GHSA-68rp-wp8r-4726) and pyOpenSSL vulnerability (GHSA-vp96-hxj8-p424) in proxy deps. (#289, #290)
  • Warnings-as-errors — All Python warnings now fail tests; fixed a stale unawaited coroutine. (#295)
  • Documentation refresh — Fixed stale specs, broken anchors, and cross-doc duplication. Documented workflow_dispatch security caveat, ProxyManager GIL thread-safety assumptions, and added CI image caching security analysis. (#292, #297, #305, #306, #308, #309, #310)