Files
trainer/README.md
4554a7693c feat(ci): automate release process (#3536)
* feat(release): Add workflows for automated release process and version checks

Signed-off-by: milinddethe15 <[email protected]>

feat(release): Implement automated release process with changelog generation

Signed-off-by: milinddethe15 <[email protected]>

fix lint

Signed-off-by: milinddethe15 <[email protected]>

enhance tag validation and branch creation

Signed-off-by: milinddethe15 <[email protected]>

fix: Add 'area/release' to ignored labels in PR title check

Signed-off-by: milinddethe15 <[email protected]>

feat(release): Enhance release workflows with manual trigger and image build steps

Signed-off-by: milinddethe15 <[email protected]>

feat(release): Add PyPI API token for publishing packages

Signed-off-by: milinddethe15 <[email protected]>

feat(release): Update concurrency settings in publish-helm-charts workflow and upgrade git-cliff-action version

Signed-off-by: milinddethe15 <[email protected]>

feat(release): Update git-cliff-action args to include --unreleased option

Signed-off-by: milinddethe15 <[email protected]>

refactor: reorganize release workflow to generate changelog before GitHub release

Signed-off-by: milinddethe15 <[email protected]>

feat(release): Update GitHub release action to remove changelog prepending and simplify release name

Signed-off-by: milinddethe15 <[email protected]>

feat(release): Refactor GitHub release job to integrate changelog generation and simplify workflow

Signed-off-by: milinddethe15 <[email protected]>

feat(release): create_branch_and_tag job to create_branch and streamline tagging process

Signed-off-by: milinddethe15 <[email protected]>

rebase commit

Signed-off-by: krishna-kg732 <[email protected]>

fix: update release branch naming to use major.minor version format

Signed-off-by: milinddethe15 <[email protected]>

fix endline

Signed-off-by: milinddethe15 <[email protected]>

feat(release): update README with upstream tag fetching instructions

Signed-off-by: milinddethe15 <[email protected]>

Release v2.2.2

Signed-off-by: krishna-kg732 <[email protected]>

Revert "Release v2.2.2"

chore: configure TestPyPI publishing for fork testing

feat: split changelog by release line

Signed-off-by: Krishna Gupta <[email protected]>

chore:removed the monoloith CHANGELOG.md

Signed-off-by: Krishna Gupta <[email protected]>

chore: capitalize Changelog file name

Signed-off-by: krishna-kg732 <[email protected]>

chore: revert fork testing config

Signed-off-by: krishna-kg732 <[email protected]>

chore:latest minor release support updated

Signed-off-by: Krishna Gupta <[email protected]>

chore:resolve changelog casing conflict and restore correct file

Signed-off-by: Krishna Gupta <[email protected]>

chore: resolve git casing conflict

Signed-off-by: Krishna Gupta <[email protected]>

feat: split changelog by release line

Signed-off-by: Krishna Gupta <[email protected]>

chore: capitalize Changelog file name

Signed-off-by: krishna-kg732 <[email protected]>

chore:latest minor release support updated

Signed-off-by: Krishna Gupta <[email protected]>

chore: remove duplicate lowercase changelog file

Signed-off-by: krishna-kg732 <[email protected]>

* Chore:remove the Test release changeLog update

Signed-off-by: krishna-kg732 <[email protected]>

* Potential fix for pull request finding (fix by copilot)

Signed-off-by: Krishna Gupta <[email protected]>

* chore:address review comments

Signed-off-by: Krishna Gupta <[email protected]>

* chore:run pip-compile

Signed-off-by: Krishna Gupta <[email protected]>

* chore: address review

Signed-off-by: Krishna Gupta <[email protected]>

* fix(release): wait for artifact publishing before GitHub release

Signed-off-by: Krishna Gupta <[email protected]>

* refactor(release): delete release.sh, inline make release, and move asset updates to release workflow

Signed-off-by: Krishna Gupta <[email protected]>

* chore(ci): align release workflow and cliff.toml with SDK conventions

Signed-off-by: Krishna Gupta <[email protected]>

* chore: sync requirements lockfiles

Signed-off-by: Krishna Gupta <[email protected]>

* chore: added a new create_tag job and rebased to pass ci

Signed-off-by: Krishna Gupta <[email protected]>

* chore: regenerate lockfiles with Python 3.12 to fix CI

Signed-off-by: Krishna Gupta <[email protected]>

* chore: retrigger CI

Signed-off-by: Krishna Gupta <[email protected]>

* chore : address PR review

Signed-off-by: Krishna Gupta <[email protected]>

---------

Signed-off-by: krishna-kg732 <[email protected]>
Signed-off-by: Krishna Gupta <[email protected]>
Co-authored-by: milinddethe15 <[email protected]>

Co-authored-by: Hanzo Dev <[email protected]>
2026-06-11 19:59:37 +01:00

3.1 KiB

Trainer

Distributed model training operator (PyTorch, TensorFlow, MPI, XGBoost).

A brand-neutral fork in the hanzo-ml organization — the open-source ML lifecycle estate. Branding is consumed at runtime from a brand package via the @<org>/brand contract; the same code deploys under any white-label brand with zero source changes.

Brand package

This fork imports brand configuration from a runtime brand package following the contract used across the open-source ML estate. Set BRAND_PACKAGE to the npm package name; the fork's frontend (where applicable) calls loadBrand() at boot to hydrate the singleton from that package's brand.json.

Available brand packages:

Package Brand
@hanzo/brand default / Hanzo AI
@luxfi/brand Lux Finance
@zooai/brand Zoo Labs
@osage/brand Osage
@parsdao/brand Pars DAO
@cyrusdao/brand Cyrus DAO
@migaprotocol/brand Miga Protocol
@vccross/brand VC Cross
@mlc/brand MLC
@zenlm/brand Zen LM

Or any custom reseller package conforming to the same schema.

Multi-tenant via IAM

Every request carries a JWT. The brand package's iam block specifies:

  • issuer — JWT issuer URL
  • jwksUrl — JWKS endpoint
  • tenantClaim — JWT claim with the org/tenant ID (default org_id)
  • tenantHeader — HTTP header that propagates the validated tenant ID (default X-Org-Id)

The tenant ID scopes all storage, queries, and resource ownership. Cross-tenant access is forbidden by default.

Quick start (reseller deployment)

export BRAND_PACKAGE="@<your-org>/brand"   # e.g. @luxfi/brand

The frontend (this fork's case: pipelines ships the React DAG UI; the other 7 are read-only reference forks) loads the brand at boot. The backend reads the brand package's iam block for JWKS + tenant configuration.

Role

Read-only reference for the Rust operator's TrainingJob reconciler.

The canonical control plane for the ML lifecycle estate is the Rust operator at hanzoai/operator. See HIP-0109 for the lifecycle CRD set.

Upstream sync

This fork stays current with upstream via the GitHub merge-upstream API. No upstream code is modified in this fork; only the 5 markdown files at root are added.

gh api -X POST /repos/hanzo-ml/trainer/merge-upstream \
  -f branch=master

See UPSTREAM_README.md for the original project documentation.

License

Apache-2.0. See NOTICE for attribution.

See also