Oh my god — just listen. mygod has no UI; you talk to it through your assistant or your terminal. Misremember a song title? It still finds it across 4 online sources and your local library, and plays it. Multiple assistants, still just one player. Three minutes to install, all data stays on your machine. Download now.
No switching between apps, and no new API to learn just to play a song.
One search returns results from multiple online sources and your local library, each labeled with its source and playability — no more trying each platform one by one.
Exposes its capabilities as a standard MCP server (stdio). Assistants that support MCP — Trae, Codex, WorkBuddy and others — just need one path in their config.
Only one player instance runs on your machine. Multiple assistants and terminals connect at once and read/write the same queue, progress and volume without interrupting each other.
Register a folder and it indexes automatically, with incremental rescans. Local files are read directly — no copying, no transcoding, no uploading.
Four quality tiers — standard / high / higher / lossless — with automatic fallback. EQ presets, night mode, enhancement and loudness normalization are all saved with the session.
Restarts where you left off, with the same queue and position. Unplayable tracks are skipped, and a stream with no data for 15 seconds is marked failed — playback never freezes on loading.
What used to mean "search the web, then search the player, then retry with different keywords" now takes one sentence: your assistant searches, compares, builds the queue and plays — all in one go.
ALL YOU SAY
Play that song that goes 'the evening wind blows down the old alley' — I think it's called "When the Wind Rises", but I might have the title wrong.
WHAT THE ASSISTANT DOES
ALL YOU SAY
Find artists with a style close to these three, put together a playlist of about 20 tracks, and start playing.
WHAT THE ASSISTANT DOES
ALL YOU SAY
A few tracks on this album are missing. Find playable versions elsewhere and fill them in, keeping the original order.
WHAT THE ASSISTANT DOES
ALL YOU SAY
Play the demo on my computer first, then today's chart, and loop the list.
WHAT THE ASSISTANT DOES
ALL YOU SAY
This one isn't right. Swap in something similar — don't stop.
WHAT THE ASSISTANT DOES
ALL YOU SAY
Which track was I on? Resume from there.
WHAT THE ASSISTANT DOES
Pick your platform and the components you want, then generate a request. An email sends your selection to the author, who replies with the matching binaries or download instructions. macOS (Apple Silicon) is prebuilt; other platforms are built on request.
The email goes to aosfather@gmail.com with the subject and body filled in from your choices. You can also copy the address and send it manually. To build it yourself, see below.
The full capability list, behavior rules and error handling are all in the PRD. Hand it to your AI coding assistant, implement the numbered requirements one by one, and build both binaries on your own platform.
mygod needs no background service: all data (sessions, indexes, cache) stays on your own machine.
mygod-mcp — for MCP-capable AI assistants; mygod-cli — for the command line and scripts.
Target platform: macOS (Apple Silicon). The two files are independent — install whichever you use, or both.
# Put them in your personal bin directory (create it first if needed) mkdir -p ~/.local/bin mv mygod-mcp mygod-cli ~/.local/bin/ chmod +x ~/.local/bin/mygod-mcp ~/.local/bin/mygod-cli # Make sure it's on your PATH (zsh users: add to ~/.zshrc) export PATH="$HOME/.local/bin:$PATH"
If your files live elsewhere, replace /Users/you/.local/bin with the real directory in all configs below.
# CLI: should print engine version, available sources and login status mygod-cli status # Assistant side: should print the MCP handshake, then wait on stdin mygod-mcp
The first run starts a persistent engine; from then on, every entry point connects to the same player instance.
mygod-mcp is a local stdio MCP server: no ports, no server, no network permissions. To an assistant it's just another local tool.
| Property | Value | Notes |
|---|---|---|
| Transport | stdio | Talks to the assistant over stdin/stdout — a local process-to-process conversation |
| Startup | Launched by the assistant | The assistant runs the configured path when it starts, on demand |
| Arguments | None | An empty args array is enough; it manages the persistent engine itself |
| Concurrency | Multi-client safe | Multiple assistants can connect without fighting over the player; latecomers join the same instance |
Just say this in the conversation — the assistant writes the MCP config and verifies the handshake itself:
"Add an MCP server named mygod, type stdio, command path /Users/you/.local/bin/mygod-mcp, no arguments. Then call status once to verify."
"Add mygod to the MCP config: stdio type, command /Users/you/.local/bin/mygod-mcp, no args. Then list the tools and confirm scan_local shows up."
"Connect the local MCP server mygod, type stdio, binary at /Users/you/.local/bin/mygod-mcp. Once configured, read the playback state once."
Replace the path with your own. The same wording works with any MCP-capable assistant.
Generic mcpServers form (for assistants using JSON config, such as Trae):
{
"mcpServers": {
"mygod": {
"type": "stdio",
"command": "/Users/you/.local/bin/mygod-mcp",
"args": []
}
}
}
For assistants using TOML config (such as Codex):
[mcp_servers.mygod] command = "/Users/you/.local/bin/mygod-mcp" args = []
Any terminal, script, hotkey tool or scheduled job can call mygod-cli. Output is structured so downstream programs can parse it.
mygod-cli help output)mygod-cli — command-line interface to the music engine
status Engine version, available sources, login status
search <keyword> [--kind k] [--source s] [--limit n]
play <keyword> [--source s] [--n i] [--yes]
play --tracks id,id | --playlist id | --album id | --radio mode
state Now playing and what's next
next | prev | pause | toggle | resume | radio_exit
volume <0-1> | eq <preset> | repeat <off|all|one> | shuffle [on|off]
lyrics [id] [--source s] With no id, uses the current track
catalog <kind> <id> [--source s] [--tab t] [--limit n] [--offset n]
discovery <kind> [--source s] [--limit n]
radio [mode] Personal radio (default / familiar / explore)
login-qr QR-code login (for sources that need it)
help Show this help
sources: run status to see available source IDs (the first is used by default)
Starting with no arguments enters interactive mode; leaving it does not stop playback
| Command | Description | Key options |
|---|---|---|
status | Engine version, available sources and each source's login status | — |
search | Search by keyword, returning results without playing | --kind result type; --source source; --limit count |
play | Search and play, or build a queue directly from IDs / playlist / album / radio | --n play the nth result; --yes skip confirmation; --tracks / --playlist / --album / --radio |
state | Current track, progress, queue, volume, loop and shuffle | — |
next / prev | Skip to the next / previous track | — |
pause / resume / toggle | Pause, resume, or switch between the two | — |
radio_exit | Leave radio continuation; the queue no longer extends itself | — |
volume | Set volume, shared across all entry points | Float between 0-1 |
eq | Switch EQ preset; flat turns it off | Preset name |
repeat | Loop mode: off / list / single track | off | all | one |
shuffle | Toggle shuffle; with no argument it turns on | on | off |
lyrics | Timed / translated / word-by-word lyrics | id track ID; --source source |
catalog | Open an artist, album, playlist or user page | kind and id; --tab, --limit, --offset |
discovery | Discovery page: daily picks, recommended playlists, featured, charts, recently played | kind; --limit |
radio | Generate a continuous stream matched to your taste | default / familiar / explore |
login-qr | QR-code login for sources that need an account; credentials stay local | — |
help | Print the command table | — |
# Search and see which versions are playable mygod-cli search "evening wind" --limit 10 # Play the 2nd search result directly mygod-cli play "evening wind" --n 2 --yes # Build a queue from track IDs, starting at the first mygod-cli play --tracks 1001,1002,1003 # Open a playlist and enqueue it all mygod-cli play --playlist 7788 # Loop the list + shuffle, then set volume to 60% mygod-cli repeat all && mygod-cli shuffle on && mygod-cli volume 0.6 # See what's playing now mygod-cli state
No. mygod allows only one player instance on your machine: the first connection owns the engine, the rest join as clients and read/write the same queue and progress. Switch tracks from any entry point and every other client's next snapshot is already up to date.
No. Some sources allow guest search and playback; restricted capabilities are flagged at search time, so you won't hit a failure only after pressing play. For more capabilities, scan the QR code with mygod-cli login-qr — credentials stay on your machine.
Two ways: on the assistant side, call scan_local with add to register a folder and build the index — local files then become searchable just like online tracks. Without an assistant, play a known path directly from the CLI, e.g. mygod-cli play --tracks /Users/you/Music/a.mp3 --source local. Files are never copied or transcoded.
All in ~/.local/share/mygod: playback sessions, local indexes and cache. Delete the directory and it's a factory reset; deleting just the cache subdirectory only affects cached tracks, not your indexes or queues.
It won't stay stuck. If a stream delivers no new data for 15 seconds, the track is marked failed and skipped. If the entire queue is unplayable, it stops and reports the reason instead of retrying forever.
No, and it never will. mygod only streams online playback and reads files already on your machine. Downloading, saving or redistributing tracks is not provided.