All notable changes to this project will be documented in this file.
- Allow
*PathReferences in apply schemas (#555) - Add native windows support (#559)
- Support Python 3.14 (#388)
- Add matlab example (#560)
- Automatically create network specified via --network option if it does not exist (#544)
- Don't hard wrap tracebacks (#539)
- False-positive 'image not found' errors when docker is in resource saving mode (#535)
- Resource leak when using
TesseractReference+ more fault tolerance when HTTP sessions time out (#543) - Make logging from subprocesses more reliable (#551)
- Thread live logging through
logger.infoinstead of printing directly to stderr (#536)
- Add performance guide (#508)
- Document how to use
tesseract serve --networkparameter (#530) - Update rocket fin example to recent versions of Tesseract (#541)
- Add experimental finite difference functionality for auto-generated AD endpoints (#469)
- Issue mega sprint - allow package_data outside root, cli alias
tesseract-core, flags to pass arguments todocker runandtesseract runtime,json+binrefsupport in SDK, better support fortesseract serve --network host(#491) - Add gradient fallback helpers (
tesseract_core.runtime.experimental.vjp_from_jacobian, ...) for deriving AD endpoints from each other (#511) - Add optional metadata field in tesseract_config.yaml (#523)
- Remove fixed 100ms runtime overhead for every call (#485)
- Reduce performance overhead, especially in array encoding/decoding (#522)
- Rendering of custom validation errors over HTTP (#534)
- Editing and restructuring of docs, README, and landing page (#510)
- More restructurings and polish (#529)
- Add missing dep, test default install (no extras) + basic usage on CI (#514)
- Deprecate
Tesseract(url)constructor in favor ofTesseract.from_url(#486) - Add live streaming of logs (#482)
- Validation of (co)tangents (#493)
- Add profile and trace mode, plus debugging guide (#484)
- Better multiprocessing support from within
tesseract_api.py(#488) - Ensure deprecration warning is actually visible (#487)
- Ensure $HOME is set in Tesseracts and has appropriate permissions (#490)
- Relax permissions on
/tmpinside Tesseracts after build-time check (#506)
- Simplify runtime dependency handling (#495)
- Make
stream_logsa constructor-level parameter in Python SDK (#509)
- Add Fortran heat equation example (#477)
- Tesseract init doesn't prompt if name not provided (#501)
- Documentation mega issue sprint (#492)
- Add better validation errors (#471)
- Add new
testcommand totesseract runandtesseract-runtimeto support regression testing (#411)
- Use libnss_wrapper instead of addmeplease to create a home for any uid:gid specified at runtime (#476)
- (sdk) Change default Python SDK
output_formatto b64 for performance reasons (#422) - Add ability to specify mlflow tag for tesseract (#426)
- Remove unused tesseract-dir option and fixture (#436)
- Expose docker memory limit to CLI and Python API (#429)
- Add mlflow as default (#428)
- Add port to serve command in multi-helloworld readme (#421)
- Reachability check uses mlflow username/password if provided (#416)
- Use mlflow env variables directly for mlflow auth (#434)
- Ensure container users always exist (#427)
- Allow
RootModels in apply schema endpoints (#440)
- Point SI definition to pasteurlabs technology (#413)
- Add mlflow auth information to docs (#417)
- Update docstring and tesseract input/output handling (#412)
- 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)
- 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)
- [breaking] Replace python 3.9 with 3.10 as oldest supported version (#401)
- 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)
- Create tesseract user and group (#369)
- Avoid a potential feedback loop in output redirection (#367)
- Add run_id parameter to Tesseract.apply and friends (#352)
- Add pydantic type making other Tesseracts callable (needed for HOTs) (#343)
- 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)
- [breaking] Use uv to install python virtual env (#353)
- Runtime/file_interactions unit tests (#338)
- [breaking] Automatically redirect stdout + stderr to logfile within Tesseract endpoints (#265)
- Add e2e tests for MPA (both file and MLflow backend) (#277)
- [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)
- 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)
- [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)
- 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)
- Fix + test for missing deps in pip install test (#278)
- 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)
- 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)
- Use RuntimeConfig for --input-path/--output-path (#264)
- Fix docstring on metrics example (#269)
- (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)
- 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)
- 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)
- (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)
- 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)
- Updated diagram on tesseract interfaces (#150)
- Tesseract Example Gallery (#149)
- Remove how-to guides froms sidebar (#177)
- [breaking] Remove docker_py usage in favor of custom client that uses Docker CLI (#33)
- (sdk) Allow users to serve Tesseracts using multiple worker processes (#135)
- Update quickstart (#144)
- Fixed typos in jax recipe (#134)
- (sdk) Various improvements to SDK UX (#136)
- Allow creating tesseract objects from python modules (#122)
- Also allow passing an imported module to Tesseract.from_tesseract_api (#130)
- Fix Tesseract SDK decoding and error handling (#123)
- Add requirement provider config to build Tesseracts from conda env specs (#54)
- Introduce debug mode for served Tesseracts to propagate tracebacks to clients (#111)
- Ensure Ubuntu-based base images work as expected; change default to vanilla Debian (#115)
- Enable users to opt-in to allowing extra fields in Tesseract schemas by setting
extra="allow"(#117) - Meshstats
abstract_eval(#120)
- Pydantic 2.11.0 compatibility (hotfix) (#106)
- Implement check_gradients runtime command (#72)
- [breaking] Validate endpoint argument names before building (#95)
- OpenAPI schema failure for differentiable arrays with unknown shape (#100)
- Prevent silent conversion of float array to int (#96)
- Use fixed uid/gid 5000:5000 for all tesseracts (#102)
- Use uid 1000 instead of 5000 (#104)
- Unpack endpoint payload (#80)
- Dependencies and user privileges (#91)
- Friendlier error messages when input validation fails (#71)
- Pytorch initialize template (#53)
- Add
diffablefield to input/output json schemas (#82) - Add stdout output for tesseract build (#87)
- Various docs nits + UX fixes (#85)
- Raise proper error (
ValidationError) for invalid inputs (#67) - Add
abstract_evalmethod totesseract_core.Tesseract(#76)
- Jax template now uses equinox
filter_jitto allow non-array inputs (#56) - Added pip as dependency (#58)
- Issue #74 (#75)
- Updated comments in jax recipe and docs on Differentiable flag (#65)
- Validate ShapeDType in abstract-eval schemas (#40)
- Resolve paths before passing volumes to docker (#48)
- Dangling Tesseracts in e2e tests (#51)
- Sanitize error output (#52)
- Python API for Julia example (#37)
- Fix links again (#49)
- Address issues in installing and first steps with Tesseract (#30)
- Remove LocalClient and use HTTPClient for local Tesseracts as well (#27)
- Python API for PyTorch example (#24)
- Fix RBF fitting example (#25)