Universal, autodiff-native software components for Simulation Intelligence π¦
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:
# Install Tesseract Core
$ pip install tesseract-core
# Create a new project in the current directory
$ tesseract init --name my-tesseract
# Edit `tesseract_api.py`, or download an example
$ curl -so ./tesseract_api.py https://raw.githubusercontent.com/pasteurlabs/tesseract-core/main/examples/vectoradd/tesseract_api.py
# Build it into a container
$ tesseract build .
# Run it
$ tesseract run my-tesseract apply '{"inputs": {"a": [1, 2, 3], "b": [10, 20, 30]}}'
# β {"result": [11, 22, 33]}
# Compute the Jacobian
$ tesseract run my-tesseract jacobian '{"inputs": {"a": [1, 2, 3], "b": [10, 20, 30]}, "jac_inputs": ["a"], "jac_outputs": ["result"]}'
# β {"result": {"a": [[1, 0, 0], [0, 1, 0], [0, 0, 1]]}}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).
- Tesseract Core β CLI, Python SDK, and runtime (this repo).
- Tesseract-JAX β Embed Tesseracts as JAX primitives into end-to-end differentiable JAX programs.
- Tesseract-Streamlit β Auto-generate interactive web apps from Tesseracts.
- Documentation
- Creating your first Tesseract
- Differentiable programming guide
- Design patterns
- Example 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.