DevMesh
Peer-to-peer dev mesh for sharing local services across machines. Run services locally, discover peers on your network, and route traffic transparently by service name.
Features
- Register local services (from
devmesh.toml) - HTTP reverse proxy routes by Host header (e.g.
http://mono:8080/) - Peer discovery via UDP broadcast (same LAN or VPN)
- Version awareness with optional strict mode
- Branch-based namespaces (git branch → isolated mesh)
- Web dashboard and ASCII/JSON graph
- Graceful shutdown (Ctrl+C)
Install
macOS (Homebrew):
Rust (crates.io):
GitHub Release:
Download devmesh-vX.Y.Z-<target>.tar.gz from Releases, extract and move the binary to your PATH.
From repo:
Quick Start
- Create
devmesh.tomlin your project root:
[]
= 3000
= "1.0.0"
- Add host resolution (one-time):
Add the printed line to /etc/hosts (or C:\Windows\System32\drivers\etc\hosts).
- Start the proxy (keeps running):
- In another terminal, register and run your service:
# then start your app on port 3000
-
Access via
http://mono:8080/ -
On another machine, run
devmesh proxyanddevmesh run mono. They discover each other; requests route to the nearest peer.
Commands
| Command | Description |
|---|---|
setup |
Interactive setup wizard (create config, add hosts) |
run <service> |
Register and start agent for a service |
stop <service> |
Unregister service |
status |
List local and peer services (--routes for routing view) |
install |
Show /etc/hosts line for service names |
proxy |
Start HTTP proxy + discovery (Ctrl+C to stop) |
graph |
Show mesh (--json for JSON, -o file to write) |
dashboard |
Web UI at http://127.0.0.1:3005 |
db status |
Registry and peers paths/stats |
Global: --config PATH — use specific config file
Configuration (devmesh.toml)
[]
= 8080
= false # true = reject on version mismatch
= 1
[]
= 35555
# broadcast_addr = "10.42.0.255" # for VPN/subnet
[]
= "my-ns" # optional, overrides git branch
= true # default: use git branch
[]
= 3000
= "1.0.0"
Environment
| Variable | Description |
|---|---|
DEVMESH_CONFIG |
Path to config (overrides devmesh.toml) |
RUST_LOG |
Log level (e.g. devmesh=debug) |
Namespaces
By default, namespace = git branch (sanitized: feature/foo → feature-foo). Services and peers are isolated by namespace. Override via [namespace] override or X-DevMesh-Namespace header.
Dashboard
Opens http://127.0.0.1:3005. Use ?namespace= to view other namespaces.
Docs
Serves documentation at http://127.0.0.1:3006.
License
See LICENSE file.