Introduction to ICICLE
ICICLE is a versatile cryptography library supporting multiple compute backends—including CUDA, CPU, Metal, and upcoming backends like WebGPU, Vulkan, and ZPU. It enables you to build cryptographic applications with ease, leveraging the best available hardware for your needs.
Architecture
Flexible, extensible framework for cryptographic multi-backend support.
Programmer's Guide
Consistent cryptographic APIs: NTT, MSM, ECNTT, polynomials.
Integrations & Support
Broad integrations with strong community and developer support.
API
Core ICICLE APIs: MSM, NTT, hashing with examples.
Overview
High-Speed Cryptography
ICICLE delivers optimized performance for the core building blocks used in modern cryptographic protocols, ensuring efficiency and scalability across diverse use cases.
Modular and Extensible Libraries
ICICLE includes a comprehensive set of libraries for various fields and curves, and is built for seamless integration and expansion—allowing you to add custom backends or cryptographic primitives as needed.
Cross-Platform and Cross-Language Support
ICICLE works across multiple languages (C++, Rust, Go, potentially Python) and supports development on CPU with deployment across diverse backends, including GPUs, Metal, specialized hardware, and emerging platforms.
What Can You Do with ICICLE?
At Ingonyama, we’re committed to accelerating progress in cryptography—not just through hardware and software, but by supporting the people building with them. Whether you're an engineer, developer, or academic researcher, our grant program can provide access to GPUs or even fund your research.
ICICLE can be used much like any other cryptographic library—with the added benefit of acceleration. Thanks to multiple integrations, it's already proven effective across a range of use cases:
Boost Your Prover Performance
If you're a circuit developer facing performance bottlenecks, integrating ICICLE into your prover could offer immediate relief. ICICLE is already integrated with popular frameworks like Gnark and Halo2, enabling GPU acceleration without requiring changes to your existing code.
Integrate with Existing Provers
ICICLE supports selective acceleration, allowing you to target and optimize specific bottlenecks in your prover without a full rewrite.
Build Custom Provers
If you’re building a prover from scratch, ICICLE offers a powerful foundation for creating optimized, scalable systems. Its ability to scale across multiple GPUs and machines makes it ideal for high-performance environments like data centers.
Develop Proof-of-Concepts
ICICLE is also great for prototyping and smaller projects. With bindings for Golang and Rust, you can quickly build libraries implementing specific cryptographic primitives—like a KZG commitment scheme—with minimal overhead.
Ecosystem
ICICLE is already trusted by leading cryptography teams to supercharge their proving systems. From general-purpose ZK frameworks to specialized proof systems, ICICLE helps teams break performance bottlenecks and scale efficiently.
Below are just a select few of the teams building with ICICLE:

Accelerating proof generation for ZK coprocessors.

Improving data availability bandwidth, utilizing GPUs to parallelize encoding.

Speeding up general-purpose zero-knowledge circuits.

Boosting throughput for custom ZK proof systems.

Powering scalable zkVMs with modular acceleration.

Accelerating optimistic rollup proof generation.