Universal, autodiff-native software components for Simulation Intelligence π¦
Read the docs | Report an issue | Community forum | Contribute
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/commercial 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 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.
Note
Requires Docker and Python 3.10+.
$ pip install tesseract-core
# Clone and build an example
$ git clone https://github.com/pasteurlabs/tesseract-core
$ tesseract build tesseract-core/examples/vectoradd
# Run it
$ tesseract run vectoradd apply '{"inputs": {"a": [1, 2], "b": [3, 4]}}'
# β {"result": [4.0, 6.0], ...}
# Compute the Jacobian
$ tesseract run vectoradd jacobian '{"inputs": {"a": [1, 2], "b": [3, 4]}, "jac_inputs": ["a"], "jac_outputs": ["result"]}'
# See auto-generated API docs
$ tesseract apidoc vectoradd- Containerized β Docker-based packaging ensures reproducibility and dependency isolation
- Multi-interface β CLI, REST API, and Python SDK for the same component
- 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
- tesseract-core β CLI, Python API, 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
- Documentation
- Creating your first Tesseract
- Differentiable programming guide
- Design patterns
- Example gallery
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.
