What's new in 0.17.0¶
In development: Python SDK rayito 0.17.0, TypeScript SDK rayito
0.17.0 and rayd 0.17.0.
0.17.0 lets you reconnect an agent fleet by its name alone, from any
process, and have it behave like the fleet that was deployed: the same VMs,
the same gateways and the real scaling in status. It also fixes several
agent deploy bugs: URLs with credentials in the host logs, --create-secret
with presets and the secret prefix, the rayito-base-caps image that had to
be published by hand, and OpenCode without a project file.
Connecting with an explicit project (AgentFleet.connect(name, project=...))
works exactly as in 0.16 and makes no new call.
The fleet recipe¶
After the MicroVM fleet starts, deploy_agent() and rayito agent deploy
save its recipe in Parameter Store (/rayito/agents/<name>/recipe): the
project after the flags, the image version, the gateway presets and the
scaling. It holds secret names only, never values or the access token.
FleetStatus.scaling_source(scalingSource) says where the scaling comes from:explicit,project,recipeordefault. With no project and no recipe,rayito agent statusno longer makes up amin 1, max 1.stop()deletes the recipe it saved or read;--keep-recipekeeps it.- A failure to save it is a warning with a code, never a failed deploy.
Cost and activation
It is the only feature that is on by default (ADR-034): a standard
SecureString parameter has no charge, and each write or read is one KMS
request inside the free tier (then $0.03 per 10,000). Turn it off with
AgentDeployOptions(save_recipe=False) (saveRecipe: false,
--no-save-recipe). Details and IAM in
The fleet recipe.
Warm slots with their gateways¶
A fleet reconnected from another process used to open a warm slot without the
project's gateways, so the agent started without the model gateway. Now the
fleet opens them when it takes the slot, through the same path as
SandboxPool.take(gateways=), and replaces the slot if it cannot. You no
longer need to deploy with --warm 0.
Warm slots and gateways.
--scale-in-after and Bedrock key renewal¶
rayito agent deploy --scale-in-after SECONDS(AgentDeployOptions.scale_in_after_seconds,scaleInAfterMs) sets the idle time after which a VM abovemin_vmsis terminated.- Scale-in finally happens. Up to 0.16 it was a no-op: fleet VMs were
created without
max_lifetime/on_timeoutandraydrejected theset_timeoutthat ends an extra VM (the warning «no se pudo acotar la vida de un VM sobrante»). Now a fleet that can grow (max_vms > min_vms) creates all its VMs and warm slots with a logical deadline inkillmode, andPoolConfiggains optionalmax_lifetimeandon_timeout. A fixed-size fleet is created as in 0.16. VMs created by 0.16 are not scaled in: redeploy. Scaling in, suspending and restarting. --renew-gateway-keys(renew_gateway_keys,renewGatewayKeys), off by default, renews a short-term Bedrock key in the gateways with thebedrockpreset. It needs thebedrock-keysextra in Python or the optional peer@aws/bedrock-token-generatorin TypeScript. Only the caller turns it on:AgentFleet.connect(name)does not inherit it from the recipe (it warnsrecipe_renewal_ignored), and it never renews a secret that a gateway to another upstream also reads. From the CLI,rayito agent invoke <fleet> --renew-gateway-keysasks for it on reconnect. Renew the short-term Bedrock key.
rayito setup publishes rayito-base-caps¶
rayito setup also publishes the rayito-base-caps image that
rayito agent deploy uses on MicroVM, from the same rayito-image.zip. The
plan and --dry-run show the step and its cost (≈ $0.04 per week). Only with
rayito setup --caps-image: it is not published by default because it costs
money; if it is missing, rayito agent deploy on MicroVM says so and asks for
that command.
Set up AWS.
Fixes¶
- Agent host logs. The
httpxandhttpcoreloggers start at WARNING, so they no longer write each request URL with its query string (where a credential can travel). A malformed request no longer leaves anAttributeErrorin the log. Security. --create-secretfinds the key by the gateway preset (preset = "bedrock"readsAWS_BEARER_TOKEN_BEDROCK) and no longer doubles the secret prefix.- OpenCode without a project file uses the root
AGENTS.mdand the permissions inopencode.json. OpenCode without a project file. --envrejects names that look like secrets (*_SECRETand the segmentsPASS,PASSWD,PAT,CREDENTIAL(S)too, andAUTHorBEARERat the end or next toTOKEN,KEYorHEADER) and points to--secret-envand--secret-env-from.
Changes to keep in mind¶
There are no breaking API changes. There is one in the CLI:
- Breaking:
rayito agent deploy --envrejects names that look like secrets,*_SECRETtoo, names with aPASS,PASSWD,PAT,CREDENTIALorCREDENTIALSsegment, and names withAUTHorBEARERas the last segment or next toTOKEN,KEYorHEADER(0.16 accepted them;AUTH_MODE,AUTH_URLorAUTHOR_NAMEare still accepted). Migration: pass the value with--secret-env NAME=<secret>or--secret-env-from <secret>. The project'senvvalues are stored in the recipe: nothing secret inenv. -
Cost:
rayito setup --caps-imagepublishesrayito-base-caps, one more image version (≈ $0.04 per week); off by default. -
The detected gateway secret changes name. 0.16 detection created it at
rayito/rayito/agents/...; now it lives atrayito/agents/<project>/<provider>. If only the 0.16 one exists, the deploy reuses it. See Coming from 0.16. - IAM. The launcher and caller policies gain the
AgentRecipestatement onparameter/rayito/agents/*:CallerPolicywithssm:PutParameter,GetParameterandDeleteParameter, andSandboxLauncherPolicywith onlyGetParameterandDeleteParameter(writing the recipe amounts to deploy rights:ImagePublisherPolicygainsssm:PutParameter). Without it, deploy and reconnect carry on with therecipe_access_deniedwarning. Details in IAM. - TypeScript: two new optional peers,
@aws-sdk/client-ssmand@aws/bedrock-token-generator: the first for the recipe (without it, connecting by name behaves as in 0.16) and the second only withrenewGatewayKeys.
The full detail is in the Changelog.