# Tesseract Core: Universal components for differentiable scientific computing

> Source: <https://github.com/pasteurlabs/tesseract-core>
> Published: 2026-07-16 13:08:02+00:00

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 <name>`

).

[
](https://github.com/pasteurlabs/tesseract-core/blob/main/docs/img/apidoc-screenshot.png)

*Auto-generated API documentation ( tesseract apidoc).*

— CLI, Python SDK, and runtime (this repo).[Tesseract Core](https://github.com/pasteurlabs/tesseract-core)— Embed Tesseracts as JAX primitives into end-to-end differentiable JAX programs.[Tesseract-JAX](https://github.com/pasteurlabs/tesseract-jax)— Embed Tesseracts as PyTorch operators into end-to-end differentiable PyTorch programs.[Tesseract-Torch](https://github.com/pasteurlabs/tesseract-torch)— Auto-generate interactive web apps from Tesseracts.[Tesseract-Streamlit](https://github.com/pasteurlabs/tesseract-streamlit)

[Documentation](https://docs.pasteurlabs.ai/projects/tesseract-core/latest/)[Creating your first Tesseract](https://docs.pasteurlabs.ai/projects/tesseract-core/latest/content/creating-tesseracts/create.html)[Differentiable programming guide](https://docs.pasteurlabs.ai/projects/tesseract-core/latest/content/introduction/differentiable-programming.html)[Design patterns](https://docs.pasteurlabs.ai/projects/tesseract-core/latest/content/creating-tesseracts/design-patterns.html)[Example gallery](https://docs.pasteurlabs.ai/projects/tesseract-core/latest/content/examples/example_gallery.html)

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](https://github.com/pasteurlabs/tesseract-core/blob/main/LICENSE) 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.
