Universal components for differentiable scientific computing π¦
Read the docs | Showcases & tutorials | Report an issue | Community forum | Contribute
Real-world scientific workflows span multiple tools, languages, and computing environments. You might have a mesh generator in C++, a solver in Julia, and post-processing in Python. Getting these to work together is painful. Getting gradients to flow through them for optimization is nearly impossible.
Existing autodiff frameworks work great within a single codebase, but fall short when your pipeline crosses framework boundaries or includes legacy tools.
Tesseract packages scientific software into self-contained, portable components that:
Run anywhereβ Local machines, cloud, HPC clusters. Same container, same results.** Expose clean interfaces**β CLI, REST API, and Python SDK. No more deciphering undocumented scripts.** Propagate gradients**β Each component can expose derivatives, enabling end-to-end optimization across heterogeneous pipelines.** Self-document**β Schemas, types, and API docs are generated automatically.
Researchers interfacing with (differentiable) simulators or probabilistic models, or who need to combine tools from different ecosystems.R&D engineers packaging research code for use by others, without spending weeks on DevOps.Platform engineers deploying scientific workloads at scale with consistent interfaces and dependency isolation.
The rocket fin optimization case study combines three Tesseracts:
[SpaceClaim geometry] β [Mesh + SDF] β [PyMAPDL FEA solver]
β |
βββββββββ gradients flow back ββββββββββ
Each component uses a different differentiation strategy (analytic adjoints, finite differences, JAX autodiff), yet they compose into a single optimizable pipeline that is one jax.grad call away from end-to-end gradients.
Tip
More examples in the example gallery and community showcases.
Getting started: install, build an example, and run it.
Note
Requires Docker and Python 3.10+.
CLI:
$ pip install tesseract-core
$ tesseract init --name my-tesseract
$ curl -so ./tesseract_api.py https://raw.githubusercontent.com/pasteurlabs/tesseract-core/main/examples/vectoradd/tesseract_api.py
$ tesseract build .
$ tesseract run my-tesseract apply '{"inputs": {"a": [1, 2, 3], "b": [10, 20, 30]}}'
$ tesseract run my-tesseract jacobian '{"inputs": {"a": [1, 2, 3], "b": [10, 20, 30]}, "jac_inputs": ["a"], "jac_outputs": ["result"]}'
Python SDK:
from tesseract_core import Tesseract
with Tesseract.from_image("my-tesseract") as t:
result = t.apply({"a": [1, 2, 3], "b": [10, 20, 30]})
jac = t.jacobian({"a": [1, 2, 3], "b": [10, 20, 30]}, jac_inputs=["a"], jac_outputs=["result"])
Containerizedβ Docker-based packaging ensures reproducibility and dependency isolation.** Multi-interface**β Use the same components via CLI, REST API, and Python SDK.** Differentiable**β First-class support for Jacobians, JVPs, and VJPs across component and network boundaries.** Schema-validated**β Pydantic models define explicit input/output contracts.** Language-agnostic**β Wrap Python, Julia, C++,Fortran, or any executable behind a thin Python API.Self-documentingβ Auto-generated API docs and schemas for every Tesseract (tesseract apidoc <name>
).
Auto-generated API documentation ( tesseract apidoc).
β CLI, Python SDK, and runtime (this repo).Tesseract Coreβ Embed Tesseracts as JAX primitives into end-to-end differentiable JAX programs.Tesseract-JAXβ Embed Tesseracts as PyTorch operators into end-to-end differentiable PyTorch programs.Tesseract-Torchβ Auto-generate interactive web apps from Tesseracts.Tesseract-Streamlit
DocumentationCreating your first TesseractDifferentiable programming guideDesign patternsExample gallery
If you use Tesseract in your research, please cite:
@article{TesseractCore,
doi = {10.21105/joss.08385},
url = {https://doi.org/10.21105/joss.08385},
year = {2025},
publisher = {The Open Journal},
volume = {10},
number = {111},
pages = {8385},
author = {HΓ€fner, Dion and Lavin, Alexander},
title = {Tesseract Core: Universal, autodiff-native software components for Simulation Intelligence},
journal = {Journal of Open Source Software}
}
Tesseract Core is licensed under the Apache License 2.0 and is free to use, modify, and distribute (under the terms of the license).
Tesseract is a registered trademark of Pasteur Labs, Inc. and may not be used without permission.