터미널 안에서 음악을 재생하고 가사와 비주얼라이저까지 띄우는 도구가 새삼 주목받고 있다. 러스트로 작성되고 터미널 UI 라이브러리 Ratatui를 쓰는 Spotatui가 그것이다. 이 프로젝트는 한때 널리 쓰이던 spotify-tui의 커뮤니티 포크로 출발했지만, 지금은 여러 방향으로 갈라져 나와 사실상 별개의 소프트웨어가 됐다. 이름만 보면 스포티파이 전용 클라이언트처럼 보이지만, 핵심은 오히려 그 반대다. 스포티파이는 선택 사항이고, 계정 없이도 쓸 수 있는 음악 소스가 함께 들어 있다.
스포티파이는 거들 뿐
Spotatui를 처음 실행하면 어떤 소스를 쓸지부터 묻는다. YouTube, Subsonic/Navidrome, 인터넷 라디오, 로컬 파일, Qobuz, 그리고 macOS에서는 Apple Music이 모두 스포티파이 계정 없이 동작한다. 스포티파이 프리미엄이 필요한 경우는 스포티파이 소스를 쓸 때뿐이며, 그마저도 나중에 d 키로 소스·기기 선택 창을 열어 언제든 추가할 수 있다. 무료 소스로 시작했다가 스포티파이를 붙일 때는 재시작 없이 브라우저 로그인만 거치면 되지만, librespot 기반의 네이티브 스트리밍만은 앱 시작과 함께 올라오기 때문에 재시작이 필요하다.
스포티파이 연동 방식도 눈여겨볼 만하다. 별도의 개발자 앱이나 클라이언트 ID를 등록할 필요 없이, 화면에 뜬 코드를 브라우저의 페어링 페이지에서 확인하는 것으로 로그인이 끝난다. 또한 spotifyd나 공식 앱을 띄우지 않고도 Spotatui 자체가 Spotify Connect 기기로 잡혀 음원을 직접 재생한다. 원제에 담긴 '웹 API 레이트 리밋 없이'라는 표현은 이렇게 웹 API를 경유하지 않는 네이티브 스트리밍 구조에서 나온 것으로 읽힌다.
소스마다 다른 재생 방식
스포티파이를 제외한 대부분의 소스는 Spotatui 자체 오디오 엔진을 통해 재생되므로, 볼륨 조절과 비주얼라이저가 스포티파이와 똑같이 작동한다. 로컬 파일은 폴더만 지정하면 되고, Subsonic은 비밀번호를 설정 파일에 평문으로 두지 말고 SPOTATUI_SUBSONIC_PASSWORD 환경 변수로 넘기는 편이 권장된다. YouTube는 yt-dlp 바이너리가 필요하되 구글 계정이나 API 키, 쿠키 없이 익명으로 검색·재생되며, 유튜브 쪽 변경으로 재생이 깨지면 Spotatui가 아니라 yt-dlp를 업데이트하면 된다. 인터넷 라디오는 radio-browser.info 디렉터리를 앱 안에서 검색해 바로 재생할 수 있다.
Qobuz는 구현이 특히 흥미롭다. 트랙을 받는 동안 바로 재생하는데, 암호화된 스트림을 복호화해 FLAC 임시 파일로 재구성하고 앞부분이 도착하는 대로 재생을 시작한다. 아직 받지 않은 구간으로 탐색하면 그 지점부터 다운로드가 이어진다. 다만 재생바에 표시되는 포맷은 Qobuz가 실제로 내려준 것이라, 설정한 품질보다 낮을 수 있다. 또 Spotatui는 Qobuz 웹 플레이어에서 세 개의 상수를 런타임에 읽어 오는데, Qobuz가 웹 플레이어를 바꿔 로그인이 막히면 사용자가 직접 환경 변수로 값을 지정해 릴리스를 기다리지 않고 복구할 수 있다.
macOS 전용인 Apple Music은 성격이 다르다. 오디오가 Spotatui를 거치지 않고 실제 Music 앱이 사용자의 라이브러리로 재생하며, Spotatui는 터미널에서 이를 원격 제어할 뿐이다. 그래서 큐, 셔플·반복 토글, 좋아요, 플레이리스트 편집 같은 기능은 쓸 수 없고 Music 앱에서 직접 바꿔야 한다. 처음 쓸 때 macOS가 터미널의 Music 제어를 허용할지 묻는 자동화 권한도 승인해야 한다.
코딩 에이전트가 DJ가 된다
Spotatui는 터미널 외에 같은 로그인·설정·기록을 공유하는 데스크톱 앱도 제공한다. 둘은 동시에 하나만 실행된다. 더 실무적으로 눈에 띄는 쪽은 AI DJ와 MCP 서버다. Spotatui는 플레이어와 로컬 청취 기록을 MCP 도구로 노출해 Claude Code, Codex, Gemini CLI 같은 클라이언트가 선곡을 맡을 수 있게 한다. 별도 API 키가 아니라 이미 구독 중인 에이전트를 그대로 쓰는 구조이며, TUI 안에서도 Ctrl-j로 DJ 화면을 열 수 있다. 모델에 전달되는 정보는 트랙·아티스트·앨범 이름과 로컬 기록 집계, 현재 재생 곡, 사용자가 입력한 대화뿐으로, 식별자나 타임스탬프, 계정 정보는 보내지 않는다고 설명한다.
정리하면 Spotatui는 특정 스트리밍 서비스에 묶이지 않고 여러 음원을 하나의 터미널 인터페이스에서 다루려는 사용자에게 매력적인 선택지다. 다만 실제 도입에는 챙길 점이 있다. 설치 배포본에 따라 포함된 소스가 다르고, cargo install로 받으면 추가 소스를 feature 플래그로 직접 켜야 한다. 데스크톱 앱 설치 파일은 아직 서명되지 않아 첫 실행 시 OS 경고가 뜨고, 리눅스에서는 glibc 2.39와 WebKitGTK 4.1 등 비교적 최신 환경을 요구한다. Qobuz나 YouTube처럼 외부 서비스의 비공개 동작에 기대는 기능은 그쪽이 바뀌면 깨질 수 있다는 구조적 한계도 감안하는 편이 좋다.