Roon Extension: Roon Web Controller v1.2.0

Roon Web Controller v1.2.0 is now available. This extension is a web based remote for Roon.

New Features:

  • Library Browser
  • Search (Library -> Search)
  • Added theme button to “Now Playing” screen
  • Split “Now Playing” and “Library” into a standalone pages to allow for custom layouts (example side-by-side layout provided, http://localhost:8080/side-by-side.html)

See the instructions on the Github link below.

Upgrade Notes:
Due to the use of new Roon APIs, you must remove the old extension authorization and create a new one!

On the Node server:

  1. Stop the extension

In an official Roon Client:

  1. Go to Settings -> Extensions.
  2. Click the “View” button.
  3. Remove all previous instances of “Web Controller”.

On the Node server:

  1. Run git pull
  2. Run npm install
  3. Start the extension node .

In an official Roon Client:

  1. Go to Settings -> Extensions.
  2. Click the “Enable” button beside “Web Controller”.

Screen Shots

Dark Theme


Cover Theme


Color Theme


Library Browser - Home

Library Browser - Artist

Library Browser - Album


This looks fantastic! This is what I’ve been waiting for for a long time.

One question: can multiple devices act as web controllers? I have a few older iPads dotted around the house…

One suggestion: I hope this won’t get taken the wrong way, as I’m amazed at the work that must have gone into this, but I winder whether it would make sense for Roon to have style guides for the guis - including providing an iconography toolkit. Something tells me this (and some other extensions I’ve seen appear) would be even better if they shared (as much as possible/practical) Roon’s design.

I long for the day Roon provides a simple ‘App Store’ type portal for browsing and installing these community extensions - they shouldn’t be restricted to people willing and able to get into git - and things will really take off once its easier to access them.

This may well be the extension I make the exception for, and get dirty with git.

1 Like

Nice update @Mike_Plugge. The addition of the library browser is very useful when working on a Linux PC.


Have you read about my Roon Extension Manager? Its goal is to provide an easy way for installing/updating community extensions (till Roon takes over). You have to get dirty once to get it up and running but after that you can stay within the Roon UI to manage your extensions (provided they are in the repository). I hope you like it.

Yes with a caveat. The now playing screen works very well with multiple controllers. The library works, but each time you switch clients you need to click the refresh button at the top. See this link for an explanation why: Roon Extension: Roon Web Controller v1.1.1 - #34 by Mike_Plugge

I like this idea - depending on the licensing. All of my code is MIT license, so I use the Material Design icons which are also MIT license.

The App Store idea has been hinted at. There is another extension called Extension Manager that tries to provide that capability. EDIT: see @Jan_Koudijs post!

Thanks @Jan_Koudijs!

The Linux client aspect was the main driver for me, too.

@hifi_swlon - BTW - I generally have one copy of this extension running on node, then have multiple web browsers pointing to it. For IOS, the code is included to make it a full screen web app. Just save a bookmark to your home screen and it will open full screen without an address bar.

I have not tested having multiple instances of node running this extension, but it should work as long as they are on different hosts OR listen on different ports.

I was only thinking multiple web browsers on different iPads around the house… thanks, and for the other answers. And for the extension!

@Jan_Koudijs yeah I’d seen the extension manager. I’m of the opinion that if someone can install your manager, they can install an extension. That’s not to undermine it, I just think it will be limited in its impact on the wider non-technical audience, for which it has to be as simple and intuitive as clicking in the Roon UI. Until then all this great work will only reach a handful of people which is a great shame. All IMO. (Apologies btw for taking this off-track - back to this amazing extension!)

This applies to the work of all extension developers, the current user base is indeed small. If I will lose interest in extension development it will probably be for this reason.

1 Like

For me, this started as a project to fit a need that I had. The fact that other people use it and like it was just icing on the cake.

The only remaining thing missing that I would like is play queue management, but the current Roon API does not support that…

This looks very interesting, but I’m totally lost on how on earth I install it on a Windows PC. I’ve installed Node.js and the Git Desktop manager, but issuing npm install at the Node.js Command prompt just gives reams of errors…

I’m sure it’s all very simple to those who are familiar with this stuff, but it’s all Greek to me…

Hi @Geoff_Coupe,

Others reported success on Windows by issuing the npm install command from the Git CMD prompt.

I haven’t used Windows for years, so I am not sure how much I can help.

But it looks like the “git” command is not in the executable path.

Thanks guys, turned out I hadn’t installed the correct Git package. Now seeing the web controller correctly.


Need help please.
I’ve done everything right (I believe) but the extension is not loaded/showing on any of my Roon client. The service is not loaded on my core (at least I can’t see it in my processes).

Core is Ubuntu server.


What version of Node JS are you running? You need version 6 or higher.

That typed array error makes it look like you are running Node 5 or lower

Hi @Mike_Plugge,

I ran into an issue with your web controller while transferring zones.

Steps to reproduce

  • Open the playing zone in the web controller (I was playing internet radio)
  • Transfer the playing zone to another zone using a Roon remote
  • The web controller reports that there is nothing playing on the zone
  • If you now click on the zone name, the zone is no longer listed and can’t be controlled anymore.

The only way I found to recover from this is to restart the extension.

Please let me know if you can reproduce this.

Thanks but how do I make sure I have Node version 6+ running. I simply ran sudo apt install node.js believing the latest version will be pulled and installed.
Solved the node.js problem, forgot google is a friend, version 6.1 installed.
Now another problem

Why is it pinging (successfully) non-stop!!.
And I still can’t access the web-controller and stopping the pings.


@kayo the ping is normal. Its best to ether run it as a service or background… After you have it successfully running which it seems you do, Go to Roon Settings -> Extensions and enable the new extension :slight_smile:

Thanks friend.
I assume you meant background.