Skip to content

Commit

Permalink
page edits
Browse files Browse the repository at this point in the history
  • Loading branch information
jessiemongeon1 committed Feb 21, 2025
1 parent c1a9533 commit c8cbbf4
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 288 deletions.
117 changes: 0 additions & 117 deletions docs/building-apps/developer-tools/canbench.mdx

This file was deleted.

122 changes: 17 additions & 105 deletions docs/building-apps/developer-tools/dev-tools-overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,86 +10,6 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";

Developer tools are used to create, manage, and interact with canisters. They can come in several formats, such as command line tools, onchain and off-chain libraries, and integrated development environments. For ICP developers, there are tools within each of these categories available for you to utilize when developing your ICP canisters.

## Command line tools

### `dfx`

[`dfx`](/docs/building-apps/developer-tools/dfx/) is the primary tool used by developers to create, build, deploy, manage, and call canisters. `dfx` is also referred to as the IC SDK, or the Internet Computer Software Development Kit.

`dfx` supports [local development](/docs/building-apps/developing-canisters/deploy) and deployment through the [`dfx start`](/docs/building-apps/developer-tools/dfx/) command, which runs a local instance of the ICP replica that can be used to deploy and test canisters on your local machine.

To deploy canisters to the mainnet or make calls to canisters already deployed on the mainnet, the `--network ic` flag can be used with most `dfx` commands.

- [Install `dfx`](/docs/building-apps/getting-started/install).

- [`dfx` documentation](/docs/building-apps/developer-tools/dfx/).

- [IC SDK GitHub repo](https://github.com/dfinity/sdk).

### `dfxvm`

[`dfxvm`](/docs/building-apps/developer-tools/dfxvm/dfxvm-default) is a CLI tool used for installing and switching between different versions of `dfx`. It enables developers to pivot between different projects that are built with different `dfx` versions.

- [Install `dfxvm`](/docs/building-apps/getting-started/install#installing-dfx).

- [`dfxvm` documentation](/docs/building-apps/developer-tools/dfxvm/dfxvm-default).

- [`dfxvm` GitHub repo](https://github.com/dfinity/dfxvm).

### `quill`

[`quill`](https://github.com/dfinity/quill/) command-line ledger and governance toolkit designed for interacting with the [Network Nervous System (NNS)](https://internetcomputer.zendesk.com/hc/en-us/articles/33692645961236-NNS-Network-Nervous-System) canisters through the use of self-custody keys. It supports using keys in an air-gapped computer, which is a computer that has never been connected to the internet. To support this workflow, `quill` first generates and signs messages based on the user input, then the signed messages are transported to a computer with an internet connection (via a USB flash drive or QR code) where they are submitted to ICP to be executed.

- [Install `quill`](https://github.com/dfinity/quill?tab=readme-ov-file#download--install).

- [`quill` documentation](https://github.com/dfinity/quill/).

- [`quill` GitHub repo](https://github.com/dfinity/quill).

## Agents

An **agent** refers to an off-chain library that is used to make calls to the public interface of a canister. Agents communicate with the canister's `v2` API endpoints.

The following agents are currently developed and maintained by DFINITY:

- [JavaScript/TypeScript agent (@dfinity/agent)](/docs/building-apps/interact-with-canisters/agents/javascript-agent)

- [Node.js, supported through the JavaScript agent](/docs/building-apps/interact-with-canisters/agents/nodejs)

- [Rust agent (ic-agent)](/docs/building-apps/interact-with-canisters/agents/rust-agent)

Additionally, there are several community-developed and -maintained agents:

- .NET [`ICP.NET` by Gekctek](https://github.com/Gekctek/ICP.NET)

- Dart agents:
- [`agent_dart` by AstroX](https://github.com/AstroxNetwork/agent_dart) (supports mobile development with Flutter)
- [`ic_dart_tools` by Levi Feldman](https://github.com/levifeldman/ic_tools_dart)

- Go agents:
- [`IC-Go` by MixLabs](https://github.com/mix-labs/IC-Go)
- [`agent-go` by Aviate Labs](https://github.com/aviate-labs/agent-go)

- Java [`ic4j-agent` by IC4J](https://github.com/ic4j/ic4j-agent) (supports Android)

- Python [`ic-py` by Rocklabs](https://github.com/rocklabs-io/ic-py)

- C [`agent-c` by Zondax](https://github.com/Zondax/icp-client-cpp) (C Wrapper for IC Rust Agent)

- Ruby [`ic_agent` by Terry.Tu](https://github.com/tuminfei/ic_agent)

## Canpack

- [Canpack](/docs/building-apps/developer-tools/dev-tools-overview): A tool used to facilitate communication between canisters written in different languages; currently supports calling Rust crates from Motoko canisters.

## Canbench

- [Canbench](/docs/building-apps/developer-tools/canbench): A Rust crate that provides canister benchmarking tooling so developers can gain an insight into how their canister uses memory, instructions, and other resources.

## `ic-alloy`

The [`ic-alloy`](https://github.com/ic-alloy) Rust crate can be used to interact with the EVM RPC canister from Rust code. [View the `ic-alloy` documentation for more information](https://o7kje-7yaaa-aaaal-qnaua-cai.icp0.io).

## Canister development kits (CDKs)

A canister development kit (CDK) is an adapter used by `dfx` to provide programming languages with the necessary features and functionality to create, deploy, and manage canisters.
Expand All @@ -106,44 +26,36 @@ There are several community-contributed and maintained CDKs for languages such a

- [C++ CDK](https://docs.icpp.world/).

## Integrated development environments (IDEs)

:::caution
The IDEs listed below are not the only supported IDEs; any IDE can be used to develop canister code.
:::

### ICP Ninja

ICP Ninja is a web-based IDE designed specifically for building and deploying ICP canisters. ICP Ninja enables you to write and deploy code directly to the mainnet from the browser. Users can select from several example projects to get started building. Projects deployed through ICP Ninja are available for 20 minutes unless redeployed.
## Command line tools

- [ICP Ninja homepage](https://icp.ninja/).
### `dfx`

- [ICP Ninja documentation](/docs/building-apps/developer-tools/ide/icp-ninja).
[`dfx`](/docs/building-apps/developer-tools/dfx/) is the primary tool used by developers to create, build, deploy, manage, and call canisters. `dfx` is also referred to as the IC SDK, or the Internet Computer Software Development Kit.

### Developer containers
`dfx` supports [local development](/docs/building-apps/developing-canisters/deploy) and deployment through the [`dfx start`](/docs/building-apps/developer-tools/dfx/) command, which runs a local instance of the ICP replica that can be used to deploy and test canisters on your local machine.

Developer containers are a local development workflow using Docker and VS Code. They are a great local development option for developers on Windows systems since `dfx` is not natively supported on Windows.
To deploy canisters to the mainnet or make calls to canisters already deployed on the mainnet, the `--network ic` flag can be used with most `dfx` commands.

- [Developer container documentation](/docs/building-apps/developer-tools/ide/icp-ninja).
- [Install `dfx`](/docs/building-apps/getting-started/install).

### Visual Studio Code
- [`dfx` documentation](/docs/building-apps/developer-tools/dfx/).

Visual Studio Code (VS Code) is a popular IDE used for writing code in hundreds of languages. VS Code supports Motoko development through the Motoko VS Code extension that includes type checking, autocompletion, code snippets, and formatting.
- [IC SDK GitHub repo](https://github.com/dfinity/sdk).

The Motoko extension is also available to [VSCodium](https://vscodium.com/) users, who can download it from [OpenVSX](https://open-vsx.org/extension/dfinity-foundation/vscode-motoko).
### `dfxvm`

- [VS Code documentation](/docs/building-apps/developer-tools/ide/icp-ninja).
[`dfxvm`](/docs/building-apps/developer-tools/dfxvm/dfxvm-default) is a CLI tool used for installing and switching between different versions of `dfx`. It enables developers to pivot between different projects that are built with different `dfx` versions.

- [Motoko VS Code extension](https://github.com/dfinity/vscode-motoko).
- [Install `dfxvm`](/docs/building-apps/getting-started/install#installing-dfx).

## Community tools
- [`dfxvm` documentation](/docs/building-apps/developer-tools/dfxvm/dfxvm-default).

The following are community-contributed and maintained developer tools for ICP. Please note that these tools may not be maintained or may be vulnerable to security flaws. Please use these tools with caution.
- [`dfxvm` GitHub repo](https://github.com/dfinity/dfxvm).

- [IC inspector](https://chrome.google.com/webstore/detail/ic-inspector/meaadkenfkhjakkkdapaallimhbdofck): A Google Chrome extension that can be used to decode ICP requests and responses.
## ICP Ninja

- [ic-nix](https://github.com/ninegua/ic-nix): Support for building ICP projects with Nix.
ICP Ninja is a web-based IDE designed specifically for building and deploying ICP canisters. ICP Ninja enables you to write and deploy code directly to the mainnet from the browser. Users can select from several example projects to get started building. Projects deployed through ICP Ninja are available for 20 minutes unless redeployed.

- [wasi2ic](https://github.com/wasm-forge/wasi2ic): A tool used to convert WASI binaries into binaries runnable on ICP.
- [ICP Ninja homepage](https://icp.ninja/).

- [setup-dfx](https://github.com/dfinity/setup-dfx): A GitHub Action used to set up `dfx`.
- [ICP Ninja documentation](/docs/building-apps/developer-tools/ide/icp-ninja).
Loading

0 comments on commit c8cbbf4

Please sign in to comment.