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

heir_py-2026.6.5.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.

heir_py-2026.6.5.dev0-cp310-abi3-manylinux_2_28_x86_64.whl (37.2 MB view details)

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

heir_py-2026.6.5.dev0-cp310-abi3-manylinux_2_28_aarch64.whl (35.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

heir_py-2026.6.5.dev0-cp310-abi3-macosx_11_0_arm64.whl (40.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file heir_py-2026.6.5.dev0.tar.gz.

File metadata

  • Download URL: heir_py-2026.6.5.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 heir_py-2026.6.5.dev0.tar.gz
Algorithm Hash digest
SHA256 3e3c68c0d4c8a8ae39fe31bf5414ddfbbefb886459dcf2aab62cb7cfdaa25401
MD5 8d2203a50b791a03e6d8d4c0990cb995
BLAKE2b-256 fc6bb69b6a0cf6cbcdd22dd0593e0812e0bb2c6689276ebaaa85f4f403207b1d

See more details on using hashes here.

Provenance

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

Publisher: release.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.6.5.dev0-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for heir_py-2026.6.5.dev0-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48f7dff79517088716655b28c3dcea45cff65c9a4c86c28728cbfedfca7cb59f
MD5 58b09f76ac83f0f22d3bf42790a3833b
BLAKE2b-256 94bb62ccfe579bf3bdd8b240fb31a654cad62d65e5edb84961c771ef6decda83

See more details on using hashes here.

Provenance

The following attestation bundles were made for heir_py-2026.6.5.dev0-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.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.6.5.dev0-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for heir_py-2026.6.5.dev0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9de278309560f8a8b7f971a1baedf7ac286b653e68e6ecbfde2da57bf824f4cc
MD5 65aca39b85fba93c246d5f2e9d84cb54
BLAKE2b-256 12e8e2fdf517db256dcfa2e69f23a17ec05bd8e12776cb2abaa40b33c9577979

See more details on using hashes here.

Provenance

The following attestation bundles were made for heir_py-2026.6.5.dev0-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.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.6.5.dev0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for heir_py-2026.6.5.dev0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 660a25bb1eb9a9fa9d28554383af5ce00a2ac5a4676b6f7d1a3082c14d6810bf
MD5 5076eda197a7fa421b0ce433060ce20d
BLAKE2b-256 7306f751aa96b5b2d8230b313d6a794316601d49617c7f9592167348efeddb5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for heir_py-2026.6.5.dev0-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.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