Skip to content
Open icLens

Configuration and release environment

This page is for integrators and operators who need to distinguish application configuration, Agent release metadata, and deployment targets. For browser preferences, use Configure icLens.

File Owns
release.config.json App and Agent versions, stage, protocol/schema envelope, installation mode, supported builds, release notes, and advisories
config/product-policy.json Feature availability, product deductions, and shared limits
icp.yaml Canisters and local, production, and Demo deployment environments
docs-site/config/pages.json Current documentation page catalog
docs-site/config/domains.json Documentation navigation order
.node-version Required Node release for repository commands

Generated release and policy outputs derive from their human-edited source files. An App version and an Agent version are independent, and neither version string alone establishes operational compatibility.

Origin Responsibility
https://app.iclens.io Certified product frontend and same-origin Agent release metadata
https://docs.iclens.io This separate documentation site
https://demo.iclens.io Separate deterministic demonstration runtime
https://iclens.io Independent landing site

The landing, docs, and demo canisters are separate from the App/Agent release manifest. The product origin remains stable across public beta and general availability.

The current frontend obtains the Agent release manifest from /agent-canister/iclens-agent-canister.release.json on its own certified origin. It authenticates one current target artifact. Installed module hash determines whether that target is installed. Matching version text with different bytes requires provenance review; unknown bytes do not authorize a repair install.

The ICP CLI stores product canister IDs in .icp/data/mappings/production.ids.json. The static-site environment supplies PUBLIC_CANISTER_ID:frontend, PUBLIC_CANISTER_ID:artifacts_public and PUBLIC_CANISTER_ID:artifacts_protected. The latter two select separate artifact hosts. The release’s artifactAccess field selects one host; credentials never come from environment variables. Missing or wrong-network bindings fail closed.

The frontend canister ID establishes the canonical canister origin used by Internet Identity derivation. After syncing production assets, npm run deploy -- apply removes PUBLIC_CANISTER_ID:agent_canister from the frontend and calls refresh_env to recertify the browser environment. The deployed Agent remains intact, but is not automatically advertised as a default workspace. Users can connect Agents explicitly; their access policy still decides permissions.

A direct icp deploy can inject the Agent variable again while it remains in the environment’s canister mapping. If bypassing the product deployment script, remove only that frontend variable and call refresh_env after deployment. Do not remove PUBLIC_CANISTER_ID:frontend, which supplies identity derivation.

Mainnet API calls use https://icp-api.io. The certified application origin serves the website and release artifacts; it is not the API-agent endpoint. Mainnet does not dynamically fetch a root key.

Local mode is available on every instance. It uses the configured local gateway and Internet Identity, automatic unless saved. Its root key comes from the page’s ic_env when that gateway serves the page, otherwise icLens reads it from the gateway’s status, only on Local. A page a local gateway serves signs in to Mainnet for its own address: a local frontend canister ID never becomes a Mainnet derivation origin. Review Local endpoints in application Settings. A successful local connection does not establish Mainnet authority or realistic funding behavior.

Terminal window
npm run check
npm test
npm run build
npm run demo:build
npm run docs:check

These are local checks. Release construction and production deployment are separate workflows, described in the maintainer guide docs/maintainers/releases-upgrades-and-reproducibility.md in the icLens source. Deployment, controller changes, DNS changes, and spending funds require explicit operator authorization; viewing these commands performs none of those actions.