Skip to content

landgrab

Scan — and, with explicit gates, register — an entity name across the surfaces that matter for a venture/brand/token launch:

SurfaceScanAuto-register
Domains (RDAP + DoH, any TLD)✅ reliable✅ gated (Namecheap; sandbox by default)
ENS .eth✅ (ownership)✋ runbook (needs wallet — never auto-signed)
Token ticker (CoinGecko)✅ collision check— (claimed at deploy)
GitHub org/user✅ reliable✋ free, manual link
npm / PyPI / crates✅ reliable✋ free, manual
Reddit / Bluesky✅ reliable APIs✋ manual
X / Telegram / Instagram / TikTok / Discord✋ not auto-checkable✋ manual (CAPTCHA/SPA)

Built for the OPEN PANEL $LONGBOX land-grab; reusable for any name.

landgrab automates outward, often irreversible, sometimes paid actions, so it is scan-first, register-gated by design:

  1. scan is read-only. It never registers anything.
  2. register is dry-run by default. A real call needs --yes and credentials in the environment. Money-spending (live) calls additionally need LANDGRAB_LIVE=1 — otherwise the Namecheap sandbox is used so you can rehearse.
  3. Secrets come from os.environ only — never a file, never logged.
  4. No wallet keys are ever handled. ENS and social registration are runbook-only.
  5. Honest by construction: surfaces that can’t be cleared (X/Telegram/…) are reported MANUAL, never guessed.
Terminal window
cd tools/landgrab
# read-only scan (no install needed — stdlib only)
python -m landgrab scan longbox
python -m landgrab scan longbox --surfaces domains,ens,token
python -m landgrab scan longbox --json longbox.json
# claim runbook (markdown) for everything still free
python -m landgrab plan longbox
# registration — DRY-RUN (prints exactly what it would do)
python -m landgrab register longbox --surface domains
# ...for real, into the Namecheap SANDBOX:
NAMECHEAP_API_USER= NAMECHEAP_API_KEY= NAMECHEAP_USERNAME= NAMECHEAP_CLIENT_IP= \
python -m landgrab register longbox --surface domains --yes
# ...live spend (deliberate): add LANDGRAB_LIVE=1

Optional install for a landgrab console command: pip install -e .

Add a surface: subclass landgrab.core.Provider, implement scan(), register it in landgrab/providers/__init__.py. Add an auto-registrar: follow the gated pattern in landgrab/registrars.py (dry-run default, env creds, no secret logging).