Peer-to-peer dev mesh for sharing local services across machines.
DevMesh lets you run services locally on your machine, discover peers on the same network (LAN or VPN), and route HTTP traffic by service name. Use http://mono:8080/ instead of http://localhost:3000—DevMesh routes to your local service or to a peer if you're not running it.
devmesh.tomlRequires Rust. From the repo:
cargo install --path .
Or build and run:
cargo build --release
./target/release/devmesh --help
[services.mono]
port = 3000
version = "1.0.0"
devmesh install
Add the printed line to /etc/hosts (macOS/Linux) or C:\Windows\System32\drivers\etc\hosts (Windows).
devmesh proxy
Leave this running. Press Ctrl+C to stop gracefully.
devmesh run mono
# Then start your app on port 3000
curl http://mono:8080/
On another machine on the same network, run devmesh proxy and devmesh run mono. They discover each other. Requests route locally first, then to peers. Round-robin when multiple peers have the same service.
run <service> | Register service (from config) |
stop <service> | Unregister service |
status | List local and peer services (--routes for routing) |
install | Show /etc/hosts line |
proxy | Start HTTP proxy + discovery |
graph | ASCII mesh (--json, -o file) |
dashboard | Web UI (port 3005) |
docs | Serve this documentation (port 3006) |
db status | Registry and peers paths/stats |
Global: --config PATH uses a specific config file.
Config is loaded from devmesh.toml (cwd), ~/.devmesh/config.toml, or DEVMESH_CONFIG / --config.
[proxy]
port = 8080
version_strict = false # true = reject on version mismatch
cache_ttl_secs = 1
[discovery]
port = 35555
# broadcast_addr = "10.42.0.255" # for VPN
[namespace]
override = "my-ns" # overrides git branch
auto = true # use git branch (default)
[services.mono]
port = 3000
version = "1.0.0"
[services.ui]
port = 3001
Services and peers are isolated by namespace. Default: namespace = current git branch (sanitized, e.g. feature/foo → feature-foo).
[namespace] override = "staging" — fixed namespace[namespace] auto = false — use "default" instead of gitX-DevMesh-Namespace: staging — per-request override (proxy)Dashboard and API support ?namespace= to view other namespaces.
devmesh dashboard
Opens http://127.0.0.1:3005. Shows local services, peers, version mismatches. Use the namespace input to switch namespaces.
Set version in [services.X]. Clients can send X-DevMesh-Expected-Version: ^1.0 (semver range). If target version doesn't match:
version_strict = false (default): warn onlyversion_strict = true: return 409 ConflictMajor version mismatches are highlighted in status and dashboard.
RUST_LOG=devmesh=debug for verbose logs.