What is AlgoKit?

AlgoKit is a comprehensive software development kit designed to streamline and accelerate the process of building decentralized applications on the Algorand blockchain. At its core, AlgoKit features a powerful command-line interface (CLI) tool that provides developers with an array of functionalities to simplify blockchain development. Along with the CLI, AlgoKit offers a suite of libraries, templates, and tools that facilitate rapid prototyping and deployment of secure, scalable, and efficient applications. Whether you’re a seasoned blockchain developer or new to the ecosystem, AlgoKit offers everything you need to harness the full potential of Algorand’s impressive tech and innovative consensus algorithm.
AlgoKit Tools
Here is a list of developer tools within AlgoKit:
- AlgoKit CLI
- Algorand Python
- Algorand TypeScript
- AlgoKit Utils
- AlgoKit Localnet
- AVM Debugger
- Client Generator
- Testnet Dispenser
AlgoKit CLI
AlgoKit CLI is a powerful set of command line tools for Algorand developers. Its goal is to help developers build and launch secure, automated, production-ready applications rapidly.
AlgoKit CLI commands
Here is the list of commands that you can use with AlgoKit CLI.
- Bootstrap - Bootstrap AlgoKit project dependencies
- Compile - Compile Algorand Python code
- Completions - Install shell completions for AlgoKit
- Deploy - Deploy your smart contracts effortlessly to various networks
- Dispenser - Fund your TestNet account with ALGOs from the AlgoKit TestNet Dispenser
- Doctor - Check AlgoKit installation and dependencies
- Explore - Explore Algorand Blockchains using lora
- Generate - Generate code for an Algorand project
- Goal - Run the Algorand goal CLI against the AlgoKit Sandbox
- Init - Quickly initialize new projects using official Algorand Templates or community provided templates
- LocalNet - Manage a locally sandboxed private Algorand network
- project - Perform a variety of AlgoKit project workspace related operations like bootstrapping development environment, deploying smart contracts, running custom commands, and more
- Task - Perform a variety of useful operations like signing & sending transactions, minting ASAs, creating vanity address, and more, on the Algorand blockchain
To learn more about AlgoKit CLI, refer to the following resources:
Algorand Python
If you are a Python developer, you no longer need to learn a complex smart contract language to write smart contracts.
Algorand Python is a semantically and syntactically compatible, typed Python language that works with standard Python tooling and allows you to write Algorand smart contracts (apps) and logic signatures in Python. Since the code runs on the Algorand virtual machine(AVM), there are limitations and minor differences in behaviors from standard Python, but all code you write with Algorand Python is Python code.
Here is an example of a simple Hello World smart contract written in Algorand Python:
1from algopy import ARC4Contract, String, arc42
3
4class HelloWorld(ARC4Contract):5
6 @arc4.abimethod()7 def hello(self, name: String) -> String:8 return "Hello, " + name + "!"
To learn more about Algorand Python, refer to the following resources:
Algorand TypeScript
If you are a TypeScript developer, you no longer need to learn a complex smart contract language to write smart contracts.
Algorand TypeScript is a semantically and syntactically compatible, typed TypeScript language that works with standard TypeScript tooling and allows you to write Algorand smart contracts (apps) and logic signatures in TypeScript. Since the code runs on the Algorand virtual machine(AVM), there are limitations and minor differences in behaviors from standard TypeScript, but all code you write with Algorand TypeScript is TypeScript code.
Here is an example of a simple Hello World smart contract written in Algorand TypeScript:
1import { Contract } from '@algorandfoundation/tealscript';2
3export class HelloWorld extends Contract {4
5 hello(name: string): string {6 return 'Hello, ' + name + '!';7 }8}
To learn more about Algorand TypeScript, refer to the following resources:
AlgoKit Utils
AlgoKit Utils is a utility library recommended for you to use for all chain interactions like sending transactions, creating tokens(ASAs), calling smart contracts, and reading blockchain records. The goal of this library is to provide intuitive, productive utility functions that make it easier, quicker, and safer to build applications on Algorand. Largely, these functions wrap the underlying Algorand SDK but provide a higher-level interface with sensible defaults and capabilities for common tasks.
AlgoKit Utils is available in TypeScript and Python.
Capabilities
The library helps you interact with and develop against the Algorand blockchain with a series of end-to-end capabilities as described below:
- AlgorandClient - The key entrypoint to the AlgoKit Utils functionality
- Core capabilities
- Client management - Creation of (auto-retry) algod, indexer and kmd clients against various networks resolved from environment or specified configuration
- Account management - Creation and use of accounts including mnemonic, rekeyed, multisig, transaction signer (useWallet for dApps and Atomic Transaction Composer compatible signers), idempotent KMD accounts and environment variable injected
- Algo amount handling - Reliable and terse specification of microAlgo and Algo amounts and conversion between them
- Transaction management - Ability to send single, grouped or Atomic Transaction Composer transactions with consistent and highly configurable semantics, including configurable control of transaction notes (including ARC-0002), logging, fees, multiple sender account types, and sending behavior
- Higher-order use cases
- App management - Creation, updating, deleting, calling (ABI and otherwise) smart contract apps and the metadata associated with them (including state and boxes)
- App deployment - Idempotent (safely retryable) deployment of an app, including deploy-time immutability and permanence control and TEAL template substitution
- ARC-0032 Application Spec client - Builds on top of the App management and App deployment capabilities to provide a high productivity application client that works with ARC-0032 application spec defined smart contracts (e.g. via Beaker)
- Algo transfers - Ability to easily initiate algo transfers between accounts, including dispenser management and idempotent account funding
- Automated testing - Terse, robust automated testing primitives that work across any testing framework (including jest and vitest) to facilitate fixture management, quickly generating isolated and funded test accounts, transaction logging, indexer wait management and log capture
- Indexer lookups / searching - Type-safe indexer API wrappers (no more
Record<string, any>
pain), including automatic pagination control
To learn more about AlgoKit Utils, refer to the following resources:
AlgoKit Utils TypeScript:
AlgoKit Utils Python:
AlgoKit LocalNet
The AlgoKit LocalNet feature allows you to manage (start, stop, reset, manage) a locally sandboxed private Algorand network. This allows you to interact with and deploy changes against your own Algorand network without needing to worry about funding TestNet accounts, whether the information you submit is publicly visible, or whether you are connected to an active Internet connection (once the network has been started).
AlgoKit LocalNet uses Docker images optimized for a great developer experience. This means the Docker images are small and start fast. It also means that features suited to developers are enabled, such as KMD (so you can programmatically get faucet private keys).
To learn more about AlgoKit Localnet, refer to the following resources:
AVM Debugger
The AlgoKit AVM VS Code debugger extension provides a convenient way to debug any Algorand Smart Contracts written in TEAL.
To learn more about the AVM debugger, refer to the following resources:
Client Generator
The client generator generates a type-safe smart contract client for the Algorand Blockchain that wraps the application client in AlgoKit Utils and tailors it to a specific smart contract. It does this by reading an ARC-0032 application spec file and generating a client that exposes methods for each ABI method in the target smart contract, along with helpers to create, update, and delete the application.
To learn more about the client generator, refer to the following resources:
TypeScript Client Generator: - Client Generator TypeScript section - Client Generator TypeScript Github repo
Python Client Generator: - Client Generator Python section - Client Generator Python Github Repository
Testnet Dispenser
The AlgoKit TestNet Dispenser API provides functionalities to interact with the Dispenser service. This service enables users to fund and refund assets.
To learn more about the testnet dispenser, refer to the following resources: