{ "version": "1.0.18", "categories": [{ "display_name": "System", "extensions": [{ "author": "The Appgineer", "display_name": "Extension Snapshots", "description": "Snapshots of npm-based Roon Extensions", "image": { "repo": "theappgineer/roon-extension-snapshots", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "config": { "Volumes": { "/home/node/.config": {} }, "HostConfig": { "Binds": [ "snapshots-config:/home/node/.config" ] } } } }] }, { "display_name": "Playback", "extensions": [{ "author": "The Appgineer", "display_name": "Alarm Clock", "description": "Roon Extension to start or stop playback on a specific zone at a specific time", "image": { "repo": "theappgineer/roon-extension-alarm-clock", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/usr/src/app/config.json" ], "options": { "env": { "TZ": ":Time Zone" } } } }, { "author": "The Appgineer", "display_name": "Queue Bot", "description": "Roon Extension that lets the queue take control", "image": { "repo": "theappgineer/roon-extension-queue-bot", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/node/config.json" ] } }, { "author": "The Appgineer", "display_name": "Random Radio", "description": "Roon Extension to play random tracks or albums", "image": { "repo": "theappgineer/roon-extension-random-radio", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/node/config.json" ] } }, { "author": "Boris Schaedler", "display_name": "it'roXs!", "description": "Roon Extension for Android App it'roXs!", "image": { "repo": "bsc101/roon-extension-itroxs", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/node/config.json" ] } }, { "author": "jjdenhertog", "display_name": "AI Guest DJ", "description": "Roon extension for AI Guest DJ, a web service that allows you to use AI to create playlists", "image": { "repo": "aiguestdj/roon-extension-aiguestdj", "tags": { "amd64": "latest", "arm64": "latest" }, "binds": [ "/app/config/roon.json", "/app/config/openai.json" ], "options": { "env": { "PORT": "9010:Port", "OPENAI_KEY": "YOUR_OPEN_AI_KEY:OpenAI Key" } } } }] }, { "display_name": "Device Control", "extensions": [{ "author": "Roon Labs, LLC", "packager": "The Appgineer", "display_name": "Meridian Volume/Source Control", "description": "Roon extension for source and volume control of Meridian systems\nthat are not driven by Sooloos endpoints", "image": { "repo": "theappgineer/roon-extension-meridian", "tags": { "amd64": "amd64", "arm": "arm32v6" }, "binds": [ "/usr/src/app/config.json" ], "options": { "devices": [ "/dev/ttyUSB0:Serial Device Path" ] } } }, { "author": "Roon Labs, LLC", "packager": "The Appgineer", "display_name": "Devialet Phantom Volume Control", "description": "Roon Extension to let Roon control the Devialet Phantom Premier's\nvolume via UPnP", "image": { "repo": "theappgineer/roon-extension-devialet-phantom-volume", "tags": { "amd64": "amd64", "arm": "arm32v6" }, "binds": [ "/usr/src/app/config.json" ] } }, { "author": "The Appgineer", "display_name": "TAG McLaren Audio Source Control", "description": "Roon extension for source control of TAG McLaren Audio devices", "image": { "repo": "theappgineer/roon-extension-tag-mclaren", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/usr/src/app/config.json" ], "options": { "devices": [ "/dev/ttyUSB0:Serial Device Path" ] } } }, { "author": "Guy Maurier", "display_name": "Moon Volume/Source/Power Control", "description": "Roon Extension to provide Roon control for Simaudio Moon devices via RS-232", "image": { "repo": "guymaurier/roon-extension-simaudio-moon", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/node/config.json" ], "options": { "devices": [ "/dev/ttyUSB0:Serial Device Path" ] } } }, { "author": "Boris Prüßmann, Jason Charrier and others", "display_name": "Denon/Marantz AVR", "description": "Roon Volume Control Extension for Denon/Marantz AVR receivers", "image": { "repo": "docbobo/roon-extension-denon", "tags": { "amd64": "latest", "arm64": "latest" }, "binds": [ "/usr/src/app/config.json" ] } }, { "author": "Boris Prüßmann", "display_name": "Arcam AVR390/550/850/AV860/SR250", "description": "Roon Volume Control Extension for Arcam AVR390/550/850/AV860/SR250 receivers", "image": { "repo": "docbobo/roon-extension-arcam", "tags": { "amd64": "latest", "arm64": "latest" }, "binds": [ "/usr/src/app/config.json" ] } }, { "author": "Linvale", "display_name": "Rheos", "description": "Connect and Control Denon/Marantz Heos players from Roon", "image": { "repo": "rheos/roon-extension-rheos", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/node/config.json" ] } }] }, { "display_name": "Remote Control", "extensions": [{ "author": "Khazul", "display_name": "Deep Harmony", "description": "A Roon Extension for Logitech Harmony", "image": { "repo": "khazul/roon-extension-deep-harmony", "tags": { "amd64": "latest", "arm": "latest" }, "config": { "Volumes": { "/usr/src/app": {} }, "HostConfig": { "Binds": [ "deep-harmony-app:/usr/src/app" ] } } } }, { "author": "Roon Labs, LLC", "packager": "The Appgineer", "display_name": "Griffin Powermate", "description": "Griffin Powermate USB controller", "image": { "repo": "theappgineer/roon-extension-powermate", "tags": { "amd64": "amd64", "arm": "arm32v6" }, "binds": [ "/usr/src/app/config.json" ], "options": { "devices": [ "/dev/bus/usb/:USB Device Path" ] } } }, { "author": "Roon Labs, LLC", "packager": "The Appgineer", "display_name": "iPort Surface Mount with Buttons", "description": "Roon Extension to let the iPort Surface Mount with Buttons control Roon", "image": { "repo": "theappgineer/roon-extension-iport-sm-buttons", "tags": { "amd64": "amd64", "arm": "arm32v6" }, "binds": [ "/usr/src/app/config.json" ] } }, { "author": "Klaus Engel", "display_name": "SpaceNavigator Volume Control", "description": "A volume control Roon Extension for the SpaceNavigator space mouse", "image": { "repo": "klausengel/roon-spacenav", "tags": { "arm": "arm" }, "binds": [ "/home/node/config.json" ], "options": { "devices": [ "/dev/bus/usb/:USB Device Path" ] } } }] }, { "display_name": "Web / Connectivity", "extensions": [{ "author": "Nihilux-Org", "display_name": "Roon Web Stack", "description": "An ensemble of tools to drive Roon from a web browser", "image": { "repo": "nihiluxorg/roon-web-stack", "tags": { "amd64": "latest", "arm64": "latest" }, "binds": [ "/usr/src/app/config/config.json" ], "options": { "env": { "PORT": "3000:Port", "LOG_LEVEL": "info:Log Level" } } } }] }, { "display_name": "Entrypoints", "extensions": [{ "author": "The Appgineer", "display_name": "Entrypoint Gateway", "description": "The gateway between all your Entrypoints and your Roon system", "image": { "repo": "theappgineer/entrypoint-gateway", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" } } }, { "author": "The Appgineer", "display_name": "Audio Entrypoint", "description": "An Entrypoint that lets Audio enter into your Roon system", "image": { "repo": "theappgineer/entrypoint-audio", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/worker/config.json" ], "config": { "HostConfig": { "Devices": [{ "PathOnHost": "/dev/snd", "PathInContainer": "/dev/snd", "CgroupPermissions": "rwm" }], "Privileged": true } } } }, { "author": "The Appgineer", "display_name": "BT Entrypoint", "description": "An Entrypoint that lets Bluetooth Audio enter into your Roon system", "image": { "repo": "theappgineer/entrypoint-bluetooth", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/worker/config.json" ], "config": { "HostConfig": { "Binds": [ "/var/run/dbus:/var/run/dbus", "/sys/class/bluetooth:/sys/class/bluetooth", "/var/lib/bluetooth:/var/lib/bluetooth" ], "Privileged": true } } } }, { "author": "The Appgineer", "display_name": "CD Entrypoint", "description": "An Entrypoint that lets CD Audio enter into your Roon system", "image": { "repo": "theappgineer/entrypoint-cd-audio", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/worker/config.json" ], "options": { "devices": [ "/dev/cdrom:Optical Drive Path" ], "env": { "CDROM_GROUP": "24:cdrom Group ID" } } } }, { "author": "The Appgineer", "display_name": "Librespot Entrypoint", "description": "An Entrypoint that lets Spotify enter into your Roon system", "image": { "repo": "theappgineer/entrypoint-librespot", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/worker/config.json" ] } }] }, { "display_name": "Social", "extensions": [{ "author": "The Appgineer", "display_name": "Sharoon", "description": "Roon Extension that socializes \"now playing\"", "image": { "repo": "theappgineer/roon-extension-sharoon", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/node/config.json" ], "options": { "env": { "PORT": "5501:Local Web Server Port" } } } }] }, { "display_name": "Automation", "extensions": [{ "author": "Floris Jan Galesloot", "display_name": "MQTT Extension", "description": "Integrate Roon into your home automation system using the MQTT protocol", "image": { "repo": "fjgalesloot/roon-extension-mqtt", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/usr/src/app/config/config.json" ], "options": { "binds": [ "/usr/src/app/config/:Config folder" ] } } }] }, { "display_name": "Tools", "extensions": [{ "author": "The Appgineer", "display_name": "Art Scraper", "description": "Roon Extension to scrape cover art images from your library", "image": { "repo": "theappgineer/roon-extension-art-scraper", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/node/config.json" ], "options": { "binds": [ "/home/node/art:Local Art Share" ] } } }, { "author": "The Appgineer", "display_name": "CD Ripper", "description": "Extension that adds a CD ripper to your Roon system", "image": { "repo": "theappgineer/roon-extension-cd-ripper", "tags": { "amd64": "latest", "arm": "latest", "arm64": "latest" }, "binds": [ "/home/worker/config.json", "/root/inserted" ], "options": { "devices": [ "/dev/cdrom:Optical Drive Path" ], "binds": [ "/root/music:Local Music Share (optional)" ] }, "config": { "Volumes": { "/root/.config/whipper": {}, "/output": {} }, "HostConfig": { "Binds": [ "whipper:/root/.config/whipper", "staging:/output" ] } } } }] }] }