Context
I built ensemble, a research prototype that lets you manage ENS names through natural language — with GUI elements that feed into an AI agent rather than replacing it. It’s live at chat-ens.vercel.app. This post introduces the project and a broader thesis: as AI agents become the primary way people interact with software, ENS needs a natural language interface layer alongside its GUIs.
The Shift: GUI-First to NLI-First
For decades, using software meant clicking, typing, and navigating screens. Today, AI agents are becoming a new interface for discovering, configuring, and operating software.
This has implications for ENS:
- Registration goes from “fill out a form, approve three transactions” to “register myname.eth for two years on mainnet”
- Record management goes from “navigate to settings, find the text records tab, click edit” to “set my handle to
myname” - Lookups go from “paste an address into a search bar” to “who owns this address?”
The GUI doesn’t disappear: it becomes a prompt composer. You can still search any ENS name and see its profile, owner, and expiry like normal. But when you take action (edit records, register a name, etc.) you either type intent or use a form.
The GUI translates that input into a structured prompt. The agent executes. Input is assisted; execution is agentic. The NLI becomes the underlying runtime.
What ensemble Is
ensemble is a research prototype exploring this idea. It’s three services:
| Service | What it does |
|---|---|
| Agent API (Cloudflare Worker) | On-chain ENS reads and writes — registration, transfers, records, subnames |
| Chat Agent (Python, OpenAI tool-calling) | AI agent that maps natural language to ENS operations |
| Frontend (React, ChatKit) | Chat interface with wallet connection and transaction signing |
You can type what you want to do in plain language, or use familiar GUI elements — profile cards, text record forms, quick-action buttons — that compose prompts for the agent behind the scenes. Either way, the AI agent figures out which ENS operation to call, executes it, and reports back. Wallet signing happens in the browser when a transaction is needed.
The key idea: forms become prompt composers, not API callers. A text record form doesn’t call the contract directly — it builds a natural language instruction like “set Twitter to @estmcmxci and GitHub to estmcmxci on treceresearch.eth” and hands it to the agent. The GUI and NLI aren’t separate paths — they converge on the same agent runtime.
Try it
Some things to try: chat-ens.vercel.app
- “Resolve vitalik.eth”
- “What records are set on nick.eth?”
- “Is myname.eth available?”
- “Register myname.eth for 2 years”
- “Show me the profile for brantly.eth”
Registration and record edits require a connected wallet.
Audit the code
The entire project is open source — clone it, read it, run it locally: github.com/estmcmxci/ensemble
ensemble/
├── cli/ ENS CLI — resolve, register, transfer, edit records
├── ens-agent-api/ Cloudflare Worker — on-chain ENS reads & writes
├── ens-agent/
│ ├── backend/ Python agent — OpenAI tool-calling + ENS tools
│ └── frontend/ React + ChatKit UI
├── skills/ Reusable skill definitions (SKILL.md per workflow)
└── Makefile Task runner — all skills have a make target
What This Is Not
- Not a replacement for ENS App Alpha. The Alpha is the canonical GUI for ENS. ensemble is a research prototype exploring a different interface paradigm.
- Not production infrastructure. This is experimental. Use it to explore ideas, not to manage high-value names.
- Not a product pitch. This is an open-source experiment shared with builders who are thinking about AI + ENS.
What’s Next
ENS is already one of the most AI-legible protocols in crypto — human-readable names mapped to machine-readable addresses. What ENS use cases do you want to see powered by natural language? Would love to hear from builders exploring this space.
Links:
- Live app: chat-ens.vercel.app
- Source: github.com/estmcmxci/ensemble
- ENS xAI community chat: Telegram: View @ensxai
