Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions .agents/upstream-tracking.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Read the file at the **pinned** ref, not at `main`:

```bash
# The pinned ref for each repo is in .sources/upstream.json
curl -sL https://raw.githubusercontent.com/dfinity/icp-cli/v1.1.0/docs/reference/cli.md
curl -sL https://raw.githubusercontent.com/dfinity/icp-cli/v1.4.0/docs/reference/cli.md
```

Use `raw.githubusercontent.com`, not `gh api .../contents/...`: the API returns
Expand Down Expand Up @@ -133,11 +133,15 @@ is not a ref git can resolve.

### `icp-cli`: link slug adaptation

All CLI docs links use a versioned slug (`https://cli.internetcomputer.org/1.3/...`).
All CLI docs links use a versioned slug (`https://cli.internetcomputer.org/1.4/...`).
When `icp-cli` moves to a new minor:

1. The slug is the `major.minor` of the release (`v1.3.0` → `1.3`). Confirm it is
live by opening the docs-site root, which redirects to the latest version.
1. The slug is the `major.minor` of the release (`v1.4.0` → `1.4`). Confirm it is
live in the published version list, where the entry marked `latest: true` is
the slug the docs site serves at its root:
```bash
curl -sL --compressed https://cli.internetcomputer.org/versions.json
```
2. Verify every linked path and anchor resolves at the new slug **before**
replacing. Check the live site, not a repo tree: that validates the published
URL, its trailing-slash behaviour, and the anchor.
Expand All @@ -151,12 +155,12 @@ When `icp-cli` moves to a new minor:
```
For deep links, also confirm the anchor exists:
```bash
curl -sL "https://cli.internetcomputer.org/<new>/reference/cli/" | grep -o 'id="icp-cycles"'
curl -sL --compressed "https://cli.internetcomputer.org/<new>/reference/cli/" | grep -o 'id="icp-cycles"'
```
3. Replace the slug across all files (per-file loop, because GNU and BSD `sed`
disagree on `-i`):
```bash
old=1.1; new=1.3
old=1.3; new=1.4
grep -rl "cli.internetcomputer.org/${old}/" docs/ | while IFS= read -r f; do
sed -i.bak "s|cli.internetcomputer.org/${old}/|cli.internetcomputer.org/${new}/|g" "$f" && rm -f "$f.bak"
done
Expand Down
2 changes: 1 addition & 1 deletion .sources/upstream.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
"watched": [
{
"repo": "dfinity/icp-cli",
"pinned": "v1.3.0",
"pinned": "v1.4.0",
"track": "release",
"tagPattern": "^v\\d+\\.\\d+\\.\\d+$",
"verify": "docs/reference/cli.md",
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ EOF
- Link to `internetcomputer.org/docs/` (retired) or `learn.internetcomputer.org` (content is now in this repo under `docs/concepts/`)
- Link to internal pages that don't exist — run `ls <target>` before linking. Links to `.mdx` files use `.md` extension.
- Link to an internal page without checking for a relevant section anchor — read the target page to find the most specific section that fits, then derive the anchor slug from its heading (lowercase, spaces → `-`, special chars stripped).
- Link to `https://cli.internetcomputer.org/` bare root — use the versioned path. Current slug: `1.3`. It is the `major.minor` of the latest icp-cli release, and the docs always track the latest. Do not read it from the repo's `docs-site/versions.json`: at a release tag that file still lists the *previous* slug, because the docs-site version bump lands as a follow-up commit after the tag. Confirm the live slug at the docs-site root (it redirects to the latest version), and see `.agents/upstream-tracking.md` for the full slug-bump procedure.
- Link to `https://cli.internetcomputer.org/` bare root — use the versioned path. Current slug: `1.4`. It is the `major.minor` of the latest icp-cli release, and the docs always track the latest. Do not read it from the repo's `docs-site/versions.json`: at a release tag that file still lists the *previous* slug, because the docs-site version bump lands as a follow-up commit after the tag. Confirm the live slug against the published `https://cli.internetcomputer.org/versions.json`, whose `latest: true` entry names it (the docs-site root reaches it through a meta refresh, which `curl -L` does not follow), and see `.agents/upstream-tracking.md` for the full slug-bump procedure.
- Link externally when an internal page exists — check `docs/` first
- Write em-dashes (`—`) or use `--` as prose punctuation — use colon, semicolon, or parentheses instead. (`--` is fine inside code blocks as a CLI flag or comment.)
- Rename Candid field names, management canister API identifiers, or example repo names — these are protocol-level identifiers
Expand Down
8 changes: 4 additions & 4 deletions docs/developer-tools/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ Key features:
- **Environments**: named deployment targets that combine a network, canister set, and settings (e.g., local, staging, production)
- **Project scaffolding**: `icp new` bootstraps new projects from official templates

For installation, see the [Quickstart](../getting-started/quickstart.md) or the [full CLI documentation](https://cli.internetcomputer.org/1.3/).
For installation, see the [Quickstart](../getting-started/quickstart.md) or the [full CLI documentation](https://cli.internetcomputer.org/1.4/). To complete `icp` commands in your shell, `icp completions <shell>` prints a script for bash, zsh, fish, elvish, or PowerShell; see [shell completions](https://cli.internetcomputer.org/1.4/guides/installation#shell-completions) for where to put it.

Advanced: [creating recipes](https://cli.internetcomputer.org/1.3/guides/creating-recipes) and [creating templates](https://cli.internetcomputer.org/1.3/guides/creating-templates) are documented on the CLI docs site.
Advanced: [creating recipes](https://cli.internetcomputer.org/1.4/guides/creating-recipes) and [creating templates](https://cli.internetcomputer.org/1.4/guides/creating-templates) are documented on the CLI docs site.

icp-cli collects anonymous usage telemetry. Opt out with `icp settings telemetry false` or `DO_NOT_TRACK=1`.

Coming from dfx? See the [migration guide](https://cli.internetcomputer.org/1.3/migration/from-dfx).
Coming from dfx? See the [migration guide](https://cli.internetcomputer.org/1.4/migration/from-dfx).

### ic-wasm

Expand All @@ -35,7 +35,7 @@ Resources:

### Quill

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.
Quill is a minimalistic, offline-first CLI for signing and sending governance messages (NNS and SNS proposals, neuron management) from air-gapped machines. Its focus is governance: for canister calls, icp-cli covers the same split with [`icp canister call --sign-only`](https://cli.internetcomputer.org/1.4/reference/cli#icp-canister-call), which writes a signed message on the offline device, and [`icp message send`](https://cli.internetcomputer.org/1.4/reference/cli#icp-message-send), which submits it from a networked one. That pair is experimental, so it can change between icp-cli releases.

Quill is suited for:
- Submitting NNS governance proposals
Expand Down
6 changes: 3 additions & 3 deletions docs/getting-started/project-structure.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Beyond canisters, `icp.yaml` can also define **networks** (where to deploy) and
| `local` | `local` (managed, localhost:8000) | Local development |
| `ic` | `ic` (connected, https://icp-api.io) | Mainnet production |

You only need to add custom networks or environments when you have staging environments, testnets, or other deployment targets. See the [icp-cli configuration reference](https://cli.internetcomputer.org/1.3/reference/configuration#networks) for the full schema.
You only need to add custom networks or environments when you have staging environments, testnets, or other deployment targets. See the [icp-cli configuration reference](https://cli.internetcomputer.org/1.4/reference/configuration#networks) for the full schema.

## Canister configuration (canister.yaml)

Expand Down Expand Up @@ -155,7 +155,7 @@ icp project show

This outputs the effective configuration, including all expanded recipe steps and implicit defaults.

Recipes are Handlebars templates hosted at [dfinity/icp-cli-recipes](https://github.com/dfinity/icp-cli-recipes). You can also create local or remote recipes for custom build patterns. See the [icp-cli recipes documentation](https://cli.internetcomputer.org/1.3/guides/creating-recipes) for details.
Recipes are Handlebars templates hosted at [dfinity/icp-cli-recipes](https://github.com/dfinity/icp-cli-recipes). You can also create local or remote recipes for custom build patterns. See the [icp-cli recipes documentation](https://cli.internetcomputer.org/1.4/guides/creating-recipes) for details.

## The .icp/ directory

Expand Down Expand Up @@ -254,6 +254,6 @@ For a deep dive on binding generation, see [Binding generation](../guides/canist
- [Binding generation](../guides/canister-calls/candid.md#binding-generation): deep dive on generating type-safe client code
- [Asset canister](../guides/frontends/asset-canister.md): how the frontend recipe and asset upload work
- [Canister lifecycle](../guides/canister-management/lifecycle.md): build, deploy, upgrade, and manage canisters
- [icp-cli reference](https://cli.internetcomputer.org/1.3/reference/cli): full CLI and configuration documentation
- [icp-cli reference](https://cli.internetcomputer.org/1.4/reference/cli): full CLI and configuration documentation

{/* Upstream: informed by dfinity/icp-cli docs/concepts/project-model.md, docs/concepts/recipes.md, docs/concepts/binding-generation.md, docs/concepts/canister-discovery.md */}
4 changes: 2 additions & 2 deletions docs/getting-started/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ icp --version
ic-wasm --version
```

> **Alternative methods:** [Homebrew, shell scripts, and other options](https://cli.internetcomputer.org/1.3/guides/installation) are also available.
> **Alternative methods:** [Homebrew, shell scripts, and other options](https://cli.internetcomputer.org/1.4/guides/installation) are also available.

## Create a project

Expand Down Expand Up @@ -127,6 +127,6 @@ Each canister name maps to a directory containing its own `canister.yaml` with b
- [Choose your path](choose-your-path.md): pick a development path based on what you want to build
- [Concepts: Canisters](../concepts/canisters.md): learn what canisters are and how they work
- [AI coding agents](../guides/ai-coding-agents.md): use ICP skills to build on the Internet Computer with AI
- [icp-cli documentation](https://cli.internetcomputer.org/1.3/): full CLI reference and guides
- [icp-cli documentation](https://cli.internetcomputer.org/1.4/): full CLI reference and guides

<!-- Upstream: informed by dfinity/icp-cli docs/quickstart.md, docs/tutorial.md -->
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ Parallel calls are most beneficial when the caller and callee are on **different
<Tabs syncKey="lang">
<TabItem label="Motoko">

- [icp-cli](https://cli.internetcomputer.org/1.3/guides/installation) installed
- [icp-cli](https://cli.internetcomputer.org/1.4/guides/installation) installed
- `mops` package manager with `core = "2.0.0"` in `mops.toml`

</TabItem>
<TabItem label="Rust">

- [icp-cli](https://cli.internetcomputer.org/1.3/guides/installation) installed
- [icp-cli](https://cli.internetcomputer.org/1.4/guides/installation) installed
- `ic-cdk = "0.19"` and `futures = "0.3"` in `Cargo.toml`

</TabItem>
Expand Down
46 changes: 35 additions & 11 deletions docs/guides/canister-management/cycles-management.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ icp cycles balance -n ic

## Checking canister cycle balances

Only controllers can view a canister's cycle balance via `icp canister status`.
By default, only controllers can view a canister's cycle balance via `icp canister status`. The [`status_visibility`](settings.md#status-visibility) setting can extend that to named principals or to anyone.

### Via icp-cli

Expand All @@ -73,18 +73,42 @@ icp canister status backend -e ic
icp canister status ryjl3-tyaaa-aaaaa-aaaba-cai -n ic
```

Example output:
Example output for a canister you control, resolved by name on a local network. Cycle and memory figures differ on mainnet:

```text
Status: Running
Controllers: xxxxx-xxxxx-xxxxx-xxxxx-xxx
Memory allocation: 0
Compute allocation: 0
Freezing threshold: 2_592_000
Balance: 9_811_813_913_485 Cycles
Canister Id: <canister-id>
Canister Name: backend
Canister Status Report:
Status: Running
Controllers:
controller: <principal>
Compute allocation: 0
Memory allocation: 0
Freezing threshold: 2_592_000
Reserved cycles limit: 5_000_000_000_000
Wasm memory limit: 3_221_225_472
Wasm memory threshold: 0
Log memory limit: 4_096
Log visibility: Controllers
Snapshot visibility: Controllers
Status visibility: Controllers
Environment Variables:
Name: PUBLIC_CANISTER_ID:backend, Value: <canister-id>
Module hash: 0x25aad4fd1781bf1d1212b9cde388b973a0bd8da7063ff16fc66dfebc3942f46d
Memory size: 5_537_162
Cycles: 1_498_736_384_244
Reserved cycles: 0
Idle cycles burned per day: 1_005_463_641
Query stats:
Calls: 0
Instructions: 0
Req payload bytes: 0
Res payload bytes: 0
```

The `Balance` line shows the current cycle balance. The `Freezing threshold` shows how many seconds of idle cycles the canister must retain before freezing (see [Freezing threshold](#freezing-threshold) below).
The `Cycles` line shows the current cycle balance. The `Freezing threshold` shows how many seconds of idle cycles the canister must retain before freezing (see [Freezing threshold](#freezing-threshold) below).

A canister you do not control reports less: unless its `status_visibility` grants you access, you get its ID, controllers, and module hash from the state tree, without the cycle balance.

### Programmatically

Expand Down Expand Up @@ -307,7 +331,7 @@ icp deploy -e staging
icp deploy -e production
```

Each environment maintains separate canister IDs. Mainnet IDs are stored in `.icp/data/mappings/<environment>.ids.json` and should be committed to version control. See [Managing environments](https://cli.internetcomputer.org/1.3/guides/managing-environments) for full configuration options.
Each environment maintains separate canister IDs. Mainnet IDs are stored in `.icp/data/mappings/<environment>.ids.json` and should be committed to version control. See [Managing environments](https://cli.internetcomputer.org/1.4/guides/managing-environments) for full configuration options.

## Production deployment checklist

Expand Down Expand Up @@ -375,6 +399,6 @@ icp canister top-up backend --amount 1T -n ic
- [Cycles ledger reference](../../references/system-canisters.md#cycles-ledger): Canister IDs and interface specification
- [Calls with attached cycles](../canister-calls/inter-canister-calls.md#calls-with-attached-cycles): attach cycles to an inter-canister call and accept them in the callee
- [Reproducible builds](reproducible-builds.md): Verify your WASM is trustworthy before deploying
- [icp-cli docs](https://cli.internetcomputer.org/1.3/reference/cli#icp-cycles): Full command reference for `icp cycles` and `icp canister top-up`
- [icp-cli docs](https://cli.internetcomputer.org/1.4/reference/cli#icp-cycles): Full command reference for `icp cycles` and `icp canister top-up`

{/* Upstream: informed by dfinity/portal (docs/building-apps/canister-management/topping-up.mdx, docs/building-apps/getting-started/tokens-and-cycles.mdx; dfinity/icp-cli) docs/guides/deploying-to-mainnet.md, docs/guides/tokens-and-cycles.md, docs/guides/managing-environments.md; dfinity/icskills: skills/cycles-management/SKILL.md */}
2 changes: 1 addition & 1 deletion docs/guides/canister-management/lifecycle.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ This is useful during development when you want a clean slate. The canister ID i

Deleting permanently removes a canister from the network. The canister ID cannot be reused.

> **Note:** Canisters are like real estate on the IC. Creating them costs cycles. Instead of deleting a canister, consider reusing it in a different project. Check the [cli reference](https://cli.internetcomputer.org/1.3/concepts/project-model/#canister-ids) for more information.
> **Note:** Canisters are like real estate on the IC. Creating them costs cycles. Instead of deleting a canister, consider reusing it in a different project. Check the [cli reference](https://cli.internetcomputer.org/1.4/concepts/project-model/#canister-ids) for more information.

1. Stop the canister first:

Expand Down
8 changes: 6 additions & 2 deletions docs/guides/canister-management/logs.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ To output logs as JSON for programmatic processing:
icp canister logs <canister-name> -e ic --json
```

Combined with `--follow`, `--json` emits newline-delimited JSON, one record per line as it arrives.

## Log visibility

By default, only the canister's controllers can read its logs. You can make logs visible to everyone, or grant read access to specific principals.
Expand Down Expand Up @@ -149,6 +151,8 @@ icp canister settings update <canister-name> -e ic \
--remove-log-viewer <principal-id>
```

While log visibility is `public` there is no viewers list to be relative to, so `--add-log-viewer` and `--remove-log-viewer` are rejected. Use `--set-log-viewer` to state the list outright, or `--log-visibility controllers` to revoke public access.

### Setting log visibility in icp.yaml

You can configure log visibility per canister in `icp.yaml` so it is applied on every `icp deploy`:
Expand Down Expand Up @@ -407,7 +411,7 @@ async fn main() -> Result<()> {

- [Canister lifecycle](lifecycle.md): configure log visibility and memory limits when creating or deploying a canister
- [Testing strategies](../testing/strategies.md): use canister logs as part of your debugging workflow
- [CLI reference: `icp canister logs`](https://cli.internetcomputer.org/1.3/reference/cli#icp-canister-logs): full command flags and options
- [CLI reference: `icp canister settings update`](https://cli.internetcomputer.org/1.3/reference/cli#icp-canister-settings-update): full command flags and options
- [CLI reference: `icp canister logs`](https://cli.internetcomputer.org/1.4/reference/cli#icp-canister-logs): full command flags and options
- [CLI reference: `icp canister settings update`](https://cli.internetcomputer.org/1.4/reference/cli#icp-canister-settings-update): full command flags and options

<!-- Upstream: informed by dfinity/portal — docs/building-apps/canister-management/logs.mdx, docs/building-apps/canister-management/backtraces.mdx, docs/building-apps/advanced/canister-access-logs.mdx; dfinity/examples — rust/canister_logs, motoko/canister_logs, rust/query_stats, motoko/query_stats; dfinity/cdk-rs — ic-cdk/src/api.rs, ic-cdk/src/management_canister.rs, ic-management-canister-types/src/lib.rs; dfinity/icp-cli — docs/reference/cli.md, docs/reference/canister-settings.md -->
Loading
Loading