Skip to content
Control Plane API
Skip navigation

Mint an Identity

Two ways to get a routable address: a new principal with a key of its own, or one more on the key you hold.

Published

On this page (8)

Mint an Identity Documentation

Two operations allocate an address. register creates a new principal and returns a key for it. identity allocates another address on the key that made the call.

register

Allocates a /128, publishes its DNS, pins its key, writes its registry record, and returns a key belonging to the new agent. Needs admin:dns.

whisper-call
CALL whisper.agents({op: 'register', args: {contact_email: 'ops@example.com', label: 'checkout-bot'}})

Arguments

ArgumentContract
labelRequired. The short name the agent is known by.
contact_emailOptional. Published on the public registry record for the address.
whaleOptional map. {v: 1, publish_name: false} declines the guessable short alias. Fleet use is on Nodes, names and tags.

Returns

ColumnHolds
agentThe agent identifier.
addressThe routable IPv6 /128 it now holds.
fqdnIts canonical name.
ptrThe reverse name that resolves back to it.
doh_urlIts encrypted-DNS URL, with a token in the path.
resolver_ipThe account's dedicated resolver address.
memberThe short alias, when one was published.
member_publishedWhether the alias was published. Read this rather than testing member for emptiness.
api_keyThe new agent's own key.

api_key and doh_url appear on this one answer and never again. Capture both, and treat the doh_url as a password. The name in fqdn is a function of the address, derived as The address as identity sets out.

identity

Allocates another address on the calling key, or hands one back. Needs dns:identity.

whisper-call
CALL whisper.agents({op: 'identity', args: {label: 'reporting-job'}})

To hand one back, name the address and set release.

whisper-call
CALL whisper.agents({op: 'identity', args: {address: '2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478', release: true}})

Arguments

ArgumentContract
labelThe short name for the new address.
contact_emailOptional. Published on the registry record.
releasetrue releases an address instead of allocating one.
addressThe address to release. Required with release.

Returns

ColumnHolds
addressThe /128 allocated or released.
fqdnIts canonical name.
ptrIts reverse name.
stateWhere the allocation now stands.
doh_urlThe encrypted-DNS URL for it.
resolver_ipThe account's dedicated resolver address.

No second key comes back, because the address answers on the key that asked for it.

Which one to use

Use register when the thing being minted holds its own credential and should be governed as a principal in its own right. Use identity when one caller runs several addresses under the key it already has. On the command line the difference is whisper create --register --name <name> against whisper create --name <name>, and Create an identity walks the first one through.

Errors

CodeStatusMeaning
BAD_ARGS400A required argument is missing, or one is the wrong shape.
RESERVED_NAME, OFFENSIVE_NAME, PREMIUM_NAME403The label is not available under the naming rules. Pick another.
REGISTER_IN_PROGRESS409A register for this account is already running. Wait for it to finish.
AGENT_LIMIT, IDENTITY_LIMIT429The account's allowance is used up. Sign in to see the account, or ask Whisper to widen it.
PUBLISH_FAILED, STORE_UNAVAILABLE503The allocation did not reach DNS. Retry after the interval in retry_after.