Skip to content

What's new in 0.9.1

Published on 2026-10-07: Python SDK rayito 0.9.1, TypeScript SDK rayito 0.9.1 and rayd 0.9.1.

A patch release on top of 0.9.0, with no API or agent changes: it fixes a bug present since 0.3.0 when creating a sandbox with a short deadline. rayd only changes its number.

A short timeout without idle no longer fails

Up to 0.9.0, Sandbox.create(timeout=120) raised InvalidArgumentException (InvalidArgumentError in TypeScript) even if you did not pass idle. The default auto-suspend waits 300 s without traffic, and the SDK checked it against your timeout as if you had requested it yourself. It happened with any timeout of 300 s or less, and also with on_timeout and a max_lifetime of 300 s or less.

Since 0.9.1, if you do not pass idle, the default window adapts to the deadline:

Launch If 300 s do not fit Result
timeout only auto-suspend is disabled the sandbox ends at its timeout, as in E2B
on_timeout="kill" auto-suspend is disabled rayd terminates it at its deadline
on_timeout="pause" drops to 60 s (the API minimum) with no client, it suspends as soon as possible after the deadline
from rayito import Sandbox

with Sandbox.create(timeout=120) as sbx:  # (1)!
    print(sbx.commands.run("echo hello").stdout)
  1. Before, InvalidArgumentException. Now it starts without auto-suspend and ends at 120 s.
import { Sandbox } from "rayito";

await using sbx = await Sandbox.create({ timeoutMs: 120_000 });
console.log((await sbx.commands.run("echo hello")).stdout);

An idle that you pass yourself is not adapted: Sandbox.create(timeout=120, idle=IdlePolicy()) is still InvalidArgumentException, because you asked for a window that does not fit. Details: Pause and resume.

Measured on real AWS

In the release acceptance, create(timeout=120) without idle from Python and from TypeScript started in ≈ 7 s, launched the MicroVM without idlePolicy and with maximumDurationInSeconds 120, and the MicroVM ended up TERMINATED at ≈ 131 s.

For those who run the e2e

The s3-mounts and rayd-otlp e2e tests now document a precondition that was previously only discovered on failure: rayito stack deploy s3-mounts and rayito stack deploy otlp-export create the managed policy, but do not attach it to the execution role. Without it, those cases fail instead of being skipped. The steps are in CONTRIBUTING.md and in the header of each test.

How to upgrade from 0.9.0

pip install -U "rayito[cli]"
pnpm add rayito@latest

Nothing else is required. The compatibility series is still 0.9, so a 0.9.1 SDK works with a rayd 0.9.0 image and vice versa: there is no need to republish the image.

Full details: Changelog.