- Rust 53.6%
- Svelte 32.6%
- TypeScript 11.7%
- Shell 1%
- CSS 0.4%
- Other 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .cargo | ||
| .forgejo/workflows | ||
| ci | ||
| doc | ||
| img | ||
| scripts | ||
| src | ||
| src-tauri | ||
| .gitignore | ||
| CHANGELOG.md | ||
| deny.toml | ||
| eslint.config.js | ||
| index.html | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| VERSION.md | ||
| vite.config.ts | ||

MeshBerth
Cross-Platform Desktop GUI for ZeroTier
MeshBerth is a cross-platform desktop GUI for managing ZeroTier nodes without
relying on the command line. It gives you a clean, practical interface for the
local zerotier-cli workflow — view service status, inspect node identity and
version, join and leave networks, review assigned addresses, and manage
client-side options like managed routes and DNS behavior — without memorizing
commands, switching terminals, or parsing raw output.
The goal is simple: everything available through the ZeroTier client CLI should be reachable through an intuitive graphical interface. Today MeshBerth covers node status, network membership, peer visibility, route inspection, moon configuration, and client-side settings, with deeper diagnostics on the way (see Features for what ships now versus what's planned).
MeshBerth does not replace ZeroTier Central or controller-side administration. It focuses on the local client experience: the ZeroTier service, the current node, and the networks that node belongs to.
The dashboard — node status, connectivity, peers, and service control. See the full visual tour →
At a glance
- One-window control panel for the local ZeroTier service, plus a system tray icon showing connection state with quick per-network disconnect.
- Friction-free setup — a short first-run wizard detects ZeroTier, can start the service, and grants MeshBerth read access to the node, mostly automated with at most one elevated prompt per step.
- Direct to the service — talks to the local ZeroTier JSON API the same way
zerotier-clidoes; no output scraping. - Lightweight — a Tauri 2 (Rust) backend with a Svelte 5 frontend; small binaries, low memory, native OS webview.
Features
Available now (v1.0):
- First-run setup wizard (detect ZeroTier, start the service, grant token access)
- Dashboard — node ID, online status, version, and service start / stop / restart
- Networks — join and leave, per-network detail (assigned addresses, managed
routes, DNS), the four client-side toggles (
allowManaged,allowGlobal,allowDefault,allowDNS), and an instant keyword filter, with optimistic UI updates so toggles settle immediately instead of waiting for the next poll - Looking Glass — every managed route across all joined networks, split by IPv4/IPv6, with sortable columns and an instant keyword filter
- Advanced — node connectivity settings (primary/secondary ports, UPnP/NAT-PMP
port mapping, TCP fallback relay, force TCP relay), applied via an
elevated, merge-safe
local.confedit and service restart - Peers — reachable nodes with role (planet/moon/leaf), latency, and direct/relayed paths, read-only, with an instant keyword filter
- Moons — list, orbit, and deorbit external ZeroTier roots via the local
/moonAPI, no elevation required - Light and dark theming, following the system by default with a manual override in Settings
- Settings — adaptive refresh intervals
- About — version, license, and a plain-language summary of what MeshBerth touches (and doesn't)
- System tray with connection state, quick disconnect, close-to-tray, and a status-aware icon (online/degraded/offline)
- Start on login, start hidden, and desktop notifications for node/network events — all off by default, configurable in Settings
Planned: debug dumps, a raw API inspector, Flatpak, and
Windows / macOS installers. See
doc/FEATURES.md for the full feature list, release phasing,
and the zerotier-cli → MeshBerth parity map.
Status & platforms
MeshBerth 1.0 is Linux-first: the build targets are AppImage, .deb, and
.rpm. Windows and macOS support is planned for a later release.
Prerequisite: MeshBerth manages the ZeroTier service and node but does not install ZeroTier itself. Install ZeroTier One first; the setup wizard handles the rest.
Installation
Install from the apt/dnf package repository (recommended — you get updates),
or grab a standalone AppImage / .deb / .rpm attached to each
Forgejo release and verify it
against the release's SHA256SUMS/SHA512SUMS. You can also build from source
(below). Full details in doc/INSTALLATION.md.
Building from source
MeshBerth uses a containerized build environment, so the whole toolchain lives in an image and nothing is installed on your host — you only need Podman (or Docker):
git clone https://git.jdneer.com/jd/meshberth.git
cd meshberth
scripts/in-container.sh bash -c 'npm ci && npm run tauri build -- --bundles deb'
Run the full local check battery (the same gates CI runs) with:
scripts/ci-local.sh # prints "all gates green ✓" on success
See doc/BUILD.md for the complete build, test, and dev-run guide.
Documentation
| Document | What's inside |
|---|---|
| Visual Tour | Screenshots of every screen |
| Features | Feature list, release phasing, zerotier-cli parity map |
| Installation | Installing MeshBerth (Linux packages, from source) |
| First-Run Setup | The setup wizard and how MeshBerth gains service access |
| ZeroTier Integration | Per-platform service start, token bootstrap, and elevation (polkit/D-Bus) |
| Privilege Elevation | The elevation mechanism itself: command shapes, polkit/D-Bus chain, injection safety, exit-code mapping |
| Configuration | Settings, adaptive polling, persistence |
| Troubleshooting | Connection states and common problems |
| Architecture | How the app is built: layers, modules, data flow |
| Tech Stack | Technology choices and rationale |
| ZeroTier Service API | The local ZeroTier API MeshBerth consumes |
| Theming | Design tokens, the light/dark switch, and the theme setting |
| Build | Building and running from source |
| Contributing | Development workflow, CI, conventions |
| Dev Guidelines | Coding standards: docs, linting, security, testing |
| Dependency Policy | Supply-chain and pinning policy |
| Release Process | How releases are cut |
| Roadmap | What might come next, and why |
License
MIT — see LICENSE.