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.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.