The initial release target is 0.1.0. Preparing a package and documentation is a local operation; publishing to Hex and creating a public GitHub release are separate maintainer actions.

Validate the candidate

Use released dependencies, not a sibling Bumblebee checkout:

unset BUMBLEBEE_PATH
mix deps.get
mix hex.outdated --all
mix format --check-formatted
mix format --check-formatted bench/*.exs
mix compile --warnings-as-errors
STING_PYTHON=/absolute/path/to/venv/bin/python mix test
mix docs --warnings-as-errors
mix hex.build

The Python environment must contain sentence-transformers==6.1.0, torch, numpy, and datasets. See the parity guide. Check CI for both supported runtime lanes. Local validation on a newer Elixir runtime does not establish support for the minimum version.

Inspect the artifacts

  • Confirm the version in mix.exs and installation example agree.
  • Replace the changelog's Unreleased label with the actual release date.
  • Open doc/index.html and check the README, parity guide, API navigation, and source-link targets. Before tagging, verify their shape; after pushing the corresponding v0.1.0 tag, verify that the links resolve.
  • Check source links without GitHub authentication. If the repository remains private, choose a public source location or remove public-source links before publishing. The release tag must exist remotely for versioned links to work.
  • Inspect mix hex.build output: runtime requirements must include Bumblebee, Axon, Nx, Tokenizers, Safetensors, and Jason. BUMBLEBEE_PATH must be unset so Bumblebee is a Hex requirement.
  • The package includes lib, mix.exs, README, changelog, license, and guides. It excludes tests, benchmarks, build output, development dependencies, and local environments. Hex consumers resolve the declared version constraints; the repository lockfile is not shipped as a consumer dependency lock.
  • Build the unpacked package in production mode, or add it to a clean consumer project, to verify it compiles without development/test dependencies.

For an isolated production build:

unset BUMBLEBEE_PATH
release_dir=$(mktemp -d)
mix hex.build --unpack --output "$release_dir/package"
cd "$release_dir/package"
MIX_ENV=prod mix deps.get --only prod
MIX_ENV=prod mix compile --warnings-as-errors

Publish

Once the candidate is approved, commit the release metadata, create the matching version tag, and push the release commit and tag. Publish the reviewed package with mix hex.publish using the maintainer's Hex account; this also builds and publishes ExDoc documentation. Create GitHub release notes from the changelog.

Verify installation from Hex in a fresh project after publication. See the Hex publishing guide for account setup and the publication/reversion window. Package-name availability is not a reservation; confirm it at publication time.