Tesseract Core: Universal components for differentiable scientific computing Pasteur Labs released Tesseract Core, an open-source framework for packaging scientific software into portable, differentiable components that can run across local machines, cloud, and HPC clusters. The tool enables end-to-end optimization of heterogeneous scientific pipelines by propagating gradients through components written in different languages and using different differentiation strategies. Universal components for differentiable scientific computing πŸ“¦ Read the docs https://docs.pasteurlabs.ai/projects/tesseract-core/latest/ | Showcases & tutorials https://si-tesseract.discourse.group/c/showcase/11 | Report an issue https://github.com/pasteurlabs/tesseract-core/issues | Community forum https://si-tesseract.discourse.group/ | Contribute https://github.com/pasteurlabs/tesseract-core/blob/main/CONTRIBUTING.md 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 https://si-tesseract.discourse.group/t/parametric-shape-optimization-of-rocket-fins-with-ansys-spaceclaim-pyansys-and-tesseract/109 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 https://github.com/pasteurlabs/tesseract-jax from end-to-end gradients. Tip More examples in the example gallery https://docs.pasteurlabs.ai/projects/tesseract-core/latest/content/examples/example gallery.html and community showcases https://si-tesseract.discourse.group/c/showcase/11 . https://github.com/pasteurlabs/tesseract-core/blob/main/docs/img/demo.gif Getting started: install, build an example, and run it. Note Requires Docker https://docs.docker.com/engine/install/ and Python 3.10+. CLI: bash 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: python 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 https://docs.pasteurlabs.ai/projects/tesseract-core/latest/content/examples/building-blocks/fortran.html , or any executable behind a thin Python API. Self-documenting β€” Auto-generated API docs and schemas for every Tesseract tesseract apidoc