# JMPKit Domains Connect your domain to an existing app. Its original link keeps working. Read `README.md`, then `protocol/custom-domains-v1.md` and `examples.md`. Choose the Node, Python or curl sample in `samples/`. Use the returned app host and its owner's bearer. Request a binding, return the exact DNS records to the user, verify, and report the custom link ready only when `state` is `active` and `tlsReady` is true. Keep the TXT record. Use DNS-only for initial activation. Once active, Cloudflare orange cloud is compatible: keep the origin target and TXT proof, and use Full (strict) TLS. Healthy verification is daily. Inspect `lastError`, `nextCheckAt` and `leaseUntil` for renewal warnings; temporary failures do not immediately disable an established domain. Read the protocol for the bounded grace policy. Check runtime `enabled`; static documentation is not proof of availability. Never expose owner credentials in browser code or bypass HTTPS validation. Domain attachment does not transfer ownership or extend app lifetime. Domains has its own starter for focused discovery. Gateway implements the existing `/api/domains` API; there is no additional service to install and no `/api/domains10` endpoint. Read the Gateway starter only if you also need to create/recover an identity, create an app, or manage ownership.