MyGo 云音乐
Go와 MyGo로 만든 서드파티 네이버 클라우드 뮤직 데스크톱 클라이언트
뇌용 에이전트 라디오, 스스로 말하고 음악 재생·설정 복구·답변 전달, 오픈소스 MIT
A companion radio with an agent for a brain. It talks on its own, plays music, repairs its own setup by talking, and hands your replies to an agent. Open-source, MIT-licensed.
미디어TypeScript · MakefileGitHub @wine-fall온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기An always-on AI radio host for your terminal. It picks its own topics, talks, plays music, and keeps you company; type back and it answers in a voice that sounds human. Claude for a brain, fish-speech for a voice. MIT. TypeScript.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A companion radio — "a whole radio station, for an audience of one," with an agent for a brain.
Turn the sound on — the voice is the point. Two and a half minutes of the radio actually running.README 전문 보기 ↗npm install -g murmur-radio && murmur
A companion radio — "a whole radio station, for an audience of one," with an agent for a brain.
https://github.com/user-attachments/assets/59a300a8-8d61-443f-b592-8677e12e2be4
murmur is always on the air. It picks a topic and talks, plays a song, comes back and keeps going — whether or not you say anything. Type back and it answers out loud, chats for a bit, then eases back into the program.
~/.murmur/. Change the music rules mid-song and the next pick follows them.You need:
npm install -g murmur-radio
murmur
The first run is a short conversation. It asks a few questions to shape your host, then offers to set up whatever is missing — the voice key, ffmpeg + yt-dlp for music, bun for the full-screen UI, and, if your Node comes from nvm, fnm, asdf or mise, a small ~/.local/bin/murmur shim so the command doesn't vanish when a project switches Node. Say no and it plays anyway, just with less: talk-only without the music tools, lines on screen instead of spoken without a voice. murmur --setup reopens that conversation any time.
/ lists what it takes: settings, the setup guide, a bug report, a wish, /update (installs a newer murmur from npm) and /quit. The plain front-end takes the same commands typed in full; Ctrl-C says goodbye too.~/.murmur/music-policy.md — more Cantonese, no covers, a decade to live in — and they are added to murmur's built-in song-picking rules before every pick, winning wherever the two disagree. Empty the file to go back to the built-in rules alone./bug turns what just happened into a filled-in GitHub report with the log attached. A run that dies without saying goodnight is noticed on the next start and offered up the same way. Logs live in ~/.murmur/log/, one file per day, two weeks kept.--plain (skip the full-screen UI), --no-music, --persona PATH, --version. Pacing, cadence and the rest are the option table at the top of src/config.ts.A Node.js (TypeScript) engine runs the program and mixes the audio; a front-end draws the screen and reads your keyboard. While one segment plays, the next is already being prepared, so there is no dead air. A song ducks under the host's voice instead of stopping.
murmur ships no model. Three things come off the network: the brain is your Claude session (via @anthropic-ai/claude-agent-sdk), the voice is fish-speech over fish.audio's hosted API, and the music streams in through yt-dlp. Everything murmur owns — the program logic, memory, persona and audio mixing — runs on your machine.
The components and the reasons behind them: docs/architecture.md. The full design: specs/DESIGN.md.
Every code spec is built. What remains is acceptance by ear — pacing over a real day, how the steering feels — plus a handful of engineering debts. Current focus: specs/STATUS.md; what comes next: ROADMAP.md; engineering notes with the numbers measured along the way: docs/blog/.
Running from a checkout needs Node 24+ (it runs the TypeScript directly) and pnpm (corepack enable pnpm). One command sets up and runs the app; a second terminal tails a live debug log:
make dev # sync deps, report what is missing, launch the app either way
make logs # in another terminal: tail diagnostics + memory while it runs
make dev runs the real brain + music with the hosted voice (VOICE=hosted,
endpoint loaded from the gitignored .env — make dev-fishaudio selects the
fish.audio config); pass VOICE=stub for a silent voice, or STUB=1 make dev
for a fully offline session (canned brain, no music — needs no
network/binaries). The program timeline mirrors to .dev/dev.log; make logs
(scripts/devwatch.ts) tails that and folds in a periodic memory-tree line.
make help lists every target.
Under the hood:
pnpm install
node src/main.ts # run from source
node src/main.ts --brain stub --voice stub --no-music --no-bed # fully offline
pnpm test # fast unit layer (vitest; fakes, no network)
pnpm run typecheck # tsc over src/, test/ + the tooling scripts
pnpm run lint # oxlint
brew install ffmpeg yt-dlp # binaries real runs need (music)
Testing is layered (see DESIGN.md §11): unit tests are test-first against fakes; real-boundary checks run on demand as throwaway scratch/ smokes; sensory "sounds human / feels like radio" checks are human acceptance. Every seam ships a fake, so the core loop is testable without real audio, LLM, or network.
Conventions: specs are written in English and optimized for a coding agent to consume. No CJK anywhere in source (comments, literals, docstrings) — the radio speaks whatever language the listener settled on at onboarding (the machine's locale by default, English as the floor), produced by the model from the persona; enforced by scripts/check-source-language.ts via pre-commit.
The voice is fish-speech by @fishaudio — the reason murmur sounds like a person on the radio instead of a screen reader. murmur talks to it through fish.audio's hosted API; the model and the work behind it are theirs.
murmur's own code is MIT — see LICENSE.
Third-party services. murmur ships no model weights; it calls services that carry their own terms, and complying with them is yours:
yt-dlp on your machine, against whatever source you point it at.And these, only on the paths that need them:
bun install for the TUI; without it murmur falls back to the plain front-end.raw.githubusercontent.com — downloading a built-in voice preset's reference clip (cached and hash-pinned after the first fetch).registry.npmjs.org — the version check behind /update.