This interface was designed to work with minimal infrastructure so you can run it locally if you wish.
The interface expects the following environment variables to be set.
export NEXT_PUBLIC_PRIVY_APP_ID=
export NEXT_PUBLIC_RPC_URL=<MAINNET_RPC>
export DUNE_API_KEY=pnpm dev@ensdomains/ensjsfor on-chain writeszustandfor managing state@xyflow/react+@dagrejs/dagrefor rendering the node treeshadcnfor UI componentsvaulfor drawers
# Example
pnpm dlx shadcn add buttonThe following on-chain writes are supported via @ensdomains/ensjs:
- Set records — Batch update text records and coin records (ETH only for now) for any ENS name
- Create subname — Register a new subdomain under a parent name, supporting both the Name Wrapper and legacy registry
The interface is built around a simple editing loop:
- Query — We fetch the full ENS subgraph history for a domain tree. Because this data is sourced from on-chain events, it's trustworthy and used as the source of truth.
- Mutate locally — All edits (text record changes, new nodes, deletions) are tracked as local deltas. You can freely expand the tree, attach schemas, and update records without touching the chain.
- Apply on-chain — When ready, the accumulated deltas are reviewed and submitted as a batched on-chain write, keeping the changeset clean and minimal.