NeoMist is a local-first desktop app for browsing .eth and .wei sites without relying on centralized gateways. It runs a tray app, an embedded web dashboard, a loopback-only HTTPS server, local DNS for Ethereum names, a Helios light client, and an IPFS node or proxy.
- Opens
.ethand.weidapps from a local dashboard athttps://neomist.localhost - Resolves onchain contenthash records locally and proxies them through IPFS
- Serves
neomist.localhost,ipfs.localhost, and*.ipfs.localhostover locally trusted TLS - Caches site versions, shows how much content is stored locally, and can follow later updates
- Exposes consensus checkpoints so users can compare what chain state they are seeing
- Lets you configure fallback consensus and execution RPC endpoints from the UI
- Uses an existing local Kubo instance when available, or downloads and runs a managed one
- Rust desktop app and tray UI built with
tao,tray-icon, andaxum - Helios for Ethereum light-client sync
alloyfor ENS and.weicontenthash resolution- Kubo for local IPFS access
- React + Vite + Tailwind + DaisyUI frontend embedded into the Rust binary at build time
https://neomist.localhostfor the dashboard, launcher, settings, and seeding UIhttps://neomist.localhost/rpcfor loopback-only JSON-RPC access backed by the embedded Helios clienthttps://ipfs.localhost/webuifor the local IPFS WebUIhttps://<cid>.ipfs.localhostfor the local IPFS gatewayhttps://<name>.ethandhttps://<name>.weionce NeoMist installs local DNS integration
- macOS or Linux
- Rust toolchain with Cargo
- Node.js and npm for the embedded UI build
- A desktop session capable of running a tray app
- On Ubuntu/Kubuntu for builds:
pkg-config,libglib2.0-dev,libgtk-3-dev, andlibayatana-appindicator3-dev - On Linux:
systemd-resolved,pkexec,update-ca-certificates, andlibcap2-bin
cargo runNotes:
- The Rust build automatically rebuilds the UI from
ui/when needed. - On first launch, NeoMist may prompt for administrator or root access to install local certificate trust and DNS handling.
- On Linux, NeoMist may restart itself once after first launch so it can bind local HTTPS on port
443. - After startup, open
https://neomist.localhostor use the tray menu'sDashboarditem.
To build an optimized binary:
cargo build --releaseFor UI-only iteration:
cd ui
npm install
npm run devThe production app does not serve the Vite dev server directly. NeoMist embeds the built files from ui/dist into the Rust binary.
neomist --helpUseful commands:
neomiststarts the appsudo neomist system install --yesinstalls system integration on macOSsudo neomist system uninstall --yesremoves DNS resolver configuration and NeoMist certificates on macOS or Linux
NeoMist stores its user configuration at ~/.config/neomist/config.json and runtime data under ~/.local/share/neomist.
The settings UI currently manages:
- consensus RPC fallback order
- execution RPC fallback order
- background follow interval in minutes
- start NeoMist automatically at login
Default endpoints in the current codebase are:
- consensus:
https://ethereum.operationsolarstorm.org - execution:
https://eth.drpc.org
Build a standalone app bundle:
scripts/build-macos-app.shBuild an installer package:
scripts/build-macos-pkg.shCurrent macOS outputs:
dist/neomist-<version>-macos-<arch>.appdist/neomist-<version>-macos-<arch>.pkg
If you launch the packaged .app directly, place it in /Applications before first run so NeoMist can complete its system setup.
More packaging details live in packaging/macos/README.md.
Build a Debian package:
scripts/build-deb.shBuild an AppImage:
scripts/build-appimage.shTrigger Linux CI release builds from Cargo version:
- Open GitHub
Actions - Run
Tag And Build - Workflow reads
Cargo.toml, createsv<version>tag, and fails if that tag already exists - Workflow explicitly dispatches
Linux Packagesagainst that new tag
Current Linux outputs:
dist/neomist-<version>-linux-x86_64.debdist/neomist-<version>-linux-arm64.debdist/neomist-<version>-linux-x86_64.AppImagedist/neomist-<version>-linux-arm64.AppImage
Linux packaging note:
.debis primary Linux package because it installs NeoMist into stable native system paths and fits current DNS / CA trust / privileged-port model..debmanages runtime deps withdpkg-shlibdepsplus explicit host-tool deps for NeoMist's tray, DNS, cert, and integration flow.- AppImage is secondary convenience artifact. It remains useful for direct download, but current Linux setup still assumes stable writable executable path for
setcapand autostart. - AppImage bundles shared libraries, but still relies on host system for integration tools like
pkexec,setcap,systemctl,update-ca-certificates, andxdg-open. - Current repo supports host-native Linux builds cleanly:
.deband AppImage on arm64 here, same scripts on x86_64 hosts. Full 4-target local matrix from this arm64 machine still needs extra cross/emulation setup.
Current packaging ID defaults:
- Linux desktop ID:
eth.neomist.app - macOS bundle ID:
eth.neomist.app
More packaging details live in packaging/linux/README.md.
src/Rust app, DNS, TLS, ENS, IPFS, tray, and HTTP server codeui/React dashboard sourceassets/icons and logo filesscripts/packaging helperspackaging/macOS app and installer templates
