Skip to main content

A toolkit for universal, autodiff-native software components.

Project description

Tesseract Core

Universal components for differentiable scientific computing 📦

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tesseract_core-1.9.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tesseract_core-1.9.0-py3-none-any.whl (140.4 kB view details)

Uploaded Python 3

File details

Details for the file tesseract_core-1.9.0.tar.gz.

File metadata

  • Download URL: tesseract_core-1.9.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tesseract_core-1.9.0.tar.gz
Algorithm Hash digest
SHA256 82b3a0cb2a7f831aaa338495ca0e22556bba8d721a2a197b9221182e307bda43
MD5 ce5972a244113aa3c10080cc0cdaf9db
BLAKE2b-256 e9954c197d058dcf5b61a5ac35e0dc901f262539e0824ac67206b37d3016aa7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_core-1.9.0.tar.gz:

Publisher: publish.yml on pasteurlabs/tesseract-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tesseract_core-1.9.0-py3-none-any.whl.

File metadata

  • Download URL: tesseract_core-1.9.0-py3-none-any.whl
  • Upload date:
  • Size: 140.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tesseract_core-1.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 10052655503f30c4ae4a3cb42e15a8eadf7545632c87f5dabc26a348e10421cf
MD5 c90ee74b5fe3fc66b0561ef379fafef8
BLAKE2b-256 7d8537cf811081f3fa18e8f0234f3d9e4e255fff55621a2e1e6aedf8658f3f3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_core-1.9.0-py3-none-any.whl:

Publisher: publish.yml on pasteurlabs/tesseract-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page