Skip to content

pasteurlabs/tesseract-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

396 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Tesseract Core

Universal, autodiff-native software components for Simulation Intelligence πŸ“¦

Read the docs | Showcases & tutorials | Report an issue | Community forum | Contribute


DOI SciPy

The problem

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.

The solution

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.

Who is this for?

  • 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.

Example: Shape optimization across tools

Topology-optimized bracket produced by a differentiable Tesseract pipeline

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.

Quick start

Demo: install, build, and run a Tesseract in under a minute
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"])

Core features

  • 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 for a Tesseract
Auto-generated API documentation (tesseract apidoc).

The Ecosystem

  • 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.

Learn more

Citing Tesseract

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}
}

License

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.