Releases: pasteurlabs/tesseract-core
v1.2.0
Release v1.2.0
This release brings several quality-of-life improvements to Tesseract Core and many new examples and showcases in our docs.
Breaking change: Support for Python 3.9 is now removed (has been EOL since October 2025). If you rely on Python 3.9 please pin to tesseract_core<1.2.0 and upgrade as soon as possible.
What's Changed
Features
- Add /tesseract to PYTHONPATH, similar to native execution (#372)
- Add example for differentiable quadratic programming (QP) solver (#345)
- Ensure modules next to tesseract_api.py can always be imported (#400)
- Adding SpaceClaim/PyMAPDL Tesseract example and docs (#403)
Bug Fixes
- Change docs to recommend mlflow-data volume mount as rw (#379)
- Pin Python to <3.14 to resolve docs build failure (#390)
- Switch MLflow tests from deprecated file backend to sqlite (#389)
- Catch identical mounted volumes (#337)
- Remove user creation logic, set
HOMEenv var instead (#393) - Ensure log messages aren't lost when application exits (#392)
Refactor
- [breaking] Replace python 3.9 with 3.10 as oldest supported version (#401)
Documentation
- Ansys shapeopt showcase (#404)
- Add Ansys Fluent QoI-based workflow example (#399)
- Update showcase READMEs to reflect + link to forum posts (#405)
- Add open-source alternative to Ansys-based shapeopt to showcase folder (#408)
- Fix Tesseract names in open source shapeopt showcase (#409)
Full diff: v1.1.1...v1.2.0
v1.1.1
v1.1.0
Release v1.1.0
What's Changed
Features
- Add run_id parameter to Tesseract.apply and friends (#352)
- Add pydantic type making other Tesseracts callable (needed for HOTs) (#343)
Bug Fixes
- Require name and version to be non-empty in TesseractConfig (#336)
- Strip trailing slash from URL's passed to Tesseract HTTP client (#340)
- Handling of tree_transforms edge cases (#331)
- (sdk) Cast sets to tuples in Pytorch template when used as positional args (#347)
- Use host port as api port (#330)
- Allow digits in the pre-release semver tag (#355)
Refactor
- [breaking] Use uv to install python virtual env (#353)
Testing
- Runtime/file_interactions unit tests (#338)
Full diff: v1.0.0...v1.1.0
v1.0.0
Release v1.0.0
🎉 Tesseract Core has reached v1.0! 🎉
This is a huge release with several breaking changes, and an important milestone in the development of the project.
Breaking changes and how to upgrade
- New output folder structures
- When paired with
--output-path(and optionally--output-format/--output-file),tesseract runandtesseract servenow produce a new folder structure integrating outputs, logs, metrics, artifacts, and more.tesseract serveautomatically splits those per request. - This is breaking since
tesseract run --output-pathdoes not imply writing return payloads to a file anymore. Use the new--output-fileargument to control this behavior.
- New image tags
- After
tesseract build, images are automatically tagged using theversionkey fromtesseract_config.yaml. This should not be breaking existing workflows in the vast majority of cases, but may lead to unexpected interactions when relying on the implicitlatesttag (that is now added explicitly).
- No more msgpack
- Support for msgpack encoded payloads has been removed. All payloads are now required to be valid JSON. We recommend to use the
json+base64format instead.
- Bye-bye Docker Compose
tesseract servedoes not rely on Docker Compose anymore. This simplifies the stack considerably, but also means that only one Tesseract can be served per call totesseract serve.- To recover the old behavior it is required to call
tesseract servemultiple times, potentially with a--networkparameter to ensure Tesseracts are reachable from each other. - The
--service-namesCLI arg has been renamed to--network-alias.
- Removed
input-schema/output-schemaendpoints
- The schema endpoints have been removed from all interfaces (CLI, REST, Python API). Instead, use
openapi-schemathat contains the information for both inputs and outputs for all endpoints.
- Overhauled command line interfaces
- The way
tesseractandtesseract-runtimework is now more consistent with each other. - As a consequence,
tesseract run <mytess> --helpnow prints thetesseract runhelp, not that oftesseract-runtime. To print the help of<mytess>, please usetesseract run <mytess> apply --help. - Also,
tesseract-runtimecan now be fully configured from the command line (seetesseract-runtime --help). - Most subcommands of
tesseract-runtimedo not accept CLI options anymore, that is,tesseract-runtime apply --output-path .is nowtesseract-runtime --output-path . apply.
For further help on how to upgrade, please visit the Tesseract Forum. For a list of all changes, please see the changelog below.
Changes to how Tesseract Core is developed
Since we have reached v1.0 now, we're going to be stricter with backwards compatibility, deprecation, and versioning. What exactly this entails is not defined yet, but a few rules of thumb apply:
- The external Tesseract API (i.e., what clients see) will stay 100% backwards compatible until v2.0.
- Other interfaces may still change, but will do so at a slower pace and with deprecation cycles (i.e., warning users about features that are flagged for removal instead of removing them right away).
- Breaking changes must be clearly marked as such, and patch version releases must not include breaking changes of any kind.
Where do we go from here?
Reaching v1.0 does not mean that development is done, or that no new features will be added. On the other hand, it does mean that Tesseracts have matured to the point where we don't envision drastic changes to the way they work (at least not in the foreseeable future). This gives us the breathing room to focus on improving and extending what's already there.
In other words, now is a great time to start building on top of Tesseracts! We're excited to see what the community decides to do with this technology.
What's Changed
Features
- [breaking] Use
versionfromtesseract_config.yamlas default Docker image tag (#267) - Add network argument to
tesseract serve(#285) - Improved IDE type hints for array annotations (#291)
- Add --network-alias option (#297)
- Improve healthcheck after serve, add restart policy (#296)
- Add hot example (#288)
- Add network args to from_image (#299)
- Add
--output-pathto serve (#295) - [breaking] Drop msgpack support (#303)
- Introduce job ID to control the location of output logs / artifacts (#314)
- Also print text logs to stderr (#311)
- Add experimental
require_filefunction to mark externally mounted files as required at runtime (#261)
Bug Fixes
- Move private pip imports into relevant func scope (#292)
- Correct error message on use of T created via from_image (#298)
- Ensure signature consistency between
engine.serveandTesseract.from_image(#302) - Exclude broken version of setuptools-scm (#312)
- Use TESSERACT_MLFLOW_TRACKING_URI instead of MLFLOW_TRACKING_URI (#313)
- Make
tesseract serve --output-formatbehave as expected (#307) - Test that LogPipe implementations do not diverge (#316)
- Use
--input-path/--output-pathasbase_dirinjson+binrefencoder (#304) - Bring back CLI option shorthands (#323)
- Ensure .dockerignore is observed to avoid copying large amounts of data to build contexts (#218) (#321)
- Change location of mlruns when TESSERACT_MLFLOW_TRACKING_URI is a relative path (#325)
Refactor
- [breaking] Remove ability to serve multiple tesseracts / docker compose (#286)
- Overhaul all clis (#301)
- [breaking] Remove input-schema and output-schema endpoints (#308)
- Transpose folder structure (#318)
Documentation
- Add link to pre-commit library (#327)
- Document how to use Tesseract via SLURM on HPC clusters (#320)
- Add Documentation for podman usage via TESSERACT_DOCKER_EXECUTABLE (#324)
Full diff: v0.10.2...v1.0.0
v0.10.2
Release v0.10.2
This is a hotfix to make sure pip install tesseract-core works as intended.
What's Changed
Bug Fixes
- Fix + test for missing deps in pip install test (#278)
Full diff: v0.10.1...v0.10.2
v0.10.1
Release v0.10.1
This release brings several new features around file-based input / output data handling and experimental support for logging metrics / artifacts to MLFlow or disk.
For more information on how to use the new logging capabilities please refer to the Tesseract Core documentation.
What's Changed
Features
- Add --input-path to tesseract cli and TESSERACT_INPUT_PATH to runtime (#249)
- Introduce logging metrics, parameters and artifacts to file or MLflow (#229)
- Add top-level description field to OAS (#268)
Bug Fixes
- Ensure tracebacks are always propagated through Python client (#228)
- Ensure default workdir is writable (#263)
- Tesseract-runtime default io paths (#266)
- Add volume statements to dockerfile to ensure logs / metrics / data are always written to a volume (#270)
- Add tests for MLflow backend using MLflow's capabillity to write to file (#271)
- Bug in volume error handling (#272)
Refactor
- Use RuntimeConfig for --input-path/--output-path (#264)
Documentation
- Fix docstring on metrics example (#269)
Full diff: v0.10.0...v0.10.1
v0.10.0
Release v0.10.0
This is a big release with several new features and quality-of-life improvements:
- 🎉 Tesseracts now support remote debugging via
debugpy. For example, this allows users to connect to a running Tesseract via VSCode for interactive debugging sessions, even in cases where the Tesseract is running on another machine. See the docs for more information on how to get started. tesseract runandtesseract servesupport several new arguments, including--environment,--user, and--service-names. This provides users with more fine-grained control over how Tesseracts are executed.tesseract buildnow supports--skip-checksto skip post-build checks in cases where they cannot succeed.- Container user handling is now more consistent, fixing many permission errors when using mounted volumes. See also our docs on Volume mounts and user permissions.
Thanks to all contributors!
(see full changelog below for an overview of all changes)
What's Changed
Features
- (sdk) Expose no compose in Python API (#223)
- [breaking] Enable remote debugging (#184)
- Add --service-names argument to
tesseract serveso served Tesseracts can be reached by name (#206) - Allow skipping checks by passing
--skip-checksflag to the tesseract build command (#233) - Add Volume class to docker client and --user flag to cli (#241)
- Pass env variables through
tesseract runandtesseract serve(#250) - Allow to run T containers as any user, for better volume permission handling (#253)
Bug Fixes
- Fix teardown command crashing for wrong proj ID (#207)
- Add FileNotFoundError to docker info (#215)
- Gracefully exit when Docker executable not found (#216)
- "docker buildx build requires exactly 1 argument" error when using
tesseract build --forward-ssh-agent(#231) - Remove zip(strict=True) for py39 support (#227)
- Allow to set all configs via
tesseract build --config-override(#239) - Add environment to no_compose (#257)
Documentation
- Add in data assimilation tutorial and refactor example gallery (#200)
- Remove reference to Hessian matrices (#221)
- New user usability improvements (#226)
- Fine-tune onboarding experience (#243)
Full diff: v0.9.1...v0.10.0
v0.9.1
Release v0.9.1
This release brings several improvements and bug fixes that make it easier to work with Tesseracts.
The tesseract CLI now supports additional configuration:
- Config for the used Docker executables via
TESSERACT_DOCKER_EXECUTABLE,TESSERACT_DOCKER_COMPOSE_EXECUTABLE, andTESSERACT_DOCKER_BUILD_ARGSenvironment variables. - Config for serving Tesseracts without Docker Compose via
tesseract serve --no-compose. - Config for the network interfaces to bind to via
tesseract serve --host-ip.
This makes Tesseract more versatile to use, particularly in HPC and root-less environments.
What's Changed
Features
- (cli) Add serve --no-compose and other missing cli options (#161)
- (sdk) Make docker executable and build args configurable (#162)
- More comprehensive validation of input and output schema during
tesseract-runtime check(#170) - Add ability to configure host IP during
tesseract serve(#185)
Bug Fixes
- Add new cleanup fixture to track docker assets that need to be cleaned up (#129)
- Some validation errors do not get piped through the python client (#152)
- Podman compatibility and testing (#142)
- Apidoc CLI call used container ID in place of container object to retrieve host port (#172)
- Overhaul docker client for better podman compatibility and better error handling (#178)
- Sanitize all config fields passed as envvars to dockerfile (#187)
Documentation
- Updated diagram on tesseract interfaces (#150)
- Tesseract Example Gallery (#149)
- Remove how-to guides froms sidebar (#177)
Full diff: https://github.com/pasteurlabs/pasteurlabs/tesseract-core/compare/v0.9.0...v0.9.1
v0.9.0
What's Changed
- chore: ✅ Update pre-commit hooks by @github-actions in #140
- chore: 📦 Update dependencies by @github-actions in #139
- chore: bump astral-sh/setup-uv from 5 to 6 in the actions group by @dependabot in #141
- feat: Remove docker_py usage in favor of custom client that uses Docker CLI by @angela-ko in #33
- doc: update quickstart by @dionhaefner in #144
- feat(sdk): allow users to serve Tesseracts using multiple worker processes by @dionhaefner in #135
- chore: generate changelog for v0.9.0 by @dionhaefner in #146
New Contributors
- @angela-ko made their first contribution in #33
Full Changelog: v0.8.5...v0.9.0
v0.8.5
What's Changed
- chore: ✅ Update pre-commit hooks by @github-actions in #133
- chore: 📦 Update dependencies by @github-actions in #132
- fix: fixed typos in jax recipe by @zmheiko in #134
- fix(sdk): Various improvements to SDK UX by @dionhaefner in #136
- chore: Update changelog by @xalelax in #137
New Contributors
Full Changelog: v0.8.4...v0.8.5