HM Domains Logo DOCS
Open Console ↗

HM Domains Documentation

HM Domains is a high-speed, GitHub-verified free subdomain registration platform built for developers, indie hackers, and open-source projects.

100% Free Forever: HM Domains provides free DNS management powered by Cloudflare's global Anycast edge network with automated DDoS protection and zero hosting fees.

⚡ Instant Provisioning

DNS records publish across 300+ global Cloudflare edge locations within seconds.

🛡️ Anti-Squatting

GitHub developer account verification prevents automated abuse and hoarding.

🎛️ Full DNS Control

Manage A, CNAME, TXT, and MX records or delegate NS to your own DNS provider.

Quick Start Guide

Get your free developer subdomain up and running in under 2 minutes:

  1. Sign In: Authenticate with your GitHub account via Sign in with GitHub.
  2. Star Repository: Star the official HMDomains repository to unlock your domain registration slots.
  3. Claim Subdomain: Visit the Claim Domain tab, choose your prefix handle (e.g. my-app), select your target root domain, and point it to your IP or CNAME target.

Supported Root Domains

You can register your free subdomains under any of the following active domain pools:

Domain Category Status Nameservers
lnkd1.bond Developer & Portfolio URLs Active Cloudflare Anycast
myyportfolio.cyou Resumes & Portfolio Sites Active Cloudflare Anycast

GitHub Account Verification

To ensure fair usage and support open-source sustainability, HM Domains requires a one-time star verification:

Keep your Star active: Unstarring the repository may cause your claimed subdomain slots to freeze or revert back to the public pool.

You can check or re-verify your verification status anytime at /dashboard/verification.

Naming Conventions & Rules

When claiming a subdomain, your handle must comply with standard RFC 1035 host naming rules:

  • Allowed characters: lowercase letters (a-z), numbers (0-9), and hyphens (-).
  • Length: Minimum 3 characters, maximum 32 characters.
  • Cannot start or end with a hyphen (e.g. -test- is invalid).
  • Reserved handles (e.g. admin, api, mail, ns1, dns) are restricted for infrastructure protection.

DNS Records Management

HM Domains allows complete management of custom DNS records directly from your dashboard:

Record Type Target Example Usage
A 192.0.2.1 Point your subdomain to a VPS, dedicated server, or static IP.
CNAME cname.vercel-dns.com Alias to Vercel, Netlify, Render, GitHub Pages, or Fly.io.
TXT v=spf1 include:... ~all Domain ownership verification, SPF records, or Google Site verification.
MX mail.example.com Configure custom email routing or forwarding for your subdomain.
Example: Pointing to GitHub Pages (CNAME)
Record Type: CNAME
Name: @ (or leave blank)
Value: username.github.io
TTL: Auto (3600s)

Custom Nameserver (NS) Delegation

If you prefer to manage DNS records inside your own Cloudflare account, AWS Route 53, or Vercel DNS, you can delegate your subdomain using NS records:

Example: Cloudflare Custom NS Delegation
Nameserver 1: adam.ns.cloudflare.com
Nameserver 2: amy.ns.cloudflare.com

Simply navigate to My Domains → Manage Nameservers, input your nameserver addresses, and save.

Developer API Reference

Programmatically register subdomains and update DNS records via our REST endpoints:

1. Check Subdomain Availability

POST /api/check-subdomain
curl -X POST https://hmdomains.app/api/check-subdomain \
  -H "Content-Type: application/json" \
  -d '{
    "subdomain": "my-portfolio",
    "domain": "lnkd1.bond"
  }'

2. Register / Claim Subdomain

POST /api/request-subdomain
curl -X POST https://hmdomains.app/api/request-subdomain \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <FIREBASE_ID_TOKEN>" \
  -d '{
    "subdomain": "my-portfolio",
    "domain": "lnkd1.bond",
    "targetIp": "192.0.2.148",
    "type": "A",
    "ttl": 3600
  }'

3. Manage DNS Records (Create / Delete)

POST /api/manage-dns
curl -X POST https://hmdomains.app/api/manage-dns \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <FIREBASE_ID_TOKEN>" \
  -d '{
    "action": "create",
    "subdomain": "my-portfolio.lnkd1.bond",
    "type": "CNAME",
    "name": "www",
    "content": "portfolio.vercel.app",
    "ttl": 3600
  }'

Frequently Asked Questions

How many subdomains can I register?

Each verified GitHub user can register up to 5 subdomains across any available root domain pools.

Is SSL / HTTPS included?

Yes. Because all DNS routing passes through Cloudflare's Anycast proxy edge, Universal SSL is automatically provisioned and renewed with zero certificate configuration needed on your side.

Can I host commercial or open-source projects?

Yes, developer portfolios, blogs, open-source documentation, SaaS demos, and side projects are 100% permitted.