Open .eth websites like any other,
verified locally.
A browser extension that resolves ENS names directly against Ethereum state via a light client. Content comes from your own IPFS node, or straight from the contract for onchain dapps. No public gateway. Nothing to trust in the middle.
The trust boundary belongs on your machine.
Typing name.eth in a browser usually meant trusting a
gateway like eth.limo. That was always the wrong trust
model.
dapp3 resolves ENS on your machine, verifies it with a Helios light client, and loads content from your own local IPFS node. No gateway. No shared DNS. No middleman.
How a .eth navigation works
Three local components. Everything the extension reads from the network, it verifies.
-
01
Intercept
The service worker catches the navigation to
*.ethbefore Chrome issues DNS. The browser never asks a public resolver where your ENS name points. -
02
Resolve & verify
A Helios light client, running inside an offscreen document, reads the ENS resolver's
contenthashviaeth_call. Every read is proof-checked against the beacon chain. The RPC you point it at is never trusted. -
03
Serve locally
The CID is loaded from your own Kubo node at
<cid>.ipfs.localhost:8080. Per-CID subdomains give every site its own browser origin, so cookies and storage stay isolated, just like on the public web.
Onchain dapps work too
Some of the most interesting .eth names don't point
at IPFS at all. They point at a contract that stores its own HTML
directly onchain. dapp3 follows the fallback automatically.
What you get
Security properties and browser ergonomics, without introducing a new trusted middle layer.
No trusted gateway
Nothing between you and Ethereum. State reads are verified against the consensus-committed root by a light client on your device.
Your IPFS node
Content loads from the Kubo / IPFS Desktop node you already run. Nothing is ever fetched through a public gateway.
Origin isolation
Each site gets its own origin via CID-per-subdomain. Cookies,
localStorage, and service workers stay scoped to
one .eth site.
The real name, always
A minimal banner shows the ENS name you actually typed, even
though the tab's URL is pointed at localhost. No
spoofing surface.
Onchain dapps included
ENS names that resolve to an ERC-4804 contract render too. The
HTML is fetched via eth_call, pinned to your Kubo
node, and served from the same isolated origin. No w3eth.io.
Bring your own RPC
Point it at any mainnet RPC: Alchemy, Infura, your own node, whatever. Health is tracked per endpoint and you can swap at any time.
Install dapp3
You'll need IPFS Desktop (or kubo) running locally and
one Ethereum mainnet RPC URL. Onboarding walks you through both.
-
Browser
Chromium-based (Chrome, Brave, Arc, Edge). MV3.
-
IPFS
IPFS Desktop or Kubo running locally.
Subdomain gateway enabled onlocalhost -
RPC
Any Ethereum mainnet RPC. It's never trusted. Helios verifies everything.