A BurnerOS-style wallet for Burner Ethereum hardware cards on Ethereum, Base, Arbitrum, and Robinhood Chain, with WalletConnect so you can use the card as a signer in Safe.
Live: https://z80.wtf/burner
Private keys never leave the Burner secure element. Signing uses the same LibBurner / LibHaLo stack as official BurnerOS.
- Connect Burner via phone NFC (iPhone Safari / Android Chrome) or HaLo Bridge (desktop USB reader)
- View ETH balance and send on Ethereum, Base, Arbitrum, and Robinhood Chain (mainnet
4663/ testnet46630) - ENS forward resolution for send (
vitalik.eth) and reverse lookup on the connected address - WalletConnect pairing — paste a
wc:URI from Safe (or any dApp) - Approve session proposals and sign
personal_sign/ typed data / transactions with a card tap + PIN - Deep link to Safe with the selected chain
npm ci
cp .env.example .env.local
# Add a free WalletConnect Project ID from https://cloud.reown.com
npm run devOpen http://127.0.0.1:3847.
- Install HaLo Bridge and start it
- Grant origin consent: open
http://127.0.0.1:32868/consent?website=http://127.0.0.1:3847 - Plug in an NFC reader, tap your Burner, click Tap Burner to connect
For the deployed site, grant consent for the origin https://z80.wtf instead (no /burner path).
On iPhone, open the site in Safari, tap Tap Burner to connect, and follow the NFC security-key prompt while holding the Burner near the top of the phone. LibHaLo uses the iOS credential transport.
Android Chrome uses WebNFC. Neither phone flow requires HaLo Bridge or a hosted backend. The HaLo Bridge button is only for a desktop with the local bridge app and a USB NFC reader.
- Connect your Burner in RH Burner OS
- Paste your Reown / WalletConnect Project ID (stored in the browser)
- Open app.safe.global
- Connect wallet → WalletConnect → copy the URI
- Paste the URI into RH Burner OS → Pair with Safe → Approve
- When Safe asks you to sign, enter your PIN and tap the Burner
This repo deploys to https://z80.wtf/burner via GitHub Actions on every push to main.
- Repo Settings → Pages → Source: GitHub Actions (one-time)
- Push to
main(or run Deploy to GitHub Pages) - WalletConnect Project ID is included; override in the UI if needed
Local production export (with /burner base path):
GITHUB_PAGES=true npm run build
mkdir -p .preview
ln -sfn ../out .preview/burner
npx serve .preview
# Open http://localhost:3000/burner/| Network | Chain ID | RPC | Explorer |
|---|---|---|---|
| Ethereum | 1 | https://ethereum.reth.rs/rpc |
Etherscan |
| Base | 8453 | https://mainnet.base.org |
Basescan |
| Arbitrum One | 42161 | https://arb1.arbitrum.io/rpc |
Arbiscan |
| Robinhood Chain | 4663 | https://rpc.mainnet.chain.robinhood.com |
Blockscout |
| Robinhood Testnet | 46630 | https://rpc.testnet.chain.robinhood.com |
Testnet explorer |
ENS names are resolved against Ethereum mainnet regardless of the selected send network.
- Next.js, TypeScript, Tailwind, shadcn/ui
@arx-research/libburner+@arx-research/libhalo- viem
@reown/walletkit(WalletConnect wallet role)
| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID |
For WalletConnect | Project ID from cloud.reown.com |
You can also paste the Project ID in the UI; it is saved to localStorage only.
- This app never sees your private key or seed
- PIN is used only to authorize on-card signing and is not persisted
- Review every WalletConnect request before tapping to sign
Not affiliated with Robinhood Markets, Inc. or Arx Research.