Config Schema

Alpage config is HCL. The blocks below are the complete schema; it is generated from the hcl:"..." struct tags in nns/, so it always matches what the tool parses.

This page documents the schema as of the latest release. The Since column gives the release each block and field first appeared in, so a field newer than your binary is visible as such; see Schema History for the schema as of each release.

resources.hcl

subnet "<name>" { }

v0.1.0 A subnet, referenced from proposals and nodes as subnet.<name>.id.

Field Kind Required Since Description
id attr yes v0.1.0 Principal of the subnet.
label attr no v0.1.0 Human-readable name.
sev_enabled attr no v0.1.1 Whether the subnet runs with SEV-SNP enabled, reconciled against the registry's features.sev_enabled. Omitted means false.
type attr no v0.2.0 Subnet type: application, verified_application, system, or cloud_engine. Omitted means application.
cost_schedule attr no v0.2.0 Canister cycles cost schedule: normal or free. Omitted means free for a cloud_engine, which the registry requires, and normal otherwise.
admins attr no v0.2.0 Principals with admin rights on the subnet (subnet_admins). Allowed only on a cloud_engine or a rented subnet (application on the free schedule), at most 10. Declaring none asserts none, so an admin added on-chain is drift. Order is not significant.

data_center "<name>" { }

v0.1.0 A registry data center, referenced by node_operator as data_center.<name>.id.

Field Kind Required Since Description
id attr yes v0.1.0 Registry data center id.
label attr no v0.1.0 Human-readable name.
region attr no v0.1.0 Registry region string (e.g. Europe,CH,Vaud).

node_provider "<name>" { }

v0.1.0 A node provider, referenced by node_operator as node_provider.<name>.id.

Field Kind Required Since Description
id attr yes v0.1.0 Principal of the node provider.
label attr no v0.1.0 Human-readable name.

node_operator "<name>" { }

v0.1.0 A node operator, referenced by node as node_operator.<name>.id.

Field Kind Required Since Description
id attr yes v0.1.0 Principal of the node operator.
label attr no v0.1.0 Human-readable name.
provider attr no v0.1.0 Id of its node provider (node_provider.<name>.id).
dc attr no v0.1.0 Id of its data center (data_center.<name>.id).

guestos_version "<name>" { }

v0.3.0 A named GuestOS/replica version, referenced by node as guestos_version.<name>.id.

Field Kind Required Since Description
id attr yes v0.3.0 GuestOS/replica version hash. Spelled id, not hash, so it resolves through the same <kind>.<name>.id form as every other resource.
label attr no v0.3.0 Human-readable name (e.g. the release name).

node "<name>" { }

v0.1.0 A node, referenced from proposals as node.<name>.id.

Field Kind Required Since Description
id attr yes v0.1.0 Principal of the node.
label attr no v0.1.0 Human-readable name.
subnet attr no v0.1.0 Id of the subnet it belongs to (subnet.<name>.id). Empty means unassigned.
operator attr no v0.1.0 Id of its node operator (node_operator.<name>.id).
decommissioned attr no v0.1.1 Marks a node deregistered on-chain. Its block is kept so historical proposal payloads keep resolving to the ids they were submitted with; reconcile expects it to be absent from the registry.
guestos_version attr no v0.2.0 GuestOS/replica version this node is expected to run. Not a registry fact: the registry stores one version per subnet, so reconcile reads the node's own /api/v2/status impl_version, which needs IPv6. If the node is unreachable it falls back to the public dashboard, marking the row "via dashboard" since that data may lag. Reconcile also checks the declared version against the NNS elected set and marks it "NOT ELECTED" if absent; when that source is unreadable the check is skipped rather than failing. Omitted means unchecked.

proposals.hcl

provider { }

v0.1.0 Global submission settings; CLI flags override these.

Field Kind Required Since Description
host attr no v0.1.0 Governance host URL. Defaults per command; overridden by --host.
neuron attr no v0.1.0 Proposer neuron id.
fetch_root_key attr no v0.1.0 Whether to fetch the IC root key. Unset defaults to true for non-mainnet hosts.

proposal "<name>" { }

v0.1.0 One NNS proposal. Carries common metadata plus a nested block named after its kind.

Field Kind Required Since Description
kind attr yes v0.1.0 Proposal kind; selects the nested block (membership, deploy_guestos).
title attr yes v0.1.0 Proposal title shown on the NNS.
summary attr no v0.1.0 Proposal summary (markdown).
url attr no v0.1.0 Reference URL (e.g. forum thread).

membership { }

v0.3.0 Nested in a proposal of kind "membership": change_subnet_membership. Holds add/remove node blocks. Renamed from resize in v0.3.0; a config written for v0.2.0 or earlier must rename the block and its kind.

Field Kind Required Since Description
subnet_id attr yes v0.3.0 Subnet whose membership changes (subnet.<name>.id).
add block no v0.3.0 A node to add to the subnet; repeatable. See the add / remove block.
remove block no v0.3.0 A node to remove from the subnet; repeatable. See the add / remove block.

deploy_guestos { }

v0.1.0 Nested in a proposal of kind "deploy_guestos": deploy_guestos_to_all_subnet_nodes.

Field Kind Required Since Description
subnet_id attr yes v0.1.0 Subnet whose nodes to upgrade (subnet.<name>.id).
replica_version_id attr yes v0.1.0 Replica version to deploy to every node in the subnet. Must be elected by the NNS: preflight checks the registry for a replica_version_<id> record (read via the registry explorer) and refuses an unelected version, since the NNS would reject the proposal. --force submits anyway, and also lets apply proceed when that lookup fails (downgraded to a warning); plan always degrades that way. Preflight additionally resolves the version's release name and election proposal from the public dashboard, which is display-only and degrades to a note when unavailable.

add / remove { }

v0.1.0 Inside a membership block: a node to add to or remove from the subnet.

Field Kind Required Since Description
id attr yes v0.1.0 Node id (node.<name>.id).
label attr no v0.1.0 Optional human-readable name.

Schema History

Each release's schema, as generated at that tag: