Skip to content
Pinner.xyz

Point & Unpoint

The point and unpoint commands manage the link between an onchain name and IPFS content via IPNS.

point

Point an onchain name at IPFS content.

pinner point <name> --cid <cid>

Arguments

ArgumentDescription
<name>The onchain name to point (e.g., vitalik.eth)

Flags

FlagAliasDescription
--cid-cCID to point the name at (required)

Behavior

point is idempotent:

  1. If no IPNS key exists for the name, one is created automatically
  2. If an IPNS key already exists, it's reused and the new CID is published to it
  3. The contenthash (ipns://<ipns-name>) is returned for you to set in your name manager

Examples

Point a name at content:

pinner point vitalik.eth --cid bafybeigqaforwjgcx45jnh7dgyfgqqm2lei4hurrrnsizrpgyxz3egtd7e

Update content (same command, new CID):

pinner point vitalik.eth --cid bafybeig...updated-cid

Get JSON output:

pinner point vitalik.eth --cid bafybeig... --json
{
  "name": "vitalik.eth",
  "cid": "bafybeigqaforwjgcx45jnh7dgyfgqqm2lei4hurrrnsizrpgyxz3egtd7e",
  "ipns_name": "k51qzi5uqu5djx...",
  "contenthash": "ipns://k51qzi5uqu5djx...",
  "created": true
}

The created field is true when a new IPNS key was created, false when an existing key was reused.

What to do after running point

point handles Pinner's side: the IPNS key is created and the CID is published. But your name won't resolve until you set the contenthash in your name manager.

  1. Copy the Contenthash value from the output
  2. Set it as the contenthash record for your name (in your ENS controller, etc.)
  3. Verify by visiting your name through a resolver (e.g., https://vitalik.eth.limo for ENS names)

Troubleshooting

ProblemCauseFix
name is requiredNo name argument providedPass the name: pinner point vitalik.eth --cid <cid>
failed to publish to IPNSCID is invalid or network errorVerify the CID is valid and try again
Name doesn't resolve after setting contenthashContenthash not set, or set incorrectlyVerify the contenthash matches the output from point exactly; it should start with ipns://
Name resolves but shows old contentIPNS record hasn't propagatedWait a moment for IPNS propagation and refresh

unpoint

Remove the IPNS key for an onchain name.

pinner unpoint <name>

Arguments

ArgumentDescription
<name>The onchain name to unpoint (e.g., vitalik.eth)

Behavior

  1. Finds the IPNS key for the given name
  2. Deletes the key
  3. The name will no longer resolve to IPFS content

Examples

Remove a pointing:

pinner unpoint vitalik.eth

You'll see output like:

Domain unpointed successfully

Name          vitalik.eth
IPNS Name     k51qzi5uqu5djx...

JSON output:

pinner unpoint vitalik.eth --json
{
  "name": "vitalik.eth",
  "ipns_name": "k51qzi5uqu5djx...",
  "deleted": true
}

Troubleshooting

ProblemCauseFix
no IPNS key found for "vitalik.eth"No IPNS key with that name existsThe name may have already been unpointed, or was never pointed
Name still resolves after unpointContenthash still set in name managerRemove the contenthash from your name manager separately; unpoint only handles Pinner's side

When to use point vs lower-level IPNS commands

point is the recommended way to manage onchain names. It handles key creation, publishing, and idempotent updates in a single command.

Use the lower-level ipns commands when you need more control:

What you needCommand
Quick onchain name setuppinner point <name> --cid <cid>
Import an existing private keypinner ipns keys create <name> --key <key>
Set a custom TTL on the IPNS recordpinner ipns publish <cid> --key-name <name> --ttl 24h
Resolve an IPNS namepinner ipns resolve <ipns-name>
Republish without changing the CIDpinner ipns republish <key-name-or-id>
List all IPNS keyspinner ipns keys list
Delete a key by name or IDpinner ipns keys delete <key-name-or-id>

See Publish with IPNS for the full IPNS reference.