Jam

Jamulus - Internet Jam Session Software

Current installer version: 3.12.1dev (Raw Audio).

Jamulus is the software I use to meet and play with musicians around the world, especially across Europe. It is built for online music-making with low-latency audio, and with the right hardware setup anyone can use it.

WhO IT'S FOR

Real-time online playing that feels musical

Jamulus is designed for rehearsing, jamming, and playing online with high-quality, low-latency sound, so it works far better for musicians than a normal video call.

The usual recommendation is simple. You need wired internet, headphones, and a decent audio interface or instrument setup, and a PC.

Downloads

Client Downloads

Direct client downloads from the GitHub r4_0_0-beta release.

Windows

Standard

Recommended for most Windows players.

Download .exe

macOS

Current Macs

Main macOS installer for current systems.

Download .dmg

Ubuntu / Debian

x64

Desktop Linux build for standard 64-bit systems.

Download .deb

Ubuntu / Debian

ARM64

For ARM64 Linux systems, including newer SBC setups.

Download ARM64 .deb

Raspberry Pi / ARM

ARMHF

A good fit for older Pi and 32-bit ARM installs.

Download ARMHF .deb

Android

APK

Install directly on Android from the current build.

Download .apk

Servers

Server / Headless Downloads

Dedicated server builds for hosting Jamulus nodes without the regular desktop client interface.

Ubuntu / Debian

Headless x64

For dedicated Linux servers on standard 64-bit hardware.

Download headless .deb

Docker Server

Run My Prebuilt Jamulus Container

If you want a fast Jamulus server setup, use my prebuilt container image from GitHub Container Registry. You do not need to build anything yourself. Just run the container and set your own server name/location values.

Quick Start

Package: ghcr.io/joshuadodds/jamulus

Image tag: ghcr.io/joshuadodds/jamulus:latest

docker run -d \
  --name jamulus \
  --restart unless-stopped \
  -p 22124:22124/udp \
  -e TZ=Europe/Amsterdam \
  -e JAMULUS_SERVER_NAME="My Server;Amsterdam;nl" \
  -v "$PWD/welcome.html:/opt/jamulus/welcome.html:ro" \
  ghcr.io/joshuadodds/jamulus:latest

Minimum settings: expose UDP 22124 and set JAMULUS_SERVER_NAME in format Name;City;country-code.

Always mount your own welcome.html, even if you leave it blank, so the server does not inherit my default welcome styling. Just create an empty welcome.html file (or add your own welcome text/html to it) in the same folder you run this command from and it will overwrite my standard welcome styling.

Check startup logs with docker logs -f jamulus. If your host is behind NAT, forward UDP 22124 on your router/firewall.

Private / Unlisted Server

For a private room that does not register in a public directory, add JAMULUS_ENABLE_DIRECTORY=false.

docker run -d \
  --name jamulus-private \
  --restart unless-stopped \
  -p 22124:22124/udp \
  -e JAMULUS_SERVER_NAME="Private Room;Amsterdam;nl" \
  -e JAMULUS_ENABLE_DIRECTORY=false \
  -v "$PWD/welcome.html:/opt/jamulus/welcome.html:ro" \
  ghcr.io/joshuadodds/jamulus:latest

Keep the welcome file mount in place here too, even for private servers.

Common optional settings: JAMULUS_MAX_USERS, JAMULUS_DIRECTORY_SERVER, and JAMULUS_PUBLIC_IP.