Tau release process
July 3, 2026 ยท View on GitHub
Tau is published to PyPI as tau-ai. Publishing is intentionally tied to a
release decision, not to every commit that lands on main.
What runs on ordinary main commits
Ordinary commits merged to main run validation workflows, documentation
builds, and other checks, but they do not create a PyPI release.
The PyPI workflow publishes only when a maintainer publishes a GitHub Release.
This keeps package uploads tied to an explicit release action instead of a
routine merge to main.
Version source of truth
The package version lives in pyproject.toml:
[project]
version = "0.1.0"
A production release starts by intentionally changing that value.
How to publish a release
-
Choose the next version number.
-
Update
[project].versioninpyproject.tomland any checked-in version constants that backtau --version. -
Run the release checks locally, for example:
uv run pytest uv run ruff check . uv run mypy -
Open a PR with the version bump and release notes.
-
Merge the PR to
mainafter checks pass. -
Create and publish a GitHub Release from
mainusing a tag that matches the package version, for examplev0.1.1. -
The
Publish Python packageworkflow runs from the published GitHub Release and uploads the package to PyPI. -
Verify the release at https://pypi.org/project/tau-ai/.
Do not rely on the version-bump PR merge alone to publish the package. The release is intentionally triggered by publishing the GitHub Release.
Duplicate-version protection
Before publishing, confirm that the package name and version do not already exist on PyPI. PyPI does not allow replacing an existing file for the same version, so a duplicate upload must be fixed with a new version number.
Safe failure behavior
If pyproject.toml changes without a GitHub Release, or a normal main commit
lands without a release being published, the workflow does not publish. This
keeps package versions meaningful and makes the production release process easy
to audit.