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

HEIR requires a recent C compiler (see clang_matrix for version-specific support, recent GCCs also tend to work), and some backends like OpenFHE require libomp-dev.

HEIR depends on LLVM (from source) so a clean build may take 15-30 minutes depending on your machine.

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

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.15.dev0.tar.gz (14.2 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.15.dev0-cp310-abi3-manylinux_2_28_x86_64.whl (37.4 MB view details)

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

belfort_heir-2026.6.15.dev0-cp310-abi3-manylinux_2_28_aarch64.whl (36.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

belfort_heir-2026.6.15.dev0-cp310-abi3-macosx_11_0_arm64.whl (40.4 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: belfort_heir-2026.6.15.dev0.tar.gz
  • Upload date:
  • Size: 14.2 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.15.dev0.tar.gz
Algorithm Hash digest
SHA256 5f60ef7adfa8a5a86fe070bc4ddb98b2898e040042d3e4b897cbe7c20a7ff9b6
MD5 a78a02da143ba5a05d9b115af751a3e2
BLAKE2b-256 ec32f7207a5c165c46f428a9a737ef683e39c578628b385c37463f5e70072212

See more details on using hashes here.

Provenance

The following attestation bundles were made for belfort_heir-2026.6.15.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.15.dev0-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for belfort_heir-2026.6.15.dev0-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39cde525b8a383bdd7d5695c30eb9b4034867ff0712eeb0972459b5084091f5d
MD5 70a8b03371cc3d05ff523714b7d3ae13
BLAKE2b-256 206485d3f4c085a824786f65c9366f9c4365e7e29a12fe47d804f09675b3a486

See more details on using hashes here.

Provenance

The following attestation bundles were made for belfort_heir-2026.6.15.dev0-cp310-abi3-manylinux_2_28_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.15.dev0-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for belfort_heir-2026.6.15.dev0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6a9397f8d78d291ac80f270971ee9f07963dd7702ac73bd1943ec21b4370cfa3
MD5 dbcde3752a67b2231566516e6ca25650
BLAKE2b-256 c63a9a2454d3518ecd33287ead48ad8fd53d8363250d4de98161715a6e9c1a0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for belfort_heir-2026.6.15.dev0-cp310-abi3-manylinux_2_28_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.15.dev0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for belfort_heir-2026.6.15.dev0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c429c7711ac301026f805e5ac0ecdce22845d229fa75770cf0a1d9b792a2fce0
MD5 978e08dd51390dd7222d49799c736bae
BLAKE2b-256 37adbdcd2b46ec2e57fed2c23443c4f1a64ce66669c51b4e22c11ec5a7ee97a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for belfort_heir-2026.6.15.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