Tesseract Core Documentation

Tesseract packages scientific software into portable, self-documenting, differentiable components. New here? Start with the Get Started tutorial or the Installation guide.

How it works

Tesseract interfaces

Internal and external interfaces of a Tesseract.

Every Tesseract has a primary entrypoint, apply, which wraps a software functionality of your choice. All other endpoints relate to this entrypoint: abstract_eval returns output structure, jacobian computes derivatives, and so on.

There are several ways to interact with Tesseracts:

  1. Define entrypoints in tesseract_api.py

  2. Build a container with tesseract build

  3. Serve via HTTP with tesseract serve

  4. Invoke via CLI, HTTP, or the Python SDK

Features and limitations

  • Self-documenting — Tesseracts announce their interfaces, so users can inspect them without reading source code and perform static validation without running the code.

  • Auto-validating — Input data is automatically validated against the schema, so internal logic can assume the data is in the expected format.

  • Autodiff-native — Tesseracts support differentiable programming and integrate as native operations in PyTorch and JAX — but exposing derivatives is strictly optional.

  • Batteries included — Every Tesseract ships with a containerized runtime, a CLI, a REST API, and a Python SDK.

  • Python as glue — Tesseracts may use any software under the hood, but they always use Python as glue between the runtime and the wrapped functionality. Support for Python projects is more mature than other languages.

  • Single entrypoint — Each Tesseract has a single apply entrypoint. To expose N functions, create N Tesseracts.

  • Context-free — Tesseracts are not aware of outer-loop orchestration or runtime details.

  • Runtime overhead — Tesseracts are designed for compute kernels that run at least several seconds, so they may not suit very low-latency workloads.

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