A nex profile for remote musical collaboration. Installs the network-music-performance stack — JackTrip, SonoBus, Jamulus, Mumble — on top of low-latency PipeWire.
Mesh networking + WireGuard tunneling between collaborators is handled out-of-band by styrened (Reticulum/LXMF). Install styrened separately and join the same RNS net — this profile installs the music tooling that runs over the resulting WireGuard interface.
Designed to bolt onto an existing NixOS install in one command.
- Three NMP protocols so you can pick whichever your collaborators run:
- JackTrip — uncompressed UDP, tightest possible latency (sub-15ms one-way on fiber). Technical CLI/Qt frontend.
- SonoBus — peer-to-peer with built-in NAT punch via the public sonobus.net broker. Friendliest GUI, no server needed. Recommended default for new collaborators.
- Jamulus — central-server model with a polished GUI. Public server directory or self-hostable. Slightly higher latency, lowest setup bar.
- Mumble for low-latency voice chat (separate from the music tracks).
- PipeWire at 48 kHz / 64-sample quantum with JACK API enabled — ~1.3 ms per period.
- Ardour for recording your local side of the session.
- qpwgraph + pavucontrol for routing.
- qmidinet for sharing MIDI clock between machines.
- mtr + iperf3 for diagnosing connection quality before a session.
nex profile apply styrene-lab/nex-jamkitBring up the WireGuard tunnel via styrened (one-time setup; out of scope for this profile — see styrened docs). Once the WireGuard interface is up and your collaborator is reachable on it, open SonoBus and connect by session name. Done.
See docs/quickstart.md for first-session details. For the local Roland TD-50 MIDI drum rig, see docs/td50-drum-stack.md. Latency probe profiles are documented in docs/td50-latency.md. The dependency boundary with polyrhythm is tracked in docs/dependency-contract.md: nex-jamkit installs/provides the graph nodes, while polyrhythm is the validated runtime authority for safe DRS start/check/monitor routing and explicit COSMIC audio recovery.
The physics floor is ~25 ms one-way. That requires:
- Both sides on fiber-class connections with < 15 ms RTT to each other
- A wired (not wifi) audio interface with hardware monitoring
- Closed-back headphones (open-back back-bleeds into the mic)
- No CPU governor doing aggressive frequency scaling (musnix RT kernel handles this if you set
realtime = truein the profile)
Asymmetric DSL or congested wifi will dominate the latency budget no matter what software you use. Run mtr <peer-wg-ip> before a session — if jitter is > 10 ms or packet loss is > 0.1%, you'll feel it.
The profile itself is NixOS-only. But the applications — JackTrip, SonoBus, Jamulus, Mumble — all have native binaries for macOS and Windows too. A non-Nix collaborator can install those four apps directly and join your sessions. They just don't get the reproducible PipeWire tuning. (The styrened mesh side does have macOS/Linux support; check styrened docs for current platform coverage.)
This profile is the lean sibling of nex-gamingpc, which adds the studio-machine layer (drum kit / Stream Deck / OBS / COSMIC desktop / AMD gaming stack). If you're the host of the jam and want all that, use nex-gamingpc. If you're a guitarist joining someone else's session, nex-jamkit is what you want.
MIT