Minimalist, Unlimited Music Streaming.
Find a file
Peritia 2515242fd7 rephrased the sentence
As to the request from Code Rabbit i rephrased the sentence
2026-04-24 11:58:30 +03:00
.devcontainer fix devcontainer package installs 2026-04-02 09:58:49 +00:00
.github le "debloat root" thingy 2026-04-06 17:35:43 +03:00
.vscode Adjust linting rules and add vs code extension recommendations 2026-04-04 01:37:47 +03:00
.wrangler/state/v3/cache/miniflare-CacheObject add files 2026-04-18 13:00:33 +01:00
android Merge branch 'main' into feature/android-background-audio 2026-04-13 15:43:24 +03:00
assets docs(extension): add clear guide of installing the extension 2026-04-18 19:44:29 +02:00
docker le "debloat root" thingy 2026-04-06 17:35:43 +03:00
extension rephrased the sentence 2026-04-24 11:58:30 +03:00
functions Replace old tidal-uptime workers.dev URLs with geeked.wtf 2026-04-23 20:28:27 +01:00
images re-add auth sources 2026-03-28 15:18:54 +02:00
ios Merge branch 'main' into feature/android-background-audio 2026-04-13 15:43:24 +03:00
js Merge branch 'main' of github.com:monochrome-music/monochrome 2026-04-24 01:21:21 +03:00
public add fallback fonts for international languages 2026-04-13 20:58:35 +01:00
.dockerignore first modular docker files system 2026-02-06 21:35:59 +01:00
.gitignore chore(gitignore): ignore autogenerated / devenv paths 2026-04-10 17:23:49 +02:00
.gitmodules feat(metadata): replace taglib-wasm with @dantheman827/taglib-ts 2026-03-19 15:14:52 -05:00
.htmlhintrc Add linting infrastructure (ESLint, Stylelint, HTMLHint, Prettier) and GitHub Action with auto-fix 2026-01-11 00:25:05 +01:00
.npmrc chore: add .npmrc to enable legacy peer dependencies 2026-04-04 20:42:48 +00:00
.prettierrc Add linting infrastructure (ESLint, Stylelint, HTMLHint, Prettier) and GitHub Action with auto-fix 2026-01-11 00:25:05 +01:00
.stylelintrc.json build: fix CI linting errors and update lockfile 2026-02-10 11:19:20 +01:00
bun.lock bring back animated album covers + improvements 2026-04-13 22:01:54 +03:00
bun.lockb bump am-lyrics 2026-04-22 21:14:31 +01:00
capacitor.config.ts app icons 2026-03-22 21:37:54 +02:00
CONTRIBUTING.md this section doesnt exist anymore 2026-03-12 09:44:46 +03:00
DOCKER.md editor pick changes 2026-04-02 09:09:13 +00:00
eslint.config.js AI bullshit bro 2026-04-05 15:53:36 +03:00
index.html nvm 2026-04-24 01:21:18 +03:00
INSTANCES.md Replace old tidal-uptime workers.dev URLs with geeked.wtf 2026-04-23 20:28:27 +01:00
lhci.yml fix binislop 2026-04-05 18:41:25 +00:00
license why did we have a dash here idk why i added that 2026-03-12 08:04:16 +03:00
nginx.conf nginx: add more extensions to the static asset pattern 2026-03-14 15:17:25 -03:00
package.json bump am-lyrics 2026-04-22 21:14:31 +01:00
README.md style: auto-fix linting issues 2026-04-15 14:21:20 +00:00
stream-stub.js refactor(hls/dash): externalize hls.js and dashjs to reduce initial bundle size 2026-03-19 15:34:51 -05:00
styles.css Revert 2026-04-18 10:04:31 +01:00
THEME_GUIDE.md style: auto-fix linting issues 2026-02-23 22:58:08 +00:00
tsconfig-eslint.json Adjust linting rules and add vs code extension recommendations 2026-04-04 01:37:47 +03:00
tsconfig.json just fix that semicolon 2026-04-22 21:41:53 +01:00
vite-plugin-auth-gate.js fix(linting): fix js linting issues 2026-04-04 01:37:47 +03:00
vite-plugin-blob.ts fix(linting): fix js linting issues 2026-04-04 01:37:47 +03:00
vite-plugin-svg-use.ts fix(linting): fix js linting issues 2026-04-04 01:37:47 +03:00
vite-plugin-upload.js style: auto-fix linting issues 2026-03-08 19:04:57 +00:00
vite.config.ts fix proxy 2026-04-18 13:48:38 +01:00

Monochrome Logo

Monochrome

An open-source, privacy-respecting, ad-free music app.

Website - Donate - Features - Usage - Self-Hosting - Contributing

GitHub stars GitHub forks GitHub issues


What is Monochrome?

Monochrome is an open-source, privacy-respecting, ad-free TIDAL web UI, built on top of Hi-Fi. It provides a beautiful, minimalist interface for streaming high-quality music without the clutter of traditional streaming platforms.

Monochrome UI: NASIR by Nas

Monochrome UI: Jump Out by Osamason

Features

Audio Quality

  • High-quality High-Res/lossless audio streaming
  • Support for local music files
  • API caching for improved performance

Interface

  • Dark, minimalist interface optimized for focus
  • Animated Album Covers For Supported Albums
  • High-quality Music Videos
  • Customizable themes & Community Theme Store
  • Accurate and unique audio visualizer
  • Offline-capable Progressive Web App (PWA)
  • Media Session API integration for system controls

Library & Organization

  • Recently Played tracking for easy history access
  • Comprehensive Personal Library for favorites
  • Queue management with shuffle and repeat modes
  • Native Podcast support & organization
  • Playlist import from other platforms
  • Public playlists for social sharing
  • Smart recommendations for new songs, albums & artists
  • Infinite Recommendation Radio
  • Explore Page (Hot & New) for discovering newly added music and whats trending overall or within each genre

Lyrics & Metadata

  • Lyrics support with karaoke mode
  • Genius integration for lyrics
  • Track downloads with automatic metadata embedding

Integrations

  • Account system for cross-device syncing
  • Customizable & Public Profiles
  • Real-time Listening Parties for synced playback with friends
  • Last.fm and ListenBrainz integration for scrobbling
  • OAuth support (Google, Discord, GitHub, Spotify)
  • Unreleased music from ArtistGrid
  • Dynamic Discord Embeds
  • Artist Biography + Social Links for learning more about your favorite artists
  • Multiple API instance support with failover

Power User Features

  • Keyboard shortcuts & Command Palette (CTRL+K) for power users

Quick Start

Live Instance

Our Recommended way to use monochrome is through our official instance:

monochrome.tf / monochrome.samidy.com

For alternative instances, check INSTANCES.md.


Self-Hosting

NOTE: Accounts will not work on self-hosted instances. Our Appwrite authentication system only allows authorized domains.

We had to heavily customize the authentication system and write several custom scripts to support features like SMTP and Google OAuth (which are currently bugged in Appwrite). Because of this, we can no longer provide a self-hostable accounts system.

git clone https://github.com/monochrome-music/monochrome.git
cd monochrome
docker compose up -d

Visit http://localhost:3000

Tailscale Access

Visit http://<tailscale_server_hostname_or_ip>:3000

By default, the app uses Vite preview, which restricts access to localhost.
To allow access over Tailscale:

  1. Open vite.config.js

  2. Uncomment and configure the preview section:

preview: {
    host: true,
    allowedHosts: ['<your_tailscale_hostname>'], // e.g. pi5.tailf5f622.ts.net
},
  1. Restart with a fresh container (if already running):
docker compose down
docker compose up -d

For development mode and advanced setups, see DOCKER.md.

Option 2: Manual Installation

Prerequisites

  • Bun (Preferred) or Node.js (Version 20+ or 22+ recommended)

Local Development

  1. Clone the repository:

    git clone https://github.com/monochrome-music/monochrome.git
    cd monochrome
    
  2. Install dependencies:

    bun install
    # or
    npm install # NPM is included with Node.js
    
  3. Start the development server:

    bun run dev
    # or
    npm run dev
    
  4. Open your browser: Navigate to http://localhost:5173/

Building for Production

bun run build
# or
npm run build

Usage

Basic Usage

  1. Visit the Website or your local development server
  2. Search for your favorite artists, albums, or tracks
  3. Click play to start streaming
  4. Use the media controls to manage playback, queue, and volume

Keyboard Shortcuts

Shortcut Action
Space Play / Pause
Seek forward 10s
Seek backward 10s
Shift + Next track
Shift + Previous track
Volume up
Volume down
M Mute / Unmute
S Toggle shuffle
R Toggle repeat
Q Open queue
L Toggle lyrics
/ Focus search
Esc Close modals
[ Previous visualizer preset
] Next visualizer preset
\ Toggle visualizer auto-cycle
Ctrl + K Command Palette

Account Features

To sync your library, history, and playlists across devices:

  1. Click the "Accounts" Section
  2. Sign in with Google or Email
  3. Your data will automatically sync across all devices

Contributing

We welcome contributions from the community! Please see our Contributing Guide for:

  • Setting up your development environment
  • Code style and linting
  • Project structure
  • Before You Contribute
  • Commit message conventions
  • Deployment information

As seen on FMHY

Developed by Humans

Made with ❤️ by the Monochrome team

Star History

Star History Chart