You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Developer tools are used to create, manage, and interact with canisters. ICP provides tooling across several categories: command-line tools, canister development kits (CDKs), browser-based IDEs, Wasm optimization utilities, and Candid tooling.
9
9
10
-
<!-- Content Brief -->
11
-
Overview of the ICP developer toolchain. Cover icp-cli (project management, deployment, identity), CDKs (Rust CDK via ic-cdk, Motoko compiler), icp.ninja playground for browser-based development, VS Code extensions, ic-wasm for Wasm optimization, and didc for Candid tools. Each tool gets a brief description and link to its documentation. Do not duplicate tool docs -- link out.
Also mention: Quill (cold wallet signing, NNS governance), icp-cli telemetry opt-out, and link to icp-cli's creating-recipes.md and creating-templates.md for advanced users.
14
+
`icp-cli` is the primary tool for building and deploying applications on the Internet Computer. It manages the full development lifecycle: creating projects, building canisters, deploying to local or mainnet environments, managing identities, and handling cycles and ICP tokens.
-**Recipes** — reusable, versioned build templates for Rust, Motoko, and asset canisters
18
+
-**Environments** — named deployment targets that combine a network, canister set, and settings (e.g., local, staging, production)
19
+
-**Project scaffolding** — `icp new` bootstraps new projects from official templates
20
+
21
+
Install via npm (requires Node.js LTS):
22
+
23
+
```bash
24
+
npm install -g @icp-sdk/icp-cli @icp-sdk/ic-wasm
25
+
```
26
+
27
+
Or via Homebrew:
28
+
29
+
```bash
30
+
brew install icp-cli
31
+
brew install ic-wasm
32
+
```
33
+
34
+
Verify:
35
+
36
+
```bash
37
+
icp --version
38
+
```
39
+
40
+
Full documentation: [cli.internetcomputer.org](https://cli.internetcomputer.org/)
41
+
42
+
For advanced users, icp-cli supports authoring custom recipes and project templates:
43
+
-[Creating recipes](https://cli.internetcomputer.org/guides/creating-recipes) — encode build conventions as reusable Handlebars templates
44
+
-[Creating templates](https://cli.internetcomputer.org/guides/creating-templates) — scaffold new projects with `icp new`
45
+
46
+
#### Telemetry opt-out
47
+
48
+
`icp` collects anonymous usage data (command names, platform, version, success/failure) to help prioritize features. No personally identifiable information, project names, file paths, or canister IDs are collected.
49
+
50
+
To opt out:
51
+
52
+
```bash
53
+
icp settings telemetry false
54
+
```
55
+
56
+
Or set `DO_NOT_TRACK=1` in your environment. Telemetry is automatically disabled in CI when the `CI` environment variable is set.
57
+
58
+
### ic-wasm
59
+
60
+
`ic-wasm` is a utility for optimizing and annotating WebAssembly modules for the Internet Computer. It shrinks Wasm binary size, embeds Candid metadata, and strips unused sections. The official Rust and Motoko recipes use `ic-wasm` automatically — you only need to call it directly when using custom build steps.
61
+
62
+
Install:
63
+
64
+
```bash
65
+
npm install -g @icp-sdk/ic-wasm
66
+
# or
67
+
brew install ic-wasm
68
+
```
69
+
70
+
### Quill
71
+
72
+
Quill is a minimalistic, offline-first CLI for signing and sending governance messages — NNS and SNS proposals, neuron management — from air-gapped machines. Unlike `icp-cli`, Quill is designed for cold wallet workflows: you generate signed messages on an offline device, then submit them from a networked machine.
73
+
74
+
Quill is suited for:
75
+
- Submitting NNS governance proposals
76
+
- Managing SNS neurons from a hardware wallet or cold key
A canister development kit (CDK) provides a programming language with the libraries and toolchain support needed to compile code to WebAssembly and interact with the ICP system API.
84
+
85
+
### Motoko
86
+
87
+
Motoko is ICP's native programming language, designed around the actor model, orthogonal persistence, and asynchronous message passing. It compiles directly to WebAssembly and includes a standard library (`mo:core`) with modules for common data structures, cryptography, and system interaction.
88
+
89
+
For language documentation, see [languages/motoko](../../languages/motoko/index.md).
90
+
91
+
### Rust CDK (`ic-cdk`)
92
+
93
+
The Rust CDK (`ic-cdk`) is the official DFINITY-maintained library for building canisters in Rust. It exposes the ICP system API as safe Rust abstractions, including:
94
+
-`ic_cdk::api` — system calls (time, caller, stable memory, management canister)
95
+
-`ic_cdk_timers` — periodic timers and one-shot timers
96
+
-`ic_cdk_macros` — `#[update]`, `#[query]`, `#[init]`, and other attribute macros
97
+
98
+
API reference: [docs.rs/ic-cdk](https://docs.rs/ic-cdk/latest/ic_cdk/)
99
+
100
+
For Rust-specific guides, see [languages/rust](../../languages/rust/index.md).
101
+
102
+
### Community CDKs
103
+
104
+
Several community-maintained CDKs extend ICP to other languages:
Community CDKs are maintained independently of DFINITY. Check each project's documentation for current support status.
114
+
115
+
## Browser-based IDE
116
+
117
+
### ICP Ninja
118
+
119
+
[ICP Ninja](https://icp.ninja) is a web-based IDE for writing and deploying ICP canisters directly from a browser — no local toolchain required. It provides a gallery of example projects (Motoko and Rust backends, React frontends) that you can browse, edit, and deploy to the mainnet in one click.
120
+
121
+
Deployed canisters remain live for 20 minutes. You can redeploy to reset the timer, or download the project files to continue development locally with icp-cli.
122
+
123
+
Limitations:
124
+
- Projects are limited to 5 MB and 2 canisters
125
+
- ICP Ninja is not a replacement for icp-cli for production workflows
126
+
127
+
## Editor tooling
128
+
129
+
### Motoko VS Code extension
130
+
131
+
The [Motoko extension for VS Code](https://github.com/dfinity/vscode-motoko) (`dfinity/vscode-motoko`) adds Motoko language support to VS Code: syntax highlighting, type checking, auto-completion, and inline diagnostics.
132
+
133
+
Install by searching for "Motoko" in the VS Code extensions panel, or visit the [vscode-motoko repository](https://github.com/dfinity/vscode-motoko) for details.
134
+
135
+
## Candid tools
136
+
137
+
### didc
138
+
139
+
`didc` is the Candid command-line tool for working with Candid interfaces: encoding and decoding values, checking `.did` files, generating bindings, and testing Candid compatibility.
140
+
141
+
Install: download a prebuilt binary from the [releases page](https://github.com/dfinity/candid/releases).
0 commit comments