For AI agents: Documentation index at /llms.txt

Skip to content

Languages & CDKs

ICP canisters compile to WebAssembly, so any language that targets Wasm can be used. There are two approaches: Motoko is a language purpose-built for IC. Its compiler handles system API bindings, Candid serialization, and persistence natively. For other languages, a Canister Development Kit (CDK) provides the glue between the language and the IC system API: type-safe bindings for system calls, macros for exposing canister methods, and utilities for stable memory and inter-canister calls.

A language purpose-built for the Internet Computer by DFINITY. Built-in actor model, orthogonal persistence, and async/await for inter-canister calls. Compiles directly to Wasm with no external CDK needed.

Use the ic-cdk canister development kit, maintained by DFINITY, with the full Rust ecosystem. Any crate that compiles to wasm32-unknown-unknown works.

These CDKs are built and maintained by the community, enabling ICP development in additional languages.

LanguageCDKRepository
TypeScriptAzledemergent-labs/azle
PythonKybrademergent-labs/kybra
C++icpp-proicppWorld/icpp-pro
MoonBitmoonbit-ic-cdkeliezhao/moonbit-ic-cdk