Release candidates remain in this timeline as incremental release records. Each stable release provides a complete summary from the previous stable version, so you do not need to read every release-candidate entry before upgrading.
0.3.10
Version
0.3.10 is a stable release covering the changes since 0.3.9.Breaking Changes
eval uploadandeval run --uploadrequire a platform with archive import support. There is no per-file upload fallback, so upgrade the platform before the CLI.- Direct integrations that call
OsmosisClient.start_eval_run_import()must passarchive=instead offiles=. Uploadfiles.jsonlandrun.zip, then start and poll the extraction withstart_eval_run_import_extraction()andget_eval_run_import_extraction()until it reachesreadybefore finalizing. See the migration guide. - Eval-import results require
upload_mode, list archive upload slots infiles, and allow a slot’ssha256to beNone. Update model constructors and result handling.
Changed
- Local eval uploads stream a ZIP64 archive one part at a time without writing it to disk. This replaces per-file requests, and retries skip upload slots the platform already has.
Fixed
- Strands rollouts keep earlier assistant reasoning in follow-up requests, live previews, and ATIF trajectories instead of dropping
reasoning_content.
Upgrade
Confirm platform archive import support, then installosmosis-ai>=0.3.10,<0.4 with the required extras in the CLI and each rollout environment. Follow the 0.3.10 migration steps if you call the eval-import API directly.SDK changelog
· GitHub release
· Full diff0.3.9
Version
0.3.9 is a stable release covering the changes since 0.3.8.Breaking Changes
- Named local eval runs created with
0.3.8or earlier refuse resume and--retry-failedafter the source digest format changes, even if rollout files are unchanged. Finish interrupted runs with their original SDK, choose a new name, or use--freshto archive and restart. Old manifests and results are preserved, and completed runs remain uploadable. See the migration guide.
Added
agent_started_atdistinguishes setup failures from attempts whose agent started. Upgrade both the caller and rollout server before relying on this field.- Built-in OpenSandbox environments accept a positive whole-number
OPENSANDBOX_REQUEST_TIMEOUT_SECdefault for client requests; explicit timeout settings take precedence. - Local eval uploads include
dataset_rows.jsonlfor prompt and ground-truth search and ground-truth sorting in Evaluation Samples. Old completed runs can still be uploaded without it. eval downloadsupports paged manifests with progress reporting and--type summaryto download only the per-sample summary. Dataset-row uploads and explicit summary downloads require matching platform support.
Changed
- The
strands,openai-agents,harbor,rubric, andevalextras require LiteLLM>=1.103.1,<2.0.0excluding1.104.0rc1, and filelock>=4.2.1, for security fixes. - The
strandsextra requires Strands Agents>=1.48.0,<2.0.0. Theserver,strands,harbor, andevalextras require OpenTelemetry API>=1.45.1,<2.0.0. Thefullextra includes all updated requirements.
Fixed
- Known credentials are redacted more consistently from CLI output, debug traces, platform errors, provider diagnostics, and local eval logs, including escaped and multiline values. Redaction only covers known secret values; datasets, trajectories, and artifacts still need review before sharing.
- Malformed provider responses use sanitized error handling. HTTP 426 responses with a non-string
statusshow the standard upgrade message. Rubric dataset loading skips non-object messages and reports a line-numbered error when no usable assistant response remains.
Upgrade
Installosmosis-ai>=0.3.9,<0.4 with the required extras in the CLI and each rollout environment. Update conflicting dependency pins, regenerate lockfiles, and rebuild affected runtime images. The Harbor bundle cache rebuilds once. Follow the 0.3.9 migration steps before restarting old local eval runs.SDK changelog
· Full diff0.3.8
Version
0.3.8 is a stable release covering the changes since 0.3.7. It improves Harbor startup and CLI output, fixes local evaluation behavior, and raises dependency security floors.Breaking Changes
RolloutInfo.is_active, therollout listActive column, and theis_activeJSON field are removed. Remove reads of this always-true flag and anyRolloutInfo(is_active=...)constructor argument. JSON now includesdescriptionandlast_synced_atas descriptive and sync metadata. See the migration guide.
Added
- Harbor prewarm supports
auto,full,healthcheck, andoffmodes, discovers dataset tasks when task IDs are omitted, reports progress, and limits concurrency whenOPENSANDBOX_MAX_SANDBOXESis set to a positive integer. Isolated task failures allow startup with those tasks unavailable; systemic failures stop startup. See the Harbor backend. - Train, eval, and benchmark submit confirmations show the target workspace or its connected repository first. The same target appears in
--jsonconfirmation details. See workspace scope. - Base
model infoshows input, cached-input, and output prices, retaining up to four decimal places for prices below $0.10. JSON always includes all three price fields. Unavailable prices appear as–in the terminal andnullin JSON.
Changed
- The
harborextra supports Harbor>=0.20.0,<0.25. Native OpenCode reuses compatible runtimes prebaked under/opt/osmosis-agent/bininstead of reinstalling them for each trial. - The
strands,openai-agents,harbor,rubric, andevalextras requireaiohttp>=3.14.4andmultidict>=6.9.1. The Strands and OpenAI Agents integrations also require MCP>=1.30.0, excluding2.0.*and2.1.*. - The base installation requires
certifi>=2026.10.19. Theharborandevalextras requireuv>=0.13.4,<0.14. Both updates remove the affected emSign root from their separate CA trust stores.
Fixed
train info --outputkeeps an existing file unless you pass--overwrite. Metrics exports are written atomically; a failed save reportssave_warningwhile the command still succeeds.- Local eval no longer waits for a nonexistent trajectory after a rollout returns no sample, and its live pass rate excludes skipped samples. A second Ctrl-C skips long shutdown waits and gives the rollout server five seconds before force-stopping it, while still stopping the tunnel and listener. Sandbox cleanup may remain incomplete.
- New training scaffolds omit unsupported
eval_intervalexamples and point toosmosis model list --type basefor supported models.
Upgrade
Installosmosis-ai>=0.3.8,<0.4 with the required extras in the CLI and each rollout environment. Update conflicting dependency pins, regenerate lockfiles, and rebuild affected runtime images. Updating the CLI alone does not update rollout or sandbox packages. See the 0.3.8 migration steps.SDK changelog
· Full diff0.3.7
Version
0.3.7 is a stable release. This entry summarizes the changes since 0.3.6 that affect SDK and CLI users: OpenSandbox support for Harbor, prebuilt-image tasks, more reliable result polling, and an fsspec security upgrade.Added
- The
harborextra now includes OpenSandbox support.HarborBackendapplies protocol and managed proxy defaults for built-in OpenSandbox environments. Explicit environment kwargs that you pass still take precedence. See the Harbor backend.
Changed
- The
strands,openai-agents,harbor,rubric, andevalextras, includingfull, now requirefsspec>=2026.6.0. This version fixes a code-execution issue in fsspec’sReferenceFileSystem. Update conflicting application pins, regenerate lockfiles, and rebuild affected runtime images.
Fixed
- Harbor tasks without a Dockerfile now skip SDK pre-install patching instead of failing. Tasks that use prebuilt images run with the default bundle setup.
- RolloutClient retries result reads that return HTTP
502,503, or504up to six times within the polling lease. - New rollout scaffolds and the Harbor source gateway keep connections alive longer than the platform load balancer’s idle timeout.
Upgrade
Installosmosis-ai>=0.3.7,<0.4 with the required extras in both the CLI and rollout environments, and refresh existing rollout lockfiles. If you pin fsspec, raise the pin to >=2026.6.0 and rebuild runtime images that include it. Existing server entrypoints need timeout_keep_alive=2160 in uvicorn.run(...); upgrading the package does not rewrite existing scaffolds.SDK changelog
· Full diff0.3.6
Version
0.3.6 is a stable release covering the complete change from 0.3.5. It removes the drain API, cleans up execution backend resources on shutdown, and adds Harbor 0.23 support.Breaking Changes
POST /drain,RolloutClient.drain(), and the drain request and response models are removed. UseRolloutClient.health()andwait_idle(process_id=...)to observe completion, and send SIGTERM to shut down the rollout server.wait_idle()does not block new admissions or confirm external uploads, so keep your submitted rollout IDs for evidence verification.
Added
- Rollout servers call
ExecutionBackend.shutdown()during shutdown to clean up backend resources, including Harbor trials and artifacts. Set your host’s termination grace period to cover the server’s bounded shutdown stages and Harbor’s additional cleanup wait. - Hosts can enable bounded live trajectory previews for supported local sources, native Harbor agents, and bundled workflows. Previews do not change final results or grading. Bundled workflows need a preview-capable SDK inside the sandbox.
Changed
- The SDK supports Harbor
>=0.20.0,<0.24and keeps publishedharbor-v1image identities and Mini-SWE endpoints. Before you upgrade to Harbor 0.23, review its stricter input validation, finite JSON rewards, Mini-SWE’s managed Python 3.12 setup, and Terminus ATIF 1.8 consumers. See the Harbor backend. - Extras that include them now require LiteLLM
>=1.94.3,<2.0.0(excluding1.95.0.*,1.96.0.*, and1.96.1.*), urllib3>=2.8.0, and PyJWT>=2.15.1for security fixes. Update conflicting application pins and regenerate your lockfiles.
Fixed
- Existing Harbor subclasses keep their original
build_trial_config,build_agent_config, andharness_agent_configsignatures. Subclasses no longer fail at startup with an unexpectedpreview_pathkeyword. - Unexpected execution task crashes now produce a terminal
internal_errorfailure. Clients no longer poll until the lease expires. - Native evidence redaction stays linear on long identifiers. It no longer stalls health checks and result polling.
Upgrade
Installosmosis-ai>=0.3.6,<0.4 with the required extras in both the CLI and rollout environments, and refresh existing rollout lockfiles. Remove any drain() calls before upgrading rollout callers.SDK changelog
· Full diff0.3.5
Version
0.3.5 is a stable release. This entry summarizes the changes since 0.3.4 that affect SDK and CLI users: rollout server lifecycle controls, Harbor source images and retained evidence, reusable CLI composition, and inference parameter forwarding.Breaking Changes
- The
osmosis dev serverandosmosis imagescommand groups are removed from the public CLI. The related dev-server and image-build methods, models, and enums onOsmosisClientare also removed. - Harbor rollout IDs can no longer contain colons or control characters. Use portable IDs so retained evidence paths work on every file system.
Added
- Rollout servers gained optional bearer authentication, and RolloutClient added
health(),wait_idle(), anddrain()for process identity and lifecycle control. Thedrain()API was removed in0.3.6; use the shutdown guidance in that release entry when upgrading. - Harbor source gateways run pinned GitHub tasks with immutable images and validated
HarborGatewayConfigsettings.SourceImageManifestandSourceImageBuildResultvalidate image bindings and task selections. - Harbor retains sanitized native results and logs with checksum inventories. Native-log exports exclude OpenCode databases and snapshots.
osmosis_ai.cli.main.create_app()andrun_cli()let you build a downstream CLI on the public command tree, root options, and output handling, then add your own commands.
Changed
- JSON error envelopes resolve
commandfrom the invoked command tree. Unknown subcommands, such asdataset lst, are kept, and--workspacevalues are no longer reported as the command.
Fixed
- Local eval and the OpenAI Agents and Strands integrations preserve custom inference parameters, including OpenRouter
reasoningandproviderfields. Bridge-control overrides are rejected.
Upgrade
Installosmosis-ai>=0.3.5,<0.4 with the required extras in both the CLI and rollout environments, and refresh existing rollout lockfiles. Replace Harbor rollout IDs that contain colons or control characters. Custom inference parameter forwarding in cloud eval also requires its controller integration; upgrading the SDK alone does not establish hosted support.SDK changelog
· Full diff0.3.4
Version
0.3.4 is a stable release. This entry summarizes the changes since 0.3.3 that affect SDK and CLI users: evaluation retries, base model details, native OpenCode for Harbor, and more reliable rollouts.Added
osmosis eval retry <name|id>retries failed and skipped samples in a hosted evaluation and keeps results that were already graded. To replace uploaded results after a local retry, runosmosis eval upload <run-name> --replaceorosmosis eval run <config_path> --name <run-name> --retry-failed --upload.osmosis model infoandOsmosisClient.get_base_model()accept base model names or Hugging Face paths. They report parameter counts, context windows, and inference pricing when available.HarborBackend(agent="opencode")runs native OpenCode through the rollout chat-completions endpoint, with compaction and pruning disabled. Native agent options, including version pins, also apply during prewarm. See the Harbor backend.
Changed
- The SDK now requires
anyio>=4.14.2for security fixes. Update older AnyIO pins in your CLI and rollout environments before upgrading.
Fixed
- Harbor artifact archiving no longer blocks the event loop or stalls result polling on slow storage. Rollouts still wait for archiving to finish before they return results.
- RolloutClient retries transient result-polling disconnects and read timeouts up to twice, within the last confirmed polling lease deadline. Remove any custom retry wrappers around result polling to avoid nested retries.
- Identifiable sandbox provider failures now report
HTTP_ERROR. Task-level API errors and generic Harbor API errors without a structured status still reportAGENT_ERROR. - CLI failures show actionable platform and login explanations with consistent HTTP error categories. Skipped rollout preflight warnings include installation guidance for the CLI’s environment.
Upgrade
Installosmosis-ai>=0.3.4,<0.4 with the required extras in both the CLI and rollout environments, and refresh existing rollout lockfiles. If you pin AnyIO, raise the pin to >=4.14.2.SDK changelog
· Full diff0.3.3
Version
0.3.3 is the stable release covering the complete change from 0.3.2. It replaces rollout completion callbacks with leased long polling and improves local evaluation and headless authentication.Breaking Changes
- Upgrade rollout callers and servers together. Replace
HttpRolloutDriverand callback models with RolloutClient; each request needs a uniquerollout_idand an explicitllm_api_keywhen its chat endpoint requires authentication. - Custom backends return
ExecutionOutcomefromexecute(request)and publish progress withawait RolloutContext.set_status(). Move local LLM bridge imports fromosmosis_ai.rollout.controllertoosmosis_ai.eval.local. - Local evaluation’s protocol fingerprint is now
0.4. Runs recorded under the previous protocol need a new run name, or the previous SDK to resume. - Managed SkyPilot placement is removed. Select
EnvironmentType.DAYTONAwith Daytona credentials;HARBOR_SKYPILOT_CONTEXTis no longer read. Omittingenvironment_configstill selects Docker.
Added
RolloutClienthandles lease renewal, HTTP 429 admission retries, cancellation, and optionalgrade=False.await run_rollout_async()returns an awaitableRolloutHandlewith live status and milestone waits.osmosis eval uploadandosmosis eval run --uploadincludelogs.txtin the platform Logs tab. Local logging and upload redact known ambient provider and platform credentials of at least eight characters available in the current process environment; review logs before sharing because redaction does not detect every possible secret.
Changed
- Built-in Daytona environments with
delete=Truedefault to stopping after 60 minutes of Daytona-observed inactivity and immediate deletion. Increaseauto_stop_interval_minsfor longer periods without provider-visible activity, or set it to0to disable auto-stop. See Daytona lifecycle defaults. - Supported dependency ranges expand to Harbor
>=0.20.0,<0.23and OpenAI Agents>=0.18.1,<0.21. When upgrading Harbor, remove top-leveltrajectory.jsoninputs from SDK workflow task directories and check Docker host nftables support before restricted-network trials. Generated rollout trajectory artifacts remain supported.
Fixed
- Polling preserves completed rewards and failure details, bounds admission and cancellation cleanup, and leaves local evaluation work without a recorded terminal result pending for resume.
- Login falls back to an owner-only credentials file when the system keyring is unavailable.
OSMOSIS_TOKEN_STORE=keyringrequires the keyring;fileselects file storage explicitly. See credential storage. osmosis train infolists checkpoints while a training run is still running.
Upgrade
Installosmosis-ai>=0.3.3,<0.4 with the required extras in both the CLI and rollout environments, and refresh existing rollout lockfiles. Follow the migration guide for custom clients and backends.SDK changelog
· Full diff0.3.3rc3
0.3.3rc3 adds Daytona idle cleanup defaults, removes managed SkyPilot placement, and shows checkpoints for running training runs. The stable 0.3.3 entry above contains the complete upgrade guidance.Release notes
· Full diff0.3.3rc2
Version
0.3.3rc2 gives rollout callers a richer handle for observing progress, returns poll responses on status changes, and ships local evaluation logs to the platform with credentials redacted.What changed
RolloutClient.run_rollout_async()now returns an awaitableRolloutHandleinstead ofasyncio.Task. The handle exposesstatus,latest_result,done(),cancel(), and the milestone waitswait_for_running(),wait_for_grading(), andwait_for_completion(). A milestone wait also finishes when the phase has already passed or the rollout terminates.- Result long polling returns on status changes, including grading milestones from the Local and Harbor backends, without waiting for the full polling timeout.
- Custom backends publish intermediate progress by awaiting the active
RolloutContext.set_status()method. Result polling no longer reads progress fromExecutionBackend.rollout_status(). osmosis eval uploadandosmosis eval run --uploadinclude the combinedlogs.txt, so local evaluation logs appear in the platform’s run Logs tab.- Local evaluation redacts known provider and platform credentials of at least eight characters found in the process environment from logs, and repeats the redaction before upload hashing.
Who needs to act
- Update callers that treated the return value of
run_rollout_async()as anasyncio.Task. Keep awaiting the handle for the terminal result, and use itsdone(),cancel(), and milestone methods instead of Task-only APIs. - Update custom backends that reported intermediate progress through
ExecutionBackend.rollout_status()to awaitRolloutContext.set_status()instead.
0.3.3rc1
Version
0.3.3rc1 replaces callback-based rollout completion with leased long polling ahead of the stable 0.3.3 release. The caller now polls the rollout server for the result under a server-issued lease instead of receiving a callback. Callers and rollout servers must upgrade together.What changed
- Rollout completion now uses leased long polling instead of callbacks. The new
RolloutClientsubmits a rollout, renews the server-issued polling lease automatically, retries admission on HTTP 429, polls for the terminal result, and supports explicit cancellation. A request can skip grading withgrade=False. HttpRolloutDriverand the callback models are removed. Each request supplies a uniquerollout_id, plus an explicitllm_api_keywhen the chat endpoint requires authentication.- Custom backends return an
ExecutionOutcomefromexecute(request)instead of invoking result callbacks. Local LLM bridge imports move from the removedosmosis_ai.rollout.controllerpackage toosmosis_ai.eval.local. - Supported Harbor versions expand to
>=0.20.0,<0.23, and OpenAI Agents to>=0.18.1,<0.21. - Polled results preserve completed rewards and failure details through cancellation and serialization errors, and lease expiry or server shutdown allows bounded workflow and sandbox cleanup.
- Admission deadlines cover HTTP requests and retry delays. A lost admission response leaves unobserved work to lease expiry instead of risking cancellation of another rollout with the same ID.
- Local evaluation bounds result polling, waits for cancellation cleanup, and leaves work without a recorded terminal result pending for resume, including on polling 403 and 404 errors.
Who needs to act
- Upgrade callers and rollout servers together. The leased long-poll protocol does not interoperate with the 0.3.2 callback protocol, so replace
HttpRolloutDriverand callback models withRolloutClient. - Local evaluation’s protocol fingerprint is now
0.4. A run recorded with the previous protocol cannot resume under this release; use a new run name, or finish the run with the previous SDK. - When upgrading Harbor, remove top-level
trajectory.jsoninputs from SDK workflow tasks, and ensure the Docker host passes its nftables probe before running restricted-network trials.
0.3.2
Version
0.3.2 is the stable release covering the complete change from 0.3.1. It opens local evaluation to cloud sandboxes, lets workspace-scoped commands run without a local repository, and removes several public APIs.Breaking Changes
- The public
MessageResult,GraderInitRequest,GraderInitResponse,RolloutDriver, andresolve_workspace_directory_from_cwd()APIs are removed. UseOperationResult,HttpRolloutDriver, andresolve_workspace_directory()instead; the two unused grader-init types have no replacement. - The SDK no longer declares
requestsas a base dependency ortqdmin therubricextra. Declare either package directly if your own code imports it.
Added
osmosis eval runreaches Daytona, SkyPilot, and other cloud sandboxes through a managedcloudflaredtunnel that starts automatically when the resolved sandbox cannot reach host loopback, or through a tunnel you run yourself with--advertise-url.- Root
--workspace <name>selects a platform workspace by name. Benchmark, dataset, model, secret, and run-inspection commands then work without a local repository, andeval submitandtrain submitaccept an absolute config path when its Git repository matches the selected workspace. osmosis eval upload <run-name>resolves a completed run under.osmosis/evals/; explicit run directories still work.- The
evalinstallation extra is documented, and Python 3.14 is supported.
Changed
- Local
osmosis eval run --dataset-file ...no longer loads platform credentials unless--uploadis requested. - Newly scaffolded rollouts depend on the stable
osmosis-ai[server]>=0.3.0,<0.4release line. - Local evaluation output, retry, resume, and upload paths are printed relative to the directory the command was invoked from.
Fixed
- Local evaluation validates the model and rollout server before opening a tunnel, keeps slow non-streaming tunnel responses alive, accepts a registered Cloudflare connection when the host cannot probe the tunnel URL, and fails fast on an unreachable loopback endpoint instead of hanging.
- Local evaluation warns when the CLI and the rollout environment use different
osmosis-aiversions. - The
harborextra installs Harbor’s Daytona dependencies, so Daytona environments work without separate dependency setup. --secrets-filevalues override the process environment only for the local evaluation run and are restored on every exit path, and orphan cleanup rejects symlinked run directories.
Upgrade
Installosmosis-ai>=0.3.2,<0.4 with the extras your rollout imports, and replace the removed APIs listed above. Local evaluation against a cloud sandbox also needs the cloudflared binary on PATH unless you supply your own tunnel with --advertise-url.SDK changelog
· Full diff0.3.1
Version
0.3.1 brings evaluation runs to your own machine, adds a path for importing those results into the platform, standardizes machine-readable CLI output, and moves logins into the operating-system keyring.Breaking Changes
RolloutDriver.runnow takes a singleRolloutRunRequestargument. Update custom drivers and their callers to pass the request object.ExecutionBackend.max_concurrencyand the import-timeosmosis_ai.platform.auth.PLATFORM_URLare removed. Read concurrency capacity from the rollout server’s/healthresponse, and the active platform URL fromget_platform_url().- Unused server-owned fields are removed from the public record types. Stop reading
UploadInfo.s3_keyand.upload_id,DatasetFile.df_statsand.organization_id,TrainingRunMetrics.training_run_id,EvalRunMetrics.eval_run_id,RolloutInfo.last_synced_at, andTrainingRunCheckpoints.training_run_id.
Added
osmosis eval runexecutes a crash-safe local evaluation from the same TOML a managed run uses, through the newevalinstallation extra. It supports dataset slicing, resumable output, uv-managed rollout environments,LocalBackendand Harbor’s Docker environment, readable generated run names, OpenAI Responses routing, bounded admission, and orphan rollout-server cleanup.osmosis eval upload <run-dir>andeval run --uploadimport a completed local run into the platform. Both are server-authoritative and idempotent, and neither launches a managed evaluation.
Changed
- The CLI machine contract is standardized.
--jsonand--plainnever prompt, JSON errors use stable{code, message, details}envelopes on stderr, machine-readable warnings use JSON Lines, and non-finite values can no longer produce invalid JSON. - Logins are platform-scoped and persist in the operating-system keyring across directories and environments. They survive HTTP 401 responses, and a non-production
OSMOSIS_TOKENis validated againstOSMOSIS_TOKEN_PLATFORM_URLbefore any network access.
Fixed
- Mini SWE-agent benchmark credential validation matches the Platform, while the Cursor CLI harness-key requirement is preserved.
osmosis dev server upprints the one-time API key the Platform returns, so the provisioned server can be used immediately.
Upgrade
Installosmosis-ai>=0.3.1,<0.4, add the eval extra wherever you want local evaluation, and replace the removed APIs listed above.SDK changelog
· Full diff0.3.0
Version
0.3.0 is the stable release of the new rollout protocol and execution stack, covering the complete change from 0.2.31.Breaking Changes
- Every rollout now produces exactly one
RolloutSampleand reward through rollout-scoped URLs. Update custom contexts, graders, integrations, callbacks, and backend adapters to the single-sample contract. - Runtime integrations use explicit
server,strands,openai-agents,harbor,rubric, andparquetextras and feature-specific imports.AgentWorkflow.run()returns one message history, and the former loader, validator, and multi-trajectory helpers are removed. HarborBackendis now the container-native implementation previously calledHarborBackendV2; the legacy backend, its constructor arguments,OsmosisInstalledAgent, andHarborAgentWorkflowContextare removed.- Prompt and metadata datasets each use one uniform schema across every row, and benchmark detail output replaces
required_secret_nameswithrequires_judge_api_key.
Added
osmosis benchmarknow supports catalog discovery, submission, run inspection, logs, cancellation, and output downloads.- The container-native Harbor backend adds installable workflow bundles, native agents, template and dataset modes, prewarming, diagnostics, artifacts, admission control, status polling, and cancellation.
- Train, evaluation, and benchmark submissions can resolve per-run secrets from a dotenv file, standard input, process environment, or hidden terminal prompt without saving them to the Platform secret store.
osmosis quickstartguides users through authentication, workspace repository setup, cloning, billing checks, and a ready-to-paste agent prompt; matching onboarding APIs are available onOsmosisClient.
Reliability and Security
- Rollout bundles use content-addressed atomic caches, support flat,
src/, and PEP 420 layouts, reject unsafe symlinks and cache layouts, and install a compatibleuvbuilder through the Harbor extra. - Local execution enforces controller deadlines, validates rewards, sanitizes optional callback telemetry, and preserves consistent terminal callback outcomes.
- Harbor preserves samples, diagnostics, and ATIF trajectories while preventing task-source symlinks and rollout credentials from entering archived trial data; secrets-file errors no longer echo secret-bearing input.
Upgrade
Installosmosis-ai>=0.3.0,<0.4 with the extras your rollout imports, then follow Migrate from v0.2 to v0.3 for the complete API, dataset, dependency, and Harbor migration checklist.SDK changelog
· Full diff0.3.0rc4
Version
0.3.0rc4 adds guided workspace onboarding and hardens rollout execution, packaging, callbacks, and secret handling ahead of the stable 0.3.0 release.What changed
osmosis quickstartnow signs in, selects a workspace, waits for its repository connection, clones or reuses the workspace directory, checks billing, and produces a ready-to-paste agent prompt for training, evaluation, or benchmarks.OsmosisClientaddslist_workspaces(),get_quickstart_status(), andcomplete_quickstart()for workspace-scoped onboarding integrations.RolloutSample.rewardnow rejectsNaN, infinity, and non-numeric values at construction and assignment. A grader that assigns one of these values raisespydantic.ValidationErrorinstead of silently reaching the controller as no reward at all. NumPy-like numeric scalars are normalized tofloat.LocalBackendcounts time spent waiting on its concurrency limiter against the controller’sagent_timeout_sec, and applies an independentgrader_timeout_secaround grading. Workflows that swallowCancelledErroror block the event loop past their deadline are now reported as timeouts instead of returning a late success.osmosis eval submit,osmosis train submit, andosmosis benchmark submitaccept--secrets-filelines written asexport NAME=valueandNAME="quoted value". The CLI reports a malformed line by source and line number only, so the secret text never reaches CI logs. The CLI also rejects names that do not pass Python’s identifier check up front.- Rollout bundle builds are now content-addressed by project contents, interpreter ABI, and platform, and each build runs in an isolated directory that must produce exactly one wheel.
src/layouts (as scaffolded byuv init --lib) and PEP 420 namespace packages are supported alongside flat layouts, and the Harbor extra installs its compatibleuvbuilder. - Harbor rejects symlinks before task materialization and scrubs rollout controller credentials from retained trial files before they can be archived.
Who needs to act
- Upgrade to
osmosis-ai>=0.3.0rc4before usingosmosis quickstartor relying on these rollout hardening fixes. - Update any grader that could assign
float("nan"),float("inf"), or a non-numeric object toctx.set_reward. Osmosis now rejects these values. Return the intended numeric reward, or leave the reward unset to mean “not graded”. - Update
--secrets-filesources that relied on the previous parser accepting quotes as part of a value or anexportprefix as part of a name. The old behavior silently submitted the wrong string; the new parser resolves both forms to the intended value.
0.3.0rc3
Version
0.3.0rc3 tightens dataset validation and lets submit commands provide required secret values for one run without saving them to the platform secret store.What changed
- Prompt datasets require
user_promptplusground_truthor itslabelalias;system_promptremains optional. - Metadata datasets require a non-empty
metadataobject on every row. Validation now checks every JSONL and CSV row and every Parquet metadata value. osmosis train submit,osmosis eval submit, andosmosis benchmark submitaccept--secrets-file; values can also come from the process environment or an interactive prompt.- Benchmark details replace
required_secret_nameswithrequires_judge_api_key.
Who needs to act
Validate existing datasets withosmosis dataset validate <file> and update rows that mix schemas or omit required values. If a run uses local per-run secrets, supply them again on every submission; stored secret names continue to resolve server-side.Follow Migrate from v0.2 to v0.3 for dataset and secret migration steps.SDK changelog
· Full diff0.3.0rc2
Version
0.3.0rc2 makes optional features explicit and promotes the container-native Harbor implementation to HarborBackend.What changed
- Install optional features with the
server,strands,openai-agents,harbor,rubric, orparquetextras;fullinstalls all of them. - Import server, Harbor, Strands, OpenAI Agents, and rubric features from their public submodules instead of the rollout or package root.
AgentWorkflow.run()returns one message history asAgentWorkflowOutput, a bare message list, orNonefor the active sample-source fallback. Output metrics must be finite.- The former
HarborBackendV2is nowHarborBackend; the legacy backend andHarborAgentWorkflowContextwere removed. - The CLI adds benchmark catalog, submission, status, logs, cancellation, and output-download workflows.
Who needs to act
Update rollout dependency extras and imports, workflow return values, and any Harbor constructor or context usage. Rollout servers should also handle accepted work, queue saturation, status polling, and cancellation where applicable.Follow Migrate from v0.2 to v0.3 for canonical imports and Harbor migration steps.SDK changelog · Full diff0.3.0rc1
Version
0.3.0rc1 introduces the 0.3 rollout protocol. A workflow execution now produces exactly one RolloutSample, and its grader assigns exactly one reward.What changed
GraderContext.samplesis nowGraderContext.sample, andset_sample_reward(sample_id, reward)is nowset_reward(reward).- Custom integrations register one source with
set_sample_source()and read it withget_sample(). RolloutSample.idandMultiTurnModewere removed. The rollout URL now supplies execution identity.- Model and callback requests use rollout-scoped URLs. Integrations no longer attach per-call sample or rollout routing headers.
- Backends exchange
sample.jsonand a single-valuereward.json({"reward": <float>}). - Strands and OpenAI Agents integrations enforce one registered agent or session per workflow execution.