Skip to content

shadstoneofficial/headlessprofile

 
 

Repository files navigation

HNS.BIO

Fetches TXT records and displays them in a Linktree-style interface.

TXT Record Prefix Documentation

This repository provides comprehensive documentation for TXT record prefixes used with Handshake (HNS) TLDs. These prefixes facilitate standardized data interpretation, enabling clients to easily recognize and interact with on-chain and off-chain records.

Introduction

Handshake TLDs empower individuals and organizations with total ownership and sovereign identity by providing immutable, censorship-resistant on-chain records. This ensures that your data is securely published without the risk of alteration or suppression by centralized entities.

TXT record prefixes standardize how information is structured and interpreted, making it easier for services and applications to extract the intended data seamlessly.


Setup Instructions

  1. Navigate to your domain manager (e.g., Shakestation, Namebase, ...).

  2. Add a new TXT record with the following configuration:

    • Type: TXT
    • Name: @
    • Value/Data: <prefix>:<value> (e.g., link:example.com)
  3. After configuration, visit: https://hackbase.hns.bio (Replace "hackbase" with your actual TLD or desired domain name) or search for SLD's (ICANN/HNS) on the index page: https://hns.bio, you can share SLD's (ICANN/HNS) in this format https://hns.bio/sld.tld.


List of Prefixes

Layout

Prefix Purpose Example
pfp:<url> Profile picture URL pfp:example.com/img.png
name:<text> Display name name:Janice The Agent
category:<text> Main classification/category category:Sales Agent
bio:<text> Short biography or description (max ~250 chars) bio:Decentralized AI Agent
custom:<text> Alias for bio/description custom:Agent Bio here
bgcolor:<hex> Background color in HEX format bgcolor:ffffff
bg:<url> Background image URL bg:example.com/bg_img.png

Communication

Prefix Purpose Example
mail:<email> Email address mail:example@example.com
tel:<number> Phone number tel:+1234567890
tb:<username> Thunderbolt identifier tb:username
sx:<contactcode> SimpleX Chat sx:contactcode
matrix:<username> Matrix username matrix:username
sn:<number> Signal profile sn:+1234567890
wa:<number> WhatsApp wa:+1234567890
tg:<username> Telegram tg:username

Web

Prefix Purpose Example
link:<url> Redirect to a webpage link:example.com
ens:<url> Ethereum Name Service ens:vitalik.eth
onion:<url> Onion address onion:example.onion
ipfs:<url> IPFS content ipfs:QmExample
pk:<url> pkdns page pk:example

Social

Prefix Purpose Example
x:<username> X (formerly Twitter) profile x:username
nostr:<npub> Nostr public key nostr:npub123
gh:<username> GitHub profile/repo gh:username
bsky:<username> Bluesky profile bsky:username
ig:<username> Instagram profile ig:username
fb:<username> Facebook profile fb:username

Media

Prefix Purpose Example
yt:<username> YouTube channel/URL yt:@username
rumble:<channelname> Rumble channel/URL rumble:channelname

Wallet

Prefix Purpose Example
btc:<address> Bitcoin wallet address btc:btc_address
hns:<address> Handshake wallet address hns:hns_address
xmr:<address> Monero wallet address xmr:xmr_address
eth:<address> Ethereum wallet address eth:eth_address

Compatible wallet addresses:

btc, ln, hns, eth, xmr, zec, bat, aave, ada, algo, apt, atom, avax, bch, bgb, bnb, chainlink, cro, dai, doge, dot, ena, etc, fil, gt, hbar, hype, icp, jup, kas, leo, ltc, mnt, near, okb, om, ondo, op, pepe, pi, pol, render, shib, sol, sui, tao, tia, ton, trx, uni, usdc, usde, usdt, vet, xlm, xrp

TXT Chaining: Add External Records

Prefix Purpose Example
ext:<url> Fetch TXT records from an external TLD or SLD (HNS/ICANN) ext:example.com

Note:

This is an experimental demo. It uses HNS nodes (by Eskimo and James) to fetch the TXT records. When an NS is set up, it will fetch only off-chain TXT records.. It works with Handshake HNS TLDs, HNS SLDs, HNS dSLDs, ENS domains and ICANN SLDs.

The primary goal of this demo is to establish a universal standard for TXT records and pave the way for APIs supporting wallets, socials, logins,...

AI Agents / HeadlessDomains Extensions

Prefix Purpose Example
agent-manifest:<url> Link to agent.json manifest agent-manifest:headlessdomains.com/manifests/janice.agent.json
skill-md:<url> Link to SKILL.md documentation skill-md:headlessdomains.com/skills/janice.agent.md
agent-capabilities:... Comma-separated capabilities agent-capabilities:research,data-entry,web-browsing
arp:<url> Link to ARP chat interface arp:chat.arp.run/janice.agent

License

No license, no limits. Free to use, abuse and improve this code however you see fit.


Export to IPFS (True Decentralization)

Headless Profile acts as a dynamic gateway to render Handshake TXT records, but you can also export your profile to host it natively on the InterPlanetary File System (IPFS) and link it directly to your .agent or Handshake domain.

Option A: 1-Click Sync (Recommended for Headless Domains)

If your domain is registered on HeadlessDomains.com (e.g., .agent, .chatbot), you can automate the entire IPFS pinning and DNS configuration process:

  1. Start the Sync:
    • Look up your domain on headlessprofile.com.
    • Click the Export to IPFS ↗ button at the bottom of your profile.
    • Click Sync via Headless Domains.
  2. Auto-Pinning & Pre-filling:
    • The application will automatically take a snapshot of your profile, convert images to absolute paths, and securely send it to the Headless Domains API to pin via Pinata.
    • You will be instantly redirected back to your Headless Domains dashboard where the new ipfs:<YOUR_CID> TXT record will be perfectly pre-filled and ready for you to confirm. (Note: This flow can also be triggered directly from the Headless Domains dashboard via the &auto_pin=true URL parameter!)

Option B: Client-Side Export (Manual)

For domains registered elsewhere, or if you prefer to pin your files manually:

  1. Download the Source Code:
    • Look up your domain on headlessprofile.com.
    • Click the Export to IPFS ↗ button at the bottom of your profile.
    • Select Download Source (.html). This generates a single, standalone HTML file containing your entire profile.
  2. Upload to IPFS:
    • Create an account on a pinning service like Fleek or Pinata.
    • Upload the downloaded HTML file.
    • Copy the resulting IPFS CID (Content Identifier).
  3. Link to your Domain:
    • Go to your domain manager (e.g., Namebase or Shakestation).
    • Add a new TXT record to your domain:
      • Name: @ (or leave blank)
      • Value: ipfs:<YOUR_CID>

Once the DNS propagates, resolving your Handshake domain natively will load your decentralized profile directly from IPFS!

About

DNS/HNS/ENS based digital identity

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 50.8%
  • HTML 42.4%
  • CSS 6.8%