Skip to main content

Canister development kits (CDKs)

Beginner
Developer tools

Canister development kits (CDKs) are used to interface with the IC SDK and provide different programming languages with the necessary functionalities to develop canisters. These functionalities include the ability to create, deploy, call, and manage canisters, both locally deployed and deployed to the mainnet.

CDKs for Motoko and Rust are created and maintained by DFINITY. CDKs for other languages are currently community-contributed and maintained.

Motoko

Motoko is a programming language designed specially for creating applications on ICP. It natively supports ICP's unique features and architecture such as orthogonal persistence, asynchronous message passing, and actor-based programming.

Learn more about Motoko.

Rust

The Rust CDK provides the necessary tools and libraries for developers to create, deploy, and manage canisters on the Internet Computer using Rust. It is developed and maintained by DFINITY. The Rust CDK consists of several crates that together support integration with the ICP system API and features like periodic tasks and timers.

Learn more about Rust CDK.

Azle

Azle is a CDK developed by Demergent Labs that supports TypeScript and JavaScript canister development. Azle provides a fully comprehensive environment for TypeScript and JavaScript canisters by supporting as many relevant APIs as possible.

Resources

Kybra

Kybra is a CDK developed by Demergent Labs that supports canister development in Python. Kybra provides a fully comprehensive environment for Python canisters by also supporting as many relevant APIs as possible in the same manner that Azle does.

Resources

Bitfinity EVM

The Bitfinity EVM is an experimental EVM implementation that provides an RPC interface compatible with the Ethereum JSON-RPC API. While this is not a traditional CDK, it does provide the ability for existing Ethereum tools and libraries to be used to develop Solidity canisters on ICP.

Resources

C++ CDK

The C++ CDK known as icpp-pro is a canister development kit for the C++ programming language.

Resources