A system tray application that creates a local version of eth.limo, allowing you to access ENS sites with https://your-domain.eth.localhost.
- 🌐 Local ENS resolution using Ethereum RPC
- 📁 Batteries-included IPFS - Automatically uses your kubo installation or starts a managed instance
- 🔒 HTTPS with locally-trusted certificates
- 🎯 Subdomain routing for
*.eth.localhost - ⚙️ Settings UI for easy configuration
- 🖥️ System tray app for macOS with menu bar icon
- 💾 Persistent configuration in
~/.localnode
npm install -g localnodenpm startThis will start LocalNode as a system tray application with a menu bar icon.
The tray menu provides:
- 💎 Quick access to ENS sites
- 🌐 IPFS Web UI link
- ⚙️ Settings window
- 🚪 Quit option
Click "Settings" in the tray menu to open the configuration window where you can set:
- Ethereum RPC URL - Your Ethereum node endpoint (default:
http://localhost:8545) - IPFS Gateway URL - Your IPFS gateway endpoint (default:
http://localhost:8080)
All settings are automatically saved to ~/.localnode/config.json and loaded on startup.
LocalNode stores all its data in ~/.localnode/:
config.json- Your configuration settingscerts/- SSL certificates for HTTPSipfs/- Managed IPFS instance data (when not using system IPFS)cache/- Cached ENS resolutions and IPFS content
None! LocalNode ships with everything you need:
- Ethereum Node: Uses Helios light client for trustless Ethereum access
- IPFS: Automatically detects and uses existing kubo installation on port 5001, or starts its own managed instance on standard ports
- SSL Certificates: Automatically generates locally-trusted certificates
If you have kubo/IPFS already running on port 5001, LocalNode will automatically detect and use it. Otherwise, it will download and run its own instance with API on port 5001 and gateway on port 58080 (custom port to avoid conflicts).
See IPFS-INTEGRATION.md for detailed information about the IPFS integration.
Once running, you can access ENS sites like:
https://vitalik.eth.localhost- Vitalik's ENS sitehttps://ethereum.eth.localhost- Ethereum's ENS sitehttps://your-domain.eth.localhost- Any ENS domain
- ENS Resolution: The tool resolves ENS domains to IPFS content hashes using the Universal Resolver
- IPFS Gateway: Proxies requests to your local IPFS gateway using the resolved hash
- HTTPS Serving: Serves the content over HTTPS with self-signed certificates
- Subdomain Routing: Routes
*.eth.localhostsubdomains to the appropriate ENS domains
LocalNode uses the following default configuration stored in ~/.localnode/config.json:
{
"ethereumRpc": "http://localhost:8545",
"ipfsGateway": "http://localhost:8080",
"domain": "localhost",
"port": 443,
}You can modify these settings through the Settings UI (recommended) or by editing the config file directly.
Since the tool uses self-signed certificates, your browser will show security warnings. You can:
- Click "Advanced" and "Proceed to site"
- Add the certificate to your browser's trusted certificates
- Use a tool like
mkcertto generate locally trusted certificates
If ENS domains aren't resolving:
- Check that your Ethereum RPC is accessible
- Verify the ENS domain exists and has a content hash set
- Check the console logs for specific error messages
If content isn't loading:
- Check the console logs to see if LocalNode is using existing IPFS or managed instance
- If using managed IPFS, verify the managed instance started successfully (check logs)
- If you have an existing IPFS installation, ensure it's running on port 5001:
ipfs daemon - Check that the IPFS hash exists and can be fetched
For detailed IPFS troubleshooting, see IPFS-INTEGRATION.md.
To run from source:
git clone <repository>
cd localnode
pnpm install
pnpm startFirst, install electron-builder:
pnpm installBuild distributable packages:
# Build for macOS (DMG and ZIP for both Intel and Apple Silicon)
pnpm run build:mac
# Build for Linux (deb and AppImage)
pnpm run build:linux
# Build for both macOS and Linux
pnpm run build:allBuilt packages will be in the dist/ directory:
macOS:
dist/Local Node-0.1.0-arm64.dmg- Apple Silicon DMG installerdist/Local Node-0.1.0-x64.dmg- Intel DMG installerdist/Local Node-0.1.0-arm64-mac.zip- Apple Silicon ZIPdist/Local Node-0.1.0-x64-mac.zip- Intel ZIP
Linux:
dist/localnode_0.1.0_amd64.deb- Debian packagedist/Local Node-0.1.0.AppImage- Portable AppImage
macOS:
# Open the DMG and drag to Applications
open dist/Local\ Node-*.dmg
# Or install from ZIP
unzip dist/Local\ Node-*-mac.zip -d /Applications/Linux (Debian/Ubuntu):
sudo dpkg -i dist/localnode_*.debLinux (AppImage):
chmod +x dist/Local\ Node-*.AppImage
./dist/Local\ Node-*.AppImageMIT