gitwtfhub

wtf is duetto?

avisforevelyn/duetto — explained in plain English

Analysis updated 2026-05-18

47JavaScriptAudience · developerComplexity · 3/5LicenseSetup · moderate

TL;DR

A self-hosted listen-together music player for two people with an AI companion that hears the songs and remembers your conversations about them.

Mindmap

mindmap
  root((Duetto))
    What it does
      Syncs playback for two
      AI listens to songs
      Builds shared memory
    Tech stack
      React
      Express
      WebSocket
      SQLite
    Use cases
      Long distance listening
      Shared music memories
      Self hosted app
    Audience
      Developers
      Couples and friends

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Listen to the same song in sync with a partner or friend from different locations.

REASON 2

Ask an AI companion about a specific lyric line while a song plays.

REASON 3

Build up a shared memory of what songs mean to you and a listening partner over time.

REASON 4

Self-host a private two-person music room protected by a PIN.

What's in the stack?

JavaScriptReactExpressWebSocketSQLite

How it stacks up

avisforevelyn/duetto0xsufi/fable-jailbreakakitaonrails/frank_scanlation
Stars474747
LanguageJavaScriptJavaScriptJavaScript
Setup difficultymoderateeasymoderate
Complexity3/52/52/5
Audiencedeveloperdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Requires Node 24+ and your own AI provider API key to enable the listening companion.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

Wtf does this do

Duetto is a self-hosted music player built for two people to listen together, with an AI companion attached to the room. When one person opens the app and shares a room link with the other, play, pause, and seek actions stay in sync between both listeners in real time. Songs can be shared into the room as chat cards, and status updates announce who played, paused, or liked a track. What makes it different from a typical listen-together app is that the AI companion actually processes the audio of the song being played, using a multimodal model you connect yourself, rather than just reading song titles. It builds up a memory of what each song means to the two people over time, based on their conversation about it, and that memory gets included the next time they discuss the same song. Users can long-press a lyric line to quote it in chat or ask questions about that specific line, and the AI can also take actions in the room, such as playing, queueing, or pausing a song, through inline chat commands. The app also integrates with NetEase Cloud Music for search, playlists, and daily recommendations, supports adding your own songs by pasting a direct audio link, and can be installed as a progressive web app with lock-screen playback controls. On the technical side, the frontend is built in React without a build step, and the backend runs on Express with WebSocket for syncing, storing long-term data like song archives and chat memory in SQLite. Running it requires Node 24 or newer, installing dependencies, and starting the server, after which you configure your own AI provider's endpoint and API key inside the app. A PIN-based access gate protects the deployment once set up. This project is aimed at developers comfortable self-hosting a small app for themselves and one other person, such as a partner or close friend, rather than a public multi-user service.

Yoink these prompts

Prompt 1
Help me install and run Duetto locally with Node 24 and npm.
Prompt 2
Walk me through connecting my own AI provider's endpoint and API key in Duetto's model settings.
Prompt 3
Explain how Duetto's AI companion builds a memory of a song from our conversations.
Prompt 4
Show me how to set up Duetto behind a reverse proxy with HTTPS for internet-facing use.

Frequently asked questions

wtf is duetto?

A self-hosted listen-together music player for two people with an AI companion that hears the songs and remembers your conversations about them.

What language is duetto written in?

Mainly JavaScript. The stack also includes JavaScript, React, Express.

What license does duetto use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is duetto to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is duetto for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.