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.

Quickstart (heir-opt, heir-translate)

The python package heir_py ships with the heir-opt and heir-translate. If you install via virtualenv, the binaries will be in your venv/bin.

venv/bin/heir-opt --help

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

heir_py-2026.4.1.tar.gz (13.7 MB view details)

Uploaded Source

Built Distributions

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

heir_py-2026.4.1-cp311-abi3-manylinux_2_28_x86_64.whl (36.5 MB view details)

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

heir_py-2026.4.1-cp311-abi3-manylinux_2_28_aarch64.whl (35.1 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

heir_py-2026.4.1-cp311-abi3-macosx_11_0_arm64.whl (39.3 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

Details for the file heir_py-2026.4.1.tar.gz.

File metadata

  • Download URL: heir_py-2026.4.1.tar.gz
  • Upload date:
  • Size: 13.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for heir_py-2026.4.1.tar.gz
Algorithm Hash digest
SHA256 ece38a361419afcaec5c596851ea1c39df6b688977afe9399c40d7368b1ea7aa
MD5 c535b8acedbf57e30bc132d4fe3b6dd4
BLAKE2b-256 999a99f95bc05e6ed0bb290b6114f98f4d2880d79c3a62473eb0647b5d0e453a

See more details on using hashes here.

Provenance

The following attestation bundles were made for heir_py-2026.4.1.tar.gz:

Publisher: wheels.yml on google/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 heir_py-2026.4.1-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for heir_py-2026.4.1-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b085b313606a808d92b8b5c9dfb871ea70ce6fb956b9e4f94a9e70c82af6d7b
MD5 63d6644f4f86401ce9a2c46fbd698369
BLAKE2b-256 87a20bf541025bc97c80f9adb5956a8a13c12cef2c889d6d5a29e31e032d157f

See more details on using hashes here.

Provenance

The following attestation bundles were made for heir_py-2026.4.1-cp311-abi3-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on google/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 heir_py-2026.4.1-cp311-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for heir_py-2026.4.1-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 69edcaa2591ac117c5eefbb2396f7751b2be16b8cd87c13a38de8576c1cb9a2a
MD5 d274bdb947afb9be5d75138dc1f14e33
BLAKE2b-256 22b305768d0c64c536ec54a0e5b2adc3d948a6b01cc0a9cd6e9e89a9740ffee2

See more details on using hashes here.

Provenance

The following attestation bundles were made for heir_py-2026.4.1-cp311-abi3-manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on google/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 heir_py-2026.4.1-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for heir_py-2026.4.1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78b1990aa2b228a29d115c694b54150d063dd45ebbc1447c64d76b7c944ef2d5
MD5 e548527da575ea7bad32987bdca596fa
BLAKE2b-256 d6564b62b1af8c1356fc6b7f9f4b702c7e11a2e80b041392de5760c1f5c3a5b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for heir_py-2026.4.1-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: wheels.yml on google/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