https://github.com/google/heir
A compiler for homomorphic encryption
https://github.com/google/heir
homomorphic-encryption mlir
Last synced: 25 days ago
JSON representation
A compiler for homomorphic encryption
- Host: GitHub
- URL: https://github.com/google/heir
- Owner: google
- License: apache-2.0
- Created: 2023-04-17T21:14:13.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2026-02-15T00:56:27.000Z (about 1 month ago)
- Last Synced: 2026-02-15T08:17:21.444Z (about 1 month ago)
- Topics: homomorphic-encryption, mlir
- Language: C++
- Homepage: https://heir.dev/
- Size: 46.6 MB
- Stars: 679
- Watchers: 13
- Forks: 123
- Open Issues: 349
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Agents: AGENTS.md
Awesome Lists containing this project
- awesome-he - HEIR - Google's MLIR-based toolchain for FHE compilers. (Toolkits)
README
# HEIR: Homomorphic Encryption Intermediate Representation




[](https://securityscorecards.dev/viewer/?uri=github.com/google/heir)
An MLIR-based toolchain for
[homomorphic encryption](https://en.wikipedia.org/wiki/Homomorphic_encryption)
compilers. Read the docs at [the HEIR website](https://heir.dev).
For more information on MLIR, see the [MLIR homepage](https://mlir.llvm.org/).
## Quickstart (Python)
Pip install the `heir_py` package
```bash
pip install heir_py
```
Then run an example:
```python
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](https://openfhe-development.readthedocs.io/en/latest/) 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`.
```bash
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:
- Come to our [monthly meetings](https://heir.dev/community/) to discuss active
work on HEIR and future project directions. The meetings are recorded and
posted to our [blog](https://heir.dev/blog/) and
[YouTube channel](https://www.youtube.com/@HEIRCompiler).
- Come to our [weekly office hours](https://heir.dev/community/) for informal
discussions and debugging help.
- Ask questions or discuss feature ideas in the `#heir` channel on
[the FHE.org discord](https://discord.fhe.org/).
- Work on an issue marked
["good first issue"](https://github.com/google/heir/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)
or browse issues [labeled by topic](https://github.com/google/heir/labels).
- Help us understand new FHE research: either
- Read a paper tagged under
[research synthesis](https://github.com/google/heir/labels/research%20synthesis)
and summarize the novel techniques that could be ported to HEIR.
- File new issues under
[research synthesis](https://github.com/google/heir/labels/research%20synthesis)
to alert us of papers that should be investigated and incorporated into
HEIR.
## Citations
The HEIR project can be cited in in academic work through following entry:
```text
@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.