Azle helps you to build secure decentralized/replicated servers in TypeScript or JavaScript on ICP. The current replication factor is 13-40 times.
For more documentation please see The Azle Book.
Please remember that Azle is in beta and thus it may have unknown security vulnerabilities due to the following:
- Azle is built with various software packages that have not yet reached maturity
- Azle does not yet have multiple independent security reviews/audits
- Azle does not yet have many live, successful, continuously operating applications deployed to ICP
Windows is only supported through a Linux virtual environment of some kind, such as WSL
On Ubuntu/WSL:
sudo apt-get install podman
On Mac:
brew install podman
It's recommended to use nvm and Node.js 20:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Restart your terminal and then run:
nvm install 20
Check that the installation went smoothly by looking for clean output from the following command:
node --version
Install the dfx command line tools for managing ICP applications:
DFX_VERSION=0.18.0 sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)"
Check that the installation went smoothly by looking for clean output from the following command:
dfx --version
If after trying to run dfx --version
you encounter an error such as dfx: command not found
, you might need to add $HOME/bin
to your path. Here's an example of doing this in your .bashrc
:
echo 'export PATH="$PATH:$HOME/bin"' >> "$HOME/.bashrc"
npx azle new hello_world
cd hello_world
npm install
dfx start --clean --host 127.0.0.1:8000
In a separate terminal in the hello_world
directory:
dfx deploy
If you are building an HTTP-based canister and would like your canister to autoreload on file changes (DO NOT deploy to mainnet with autoreload enabled):
AZLE_AUTORELOAD=true dfx deploy
If you have problems deploying see Common deployment issues.
View your frontend in a web browser at http://[canisterId].localhost:8000
.
To obtain your application's [canisterId]:
dfx canister id backend
Communicate with your canister using any HTTP client library, for example using curl
:
curl http://[canisterId].localhost:8000/db
curl -X POST -H "Content-Type: application/json" -d "{ \"hello\": \"world\" }" http://[canisterId].localhost:8000/db/update
There are many Azle examples in the examples directory. We recommend starting with the following: