Skip to main content

The HEIR compiler

Project description

HEIR: Homomorphic Encryption Intermediate Representation

GitHub Workflow Status (with event) GitHub Contributors GitHub Discussions GitHub License OpenSSF Scorecard

An MLIR-based toolchain for homomorphic encryption compilers. Read the docs at the HEIR website.

For more information on MLIR, see the MLIR homepage.

Quickstart (Python)

Pip install the heir_py package

pip install heir_py

Then run an example:

from heir import compile
from heir.mlir import I64, Secret

@compile()  # defaults to scheme="bgv", OpenFHE backend, and debug=False
def func(x: Secret[I64], y: Secret[I64]):
    sum = x + y
    diff = x - y
    mul = x * y
    expression = sum * diff + mul
    deadcode = expression * mul
    return expression

func.setup()
enc_x = func.encrypt_x(7)
enc_y = func.encrypt_y(8)
result_enc = func.eval(enc_x, enc_y)
result = func.decrypt_result(result_enc)

print(
  f"Expected result for `func`: {func.original(7,8)}, FHE result:"
  f" {result}"
)

This will compile the function above using the BGV scheme to machine code via the OpenFHE backend. Then calling the function will encrypt the inputs, run the function, and return the decrypted result. The function call foo(7, 8) runs the entire encrypt-run-decrypt flow for ease of testing.

Building from source

This project uses bazel for its build system. Install bazelisk to manage the bazel version automatically. Then, with bazel on your path (pointing to bazelisk), run the following to build the main pass-running tool.

bazel build //tools:heir-opt

Or run an end-to-end test like

bazel test //tests/Examples/openfhe/ckks/halevi_shoup_matvec:all

HEIR depends on LLVM (from source) so a clean build may take 30 minutes depending on your machine. For faster builds, use BuildBuddy. Sign up for an account, create an API key, and add the following to .bazelrc.user in the root of the HEIR workspace:

common --remote_header=x-buildbuddy-api-key=<YOUR_API_KEY>
common --config=remote

This should reduce a clean build time to about 5 minutes.

See the bazel tips page for more example commands and tips on using bazel.

Supported backends and schemes

Backend Library BGV BFV CKKS CGGI
OpenFHE
Lattigo
tfhe-rs
Jaxite

Note some backends do not support all schemes.

Contributing

There are many ways to contribute to HEIR:

Citations

The HEIR project can be cited in in academic work through following entry:

@misc{ali2025heir,
      title={HEIR: A Universal Compiler for Homomorphic Encryption},
      author={Asra Ali and Jaeho Choi and Bryant Gipson and Shruthi Gorantala
              and Jeremy Kun and Wouter Legiest and Lawrence Lim and Alexander
              Viand and Meron Zerihun Demissie and Hongren Zheng},
      year={2025},
      eprint={2508.11095},
      archivePrefix={arXiv},
      primaryClass={cs.CR},
      url={https://arxiv.org/abs/2508.11095},
}

Support disclaimer

This is not an officially supported Google product.

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

belfort_heir-2026.6.27.dev0.tar.gz (14.3 MB view details)

Uploaded Source

Built Distributions

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

belfort_heir-2026.6.27.dev0-cp310-abi3-manylinux_2_34_x86_64.whl (34.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.34+ x86-64

belfort_heir-2026.6.27.dev0-cp310-abi3-manylinux_2_34_aarch64.whl (32.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.34+ ARM64

belfort_heir-2026.6.27.dev0-cp310-abi3-macosx_11_0_arm64.whl (35.8 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file belfort_heir-2026.6.27.dev0.tar.gz.

File metadata

  • Download URL: belfort_heir-2026.6.27.dev0.tar.gz
  • Upload date:
  • Size: 14.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for belfort_heir-2026.6.27.dev0.tar.gz
Algorithm Hash digest
SHA256 952fa3d66574d86ffc78483612b76751454465d27835b1169812fc3fc6816b61
MD5 3f983b8df7dab5c71263bd378e66020e
BLAKE2b-256 bdd3eeb1b133c4f772e41b4f72ad6f2998f67b5160b927273c0b593142e8be4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for belfort_heir-2026.6.27.dev0.tar.gz:

Publisher: release.yml on belfortlabs/heir

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

File details

Details for the file belfort_heir-2026.6.27.dev0-cp310-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for belfort_heir-2026.6.27.dev0-cp310-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4dcc809e7cf2115e0e5e00a4a41319d726e3d84a61f1b49796307764a9bab824
MD5 6bb4ec68afa660f729d02bb59b9c3a8f
BLAKE2b-256 8c8e9e749b073eb99a434fb24d47e99c0931ca1e01d22e505b61475bb73090f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for belfort_heir-2026.6.27.dev0-cp310-abi3-manylinux_2_34_x86_64.whl:

Publisher: release.yml on belfortlabs/heir

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

File details

Details for the file belfort_heir-2026.6.27.dev0-cp310-abi3-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for belfort_heir-2026.6.27.dev0-cp310-abi3-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 692cc4ed947e4c6dea130312a62e7452846618600cfa4e351bb40e041ef0a47f
MD5 097d31ee48fb2d24df37dcf0a897fb01
BLAKE2b-256 7e41db64ea056be77d1824b69231fd30ccf7ca5faf6552652b343df2093a7433

See more details on using hashes here.

Provenance

The following attestation bundles were made for belfort_heir-2026.6.27.dev0-cp310-abi3-manylinux_2_34_aarch64.whl:

Publisher: release.yml on belfortlabs/heir

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

File details

Details for the file belfort_heir-2026.6.27.dev0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for belfort_heir-2026.6.27.dev0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4bbabdcba6db34512c0b6100b3a5a889eef35a4f9f7db8b59be050194d2739c4
MD5 4ab3a72e57da29d2eef60e135b050d97
BLAKE2b-256 573560babdae8e133538261b8eba48827b969d6e3333ca95dc315034a8716b29

See more details on using hashes here.

Provenance

The following attestation bundles were made for belfort_heir-2026.6.27.dev0-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on belfortlabs/heir

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