Nimbrung Ask Adrian

A self-hosted jam for YouTube Music

Everyone picks the music.

Nimbrung turns a laptop and a speaker into a queue the whole room can add to. Guests scan a QR code and add songs from their phones. No account, no app.

Nimbrung (Indonesian): to join in on something already going.

The code isn’t public yet.

A guest’s phone in the jam Rina’s rooftop: Senja di Kemang by Laut Biru is playing, added by Rina. Under it are the reactions, a vote to skip, Quieter and Louder, a chat line, and Up next with Bima’s own song second.

How it works

  1. Plug in the laptop.

    A laptop runs the YouTube Music desktop app and Nimbrung, and plays through the speaker. Nimbrung puts the app’s queue on a web page.

  2. Guests scan the QR code.

    They type a nickname, pick a face, and they’re in. On the same Wi-Fi that’s all. Friends somewhere else join through ngrok or your own domain on Cloudflare.

  3. Everyone adds songs.

    Songs play in the order they were added, ahead of autoplay. When the list runs out, YouTube Music’s autoplay keeps going.

Scan to open this page on your phone. Beside the code, the join screen a guest sees: You’re invited to Rina’s rooftop, pick your face, type a name, Join the jam.

From any phone in the room

Guests open a web page. This is what they can do.

  • Add songs

    Search songs, videos and playlists. A line from the lyrics works too.

  • Bring a playlist

    Share a link from the YouTube Music app, or paste one. A playlist opens so you can pick songs from it.

  • Change the order

    Move songs up or down in Up next, take your own out, or shuffle it.

  • Vote to skip

    A song skips when enough people vote. Three, unless the host changes it.

  • Louder or quieter

    Guests can’t touch the volume. They can ask, and the host sees how many did.

  • React and chat

    Six reactions float over the song on every screen. One-line comments slide by.

  • Sing along

    Lyrics come from LRCLIB and follow the song line by line when they’re timed.

  • Keep what you hear

    Tap the heart to save a song. The list stays on your phone for the next jam.

  • Pick a face

    Each guest picks one of twelve faces. Two people can’t have the same one.

  • Light or dark

    Dark for a dim room, light for a bright one. It follows the phone’s setting.

A guest’s phone: Senja di Kemang is playing, Bima’s own song is second in Up next, and a comment floats over the artwork.
The queue. Your own songs say Yours.
The join screen: You’re invited to Rina’s rooftop, twelve faces with three already taken, a name field and Join the jam.
Joining: a name and a face.
Search on a phone: the Songs chip picked, six results, one already marked Queued.
Search, with Add on every row.
The lyrics sheet on a phone, with the line being sung highlighted.
Lyrics that follow the song.

Put it on the TV

Open the room view on a TV or a second screen. It shows the song, who added it, the next three songs, reactions as they happen, and the QR code to join. When a song has lyrics, they show there too, line by line when they’re timed. It needs no login.

The room view on a TV: Senja di Kemang with its artwork, who added it, the next three songs, reactions floating up, a comment, and the QR code to join.
The room view, queue side.
The room view showing lyrics, the line being sung large.
The same screen, karaoke side.

The night, in one screen

The recap shows how long the music played, how many songs and reactions there were, the most loved song and the top DJ. Everything that played opens as a YouTube playlist, or copies as a list.

The recap on a phone: minutes of music, songs played and reactions, the most loved song, the top DJ, and the list of everything that played.

For the host

The host page runs on the laptop, behind a secret link.

  • Play, pause, skip, volume

    The host’s skip happens right away.

  • Remove any song or guest

    Or block their network from joining again.

  • House rules

    Songs per guest per minute (3 to start), votes to skip, and ask to join: new guests wait until you let them in.

  • The QR code and invite link

    Ready to show, or to send.

  • Keyboard

    Hold Option to see each button’s letter. ? lists them all.

The host page on a laptop: the QR code for jam.example.com, who is in the jam, the queue, and 2 want it louder next to the volume.
The host page.

A jar in the menu bar

On a Mac, Nimbrung lives in the menu bar. Start the jam opens YouTube Music, the tunnel and Nimbrung, ticks off each step, and opens the host page once guests can reach it. From the same panel you can copy the invite link, open the room view (⌥R), or stop the jam. It asks first if anyone is still in.

Set up in one window

The first time, a setup window walks you through it. Every button runs a real command, and the window shows which one.

  1. YouTube Music: installs it with Homebrew and asks you to sign in.
  2. Player control: turns on the app’s API Server, then you click Allow once.
  3. Sharing: Wi-Fi only, a free ngrok link, or your own domain on Cloudflare.
  4. Your jam: room name and join code.
  5. Test run: starts a real jam and shows its QR code.
The setup window on How guests reach you: Wi-Fi, ngrok and Domain, with Domain picked and jam.example.com typed in.
The setup window, Sharing step.

What you need

  • A Mac with macOS 14 or later, Apple Silicon or Intel, for the menu-bar app. The server alone also runs on Windows and Linux, started from a terminal.
  • The YouTube Music desktop app (pear‑desktop), signed in. It’s an open-source app by other developers.
  • Nothing to build. The Mac app comes as one file with the server inside. Ask Adrian for it. It isn’t notarised by Apple, so the first time you open it you allow it once in System Settings.
  • Homebrew. The setup window uses it to install YouTube Music and the sharing tool.
  • For friends outside your Wi-Fi (optional): a free ngrok account, or a domain on Cloudflare.

It stays on your laptop

  • No accounts, no analytics. Guests give a nickname and pick a face.
  • One cookie. It keeps a guest in the jam for 12 hours.
  • What the laptop saves. The jam is saved to a file so a restart doesn’t lose it: guest names and faces, their sessions and IP addresses, who added which song, who was removed or blocked, and the last 500 songs with how many reactions each got. Chat, votes and volume asks aren’t saved. Start with -state-file "" and the jam isn’t saved at all.
  • What stays on the guest’s phone. Saved songs and recent searches live in that phone’s browser.
  • What leaves the laptop. Search and the queue go through the YouTube Music app. Playlists, and the songs autoplay will pick, are read from YouTube without signing in. Lyrics come from LRCLIB (turn that off with -lyrics ""). Artwork loads from YouTube’s image servers, and guests’ phones load the Inter font from Google Fonts. With a tunnel, ngrok or Cloudflare carries the traffic.
  • This website sets no cookies and loads nothing from other sites.

Host the next one.

The code isn’t public yet. Want to run one at your place? Write to Adrian.

Email Adrian