A command-line tool for building and deploying applications on the Internet Computer.
# Install via Homebrew (macOS)
brew install dfinity/tap/icp-cli
# Create and deploy a project
icp new my-project && cd my-project
icp network start -d
icp deploy
# Show the status of your canisters
icp canister status
# Call a function on your canister
# icp canister call <canister-name> greet '("World")'
# The ones generated from the templates are typically called `backend`
icp canister call backend greet '("World")'See the Installation Guide for all installation methods.
If you're coming from dfx (the previous Internet Computer SDK), see the Migration Guide for command mappings, workflow differences, and how to migrate existing projects.
📚 Full Documentation Site — Complete guides, tutorials, and reference
Or browse the markdown docs directly:
- Tutorial — Deploy your first canister
- Guides — How to accomplish common tasks
- Concepts — Understand how icp-cli works
- Reference — Complete CLI and configuration reference
The examples/ directory contains example projects to help you get started:
icp-motoko/— Motoko canistericp-rust/— Rust canistericp-static-assets/— Static websiteicp-environments/— Multi-environment setup
Language-specific toolchains (install for the languages you'll use):
- Rust canisters — Rust and
rustup target add wasm32-unknown-unknown - Motoko canisters — mops and
mops toolchain init
Other dependencies:
- Docker — always required on Windows (with WSL2), and some projects may require it on other platforms.
- Documentation — Guides, concepts, and reference
- GitHub Issues — Bug reports and feature requests
- Developer Forum — Questions and discussions
- Discord — Real-time community chat in #dx-feedback
Contributions are welcome! See CONTRIBUTING.md for detailed guidelines.
- Rust 1.88.0+ (rustup.rs)
- Platform dependencies:
| Platform | Install |
|---|---|
| macOS | xcode-select --install |
| Ubuntu/Debian | sudo apt install build-essential pkg-config libssl-dev |
| Fedora/RHEL | sudo dnf install gcc pkg-config openssl-devel |
| Arch Linux | sudo pacman -S base-devel openssl |
| Windows | VS build tools (see Rustup's guide) |
git clone https://github.com/dfinity/icp-cli.git
cd icp-cli
cargo build
cargo test# Run the CLI during development
cargo run -- <command>
# Build release binary
cargo build --release
# Binary is at target/release/icp
# Format and lint
cargo fmt && cargo clippy
# Generate CLI docs (after changing commands)
./scripts/generate-cli-docs.sh
# Update config schemas (after changing manifest types)
./scripts/generate-config-schemas.sh# Preview documentation site locally
cd docs-site && npm install && npm run dev
# Opens at http://localhost:4321
# Prepare docs for build (runs automatically during build)
./scripts/prepare-docs.shDocumentation structure follows the Diátaxis framework:
docs/guides/- Task-oriented how-to guidesdocs/concepts/- Understanding-oriented explanationsdocs/reference/- Information-oriented specificationsdocs/migration/- Migration guides
See docs/README.md for documentation writing guidelines.