Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YouTube Music

Innertune Desktop

a play on "InnerTube", the name of YouTube's internal API this thing talks to

A small, self-hosted YouTube Music client that runs as a desktop app (Electron). It talks to YouTube's real internal API (youtubei/v1), the same one the web app uses, instead of going through a wrapper library. React front-end with a thin server that runs in the app's main process (and as Vite middleware in dev).

grafik

Disclaimer (read this first)

Warning

This project sits in a grey zone. It drives YouTube Music's private API using a logged-in session from your own account. That goes against YouTube's terms of service even though nothing here is cracked or pirated.

A few things to be clear about:

  • You need YouTube Premium. This is just a different front-end for an account you already pay for. Nothing else.
  • It does not evade, unlock, or bypass any Premium feature. No ad removal for free accounts, no paywall circumvention, no DRM breaking. If your account can't do something in the official app, it can't do it here either.
  • Early alpha, not production ready. Things break, the session capture is fiddly, and YouTube changes its API shapes without warning. Run it locally, for yourself, and don't expect it to be stable.

How it works

The Electron main process (frontend/electron/) starts a tiny localhost HTTP server (frontend/server/) that serves the built React SPA and routes /api/* to the same handler the dev server uses, then loads it in a window — so the UI and API stay same-origin, exactly as in a browser, just without one. To sign in, the server launches a controlled Chrome instance to capture a logged-in session, then makes authenticated calls to youtubei/v1 and parses the raw renderer JSON directly. No ytmusicapi, youtubei.js or yt-dlp for metadata.

Audio is resolved through the ANDROID_VR player client. Direct stream URLs work without cookies, but high-bitrate Premium audio is still gated behind the cipher and isn't fully solved yet.

Running it

Grab an installer from the Releases page (Windows .exe installer or Linux .AppImage), or run from source. You need a Chrome install for the login capture; the captured session lives in your user-data dir (%APPDATA%/Innertune/data on Windows) and stays out of git.

From source you need Node:

cd frontend
npm install
cd ..
./start.ps1

start.ps1 starts the Vite dev server and opens the app in an Electron window — no browser involved. To build installers yourself: cd frontend && npm run build:electron (output lands in frontend/release/).

What works so far

  • Search, home feed, artist and album pages
  • Playlists: view, create, delete, rename, add/remove tracks
  • Library and listening history
  • Up-next / radio queues, related and similar tracks
  • Lyrics, like/dislike, channel subscribe
  • Audio playback (bitrate limited, see above)

Status

This is a personal reverse-engineering project and a work in progress. Expect rough edges and breakage when YouTube changes things on their end.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages