Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Versioning

Semantic versioning for the three SDKs, the deprecation window, and how to read the SDK version at runtime.

The Python package (mubit-sdk), the JavaScript package (@mubit-ai/sdk) and the Rust crate (mubit-sdk) are generated from one contract and released in lockstep: the same version number means the same operations, the same names per language, and the same wire behaviour.

Semantic versioning

Releases follow MAJOR.MINOR.PATCH:

PartChanges
MAJORRemoves names that were deprecated in the previous minor releases; may change defaults
MINORAdds operations, options, types and namespaces; marks names as deprecated; never removes
PATCHFixes; no surface change

The packages generally follow SemVer conventions, though certain backwards-incompatible changes may be released as minor versions:

  1. Changes that only affect static types, without breaking runtime behavior.
  2. Changes to library internals which are technically public but not intended or documented for external use. (Please open a GitHub issue to let us know if you are relying on such internals.)
  3. Changes that we do not expect to impact the vast majority of users in practice.

Everything else that removes or changes a documented name waits for the next major.

Deprecation window

A deprecated name warns for one minor and is removed in the next major. In practice: a name deprecated in 0.14 keeps working through every 0.14.x release and is removed in 1.0. Every deprecation is listed in Migration with its replacement.

Each deprecated call site prints one line naming the replacement and the removal version:

mubit: client.query() is deprecated and will be removed in mubit-sdk 1.0; use client.raw.invoke("control.query") — https://docs.mubit.ai/sdk/migration#query
LanguageMechanismStrict mode (fail on any use)
PythonMubitDeprecationWarning (a DeprecationWarning) once per call site, attributed to your code, plus one logger.warning on first emissionpython -W error::mubit.MubitDeprecationWarning
JavaScriptconsole.warn once per call site; the .d.ts marks the member @deprecated so editors strike it throughMUBIT_DEPRECATIONS=error throws instead of warning
Rust#[deprecated(since = "0.14.0", note = "...")] on the item#![deny(deprecated)] in your crate

mubit doctor prints the number of distinct deprecation warnings emitted in the current process.

Reading the version at runtime

import mubit
print(mubit.__version__)          # "0.14.0"

The SDK also reports the server it talks to: mubit.capabilities() returns mode (loop_v1, legacy, unreachable) and server_version, and mubit doctor prints both on its mode: line. A legacy server accepts every 0.14 call, but run-level outcomes are ignored and run end reflects synchronously; upgrade the instance to get the loop.

Pinning

PackageRecommended pin
Pythonpip install "mubit-sdk>=0.14,<1"
JavaScriptnpm install @mubit-ai/sdk@^0.14
Rustmubit-sdk = "0.14" in Cargo.toml

Framework integration packages (mubit-crewai, mubit-langgraph, @mubit-ai/langgraph, @mubit-ai/ai-sdk, …) declare the SDK range they were built against; a mismatched upgrade fails at install time rather than at runtime. The Changelog lists the matching integration versions for each SDK release.

Documentation per major

This site documents the current major. When a new major ships, a read-only snapshot of the last docs for the previous major stays available and is linked from the Changelog, so code written against 0.14 can still be read against the docs it was written from.