{"id":21658431,"url":"https://github.com/tsirysndr/tunein-cli","last_synced_at":"2026-07-06T00:00:17.347Z","repository":{"id":78085717,"uuid":"604498992","full_name":"tsirysndr/tunein-cli","owner":"tsirysndr","description":"Browse and listen to thousands of radio stations across the globe right from your terminal 🌎 📻 🎵✨","archived":false,"fork":false,"pushed_at":"2026-04-04T10:00:22.000Z","size":3486,"stargazers_count":83,"open_issues_count":5,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-04T11:40:03.535Z","etag":null,"topics":["cli-app","command-line","command-line-tool","icecast","radio-browser","radio-browser-api","rust-lang","tokio","tui","tunein","webradio"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsirysndr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["tsirysndr"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":[]}},"created_at":"2023-02-21T07:27:16.000Z","updated_at":"2026-04-04T10:00:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"5a856876-c442-48f0-9f36-d653022b084f","html_url":"https://github.com/tsirysndr/tunein-cli","commit_stats":{"total_commits":31,"total_committers":1,"mean_commits":31.0,"dds":0.0,"last_synced_commit":"3de2c1dcf312f8a2a9b65b6f1f4771f83a2baae5"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/tsirysndr/tunein-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Ftunein-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Ftunein-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Ftunein-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Ftunein-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsirysndr","download_url":"https://codeload.github.com/tsirysndr/tunein-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Ftunein-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35171815,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli-app","command-line","command-line-tool","icecast","radio-browser","radio-browser-api","rust-lang","tokio","tui","tunein","webradio"],"created_at":"2024-11-25T09:29:15.284Z","updated_at":"2026-07-06T00:00:17.336Z","avatar_url":"https://github.com/tsirysndr.png","language":"Rust","funding_links":["https://github.com/sponsors/tsirysndr"],"categories":["Applications","Rust","Entertainment"],"sub_categories":["Audio and Music","Music"],"readme":"\n![Cover](./.github/assets/preview.png)\n\n# TuneIn CLI 📻 🎵 ✨\n\n\u003cp\u003e\n  \u003ca href=\"https://flakehub.com/flake/tsirysndr/tunein-cli\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/endpoint?url=https://flakehub.com/f/tsirysndr/tunein-cli/badge\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://crates.io/crates/tunein-cli\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/crates/v/tunein-cli.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://crates.io/crates/tunein-cli\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/crates/dr/tunein-cli\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg alt=\"GitHub Downloads (all assets, all releases)\" src=\"https://img.shields.io/github/downloads/tsirysndr/tunein-cli/total\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"LICENSE\" target=\"./LICENSE\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-blue.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/tsirysndr/tunein-cli/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/tsirysndr/tunein-cli/actions/workflows/ci.yml/badge.svg\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nA command line interface for [TuneIn Radio](https://tunein.com) / [Radio Browser](https://www.radio-browser.info/).\u003cbr /\u003e\nYou can search for stations, play them, and see what's currently playing.\n\n![Made with VHS](https://vhs.charm.sh/vhs-4UhZFFRvVAuaZnapZUlp6R.gif)\n\n## 📖 Table of Contents\n\n- [Features](#-features)\n- [Installation](#-installation)\n- [Downloads](#-downloads)\n- [Usage](#-usage)\n- [Equalizer](#-equalizer)\n- [Keyboard Shortcuts](#-keyboard-shortcuts)\n- [Systemd Service](#-systemd-service)\n- [API Documentation](#api-documentation)\n- [License](#-license)\n\n## ✨ Features\n\n- 🔍 Search and play thousands of radio stations from [TuneIn](https://tunein.com) or [Radio Browser](https://www.radio-browser.info/)\n- 🎵 Plays all the common Icecast stream formats: **MP3, AAC/AAC+, Ogg Vorbis, FLAC and WAV** (decoded with [Symphonia](https://github.com/pdeljanov/Symphonia))\n- 🎧 Powerful DSP (**Equalizer, Bass, Treble**) based on the [Rockbox DSP](https://github.com/tsirysndr/rockboxd/tree/master/crates/rockbox-dsp) engine\n- 📻 Interactive TUI: browse categories, favourites, resume last station\n- 🌈 Real-time audio visualizations: oscilloscope, vectorscope and spectroscope\n- 🖥️ OS media controls integration (play/pause/volume from your keyboard's media keys)\n- 🛰️ Built-in gRPC server, installable as a systemd service\n\n## 🚚 Installation\n\nCompile from source, without Nix:\n\n```bash\n# Install dependencies\nbrew install protobuf # macOS\nsudo apt-get install -y libasound2-dev protobuf-compiler libdbus-1-dev # Ubuntu/Debian\n# Compile and install\ngit clone https://github.com/tsirysndr/tunein-cli\ncd tunein-cli\ncargo install --path .\n```\n\nWith Nix:\n\n```bash\ngit clone https://github.com/tsirysndr/tunein-cli\ncd tunein-cli\nnix develop --experimental-features \"nix-command flakes\"\ncargo install --path .\n```\n\n### macOS/Linux\n\nUsing Bash:\n\n```bash\ncurl -fsSL https://cdn.jsdelivr.net/gh/tsirysndr/tunein-cli@ab6a1ab/install.sh | bash\n```\n\nUsing [Homebrew](https://brew.sh):\n\n```bash\nbrew install tsirysndr/tap/tunein\n```\n\nUsing [Nix](https://nixos.org/nix/):\n\n```bash\ncachix use tsirysndr\nnix profile install --experimental-features \"nix-command flakes\" github:tsirysndr/tunein-cli\n```\n\n### Ubuntu/Debian\n\n```bash\necho \"deb [trusted=yes] https://apt.fury.io/tsiry/ /\" | sudo tee /etc/apt/sources.list.d/fury.list\nsudo apt-get update\nsudo apt-get install tunein-cli\n```\n\n### Fedora\n\nAdd the following to `/etc/yum.repos.d/fury.repo`:\n\n```\n[fury]\nname=Gemfury Private Repo\nbaseurl=https://yum.fury.io/tsiry/\nenabled=1\ngpgcheck=0\n```\n\nThen run:\n```bash\ndnf install tunein-cli\n```\n\n### Arch Linux\nUsing [paru](https://github.com/Morganamilo/paru):\n\n```bash\nparu -S tunein-cli-bin\n```\n\nOr download the latest release for your platform [here](https://github.com/tsirysndr/tunein-cli/releases).\n\n## 📦 Downloads\n- `Mac`: arm64: [tunein_v0.5.0_aarch64-apple-darwin.tar.gz](https://github.com/tsirysndr/tunein-cli/releases/download/v0.5.0/tunein_v0.5.0_aarch64-apple-darwin.tar.gz) intel: [tunein_v0.5.0_x86_64-apple-darwin.tar.gz](https://github.com/tsirysndr/tunein-cli/releases/download/v0.5.0/tunein_v0.5.0_x86_64-apple-darwin.tar.gz)\n- `Linux`: [tunein_v0.5.0_x86_64-unknown-linux-gnu.tar.gz](https://github.com/tsirysndr/tunein-cli/releases/download/v0.5.0/tunein_v0.5.0_x86_64-unknown-linux-gnu.tar.gz)\n\n## 🚀 Usage\n```\nUSAGE:\n    tunein \u003cSUBCOMMAND\u003e\n\nOPTIONS:\n    -h, --help                   Print help information\n    -p, --provider \u003cprovider\u003e    The radio provider to use, can be 'tunein' or 'radiobrowser'.\n                                 Default is 'tunein' [default: tunein]\n    -V, --version                Print version information\n\nSUBCOMMANDS:\n    browse    Browse radio stations\n    help      Print this message or the help of the given subcommand(s)\n    play      Play a radio station\n    search    Search for a radio station\n    server    Start the server\n    service   Manage systemd service for tunein-cli server\n```\n\nSearch for a radio station:\n```bash\ntunein search \"BBC Radio 1\"\n```\nResult:\n```\nBBC Radio 1 | The best new music | id: s24939\nBBC Radio 1Xtra | Remi Burgz | id: s20277\n```\n\nPlay a radio station:\n```bash\ntunein play \"alternativeradio.us\"\n# Or by station ID\ntunein play s221580\n```\n\n## 🎧 Equalizer\n\nTuneIn CLI ships a powerful DSP (Equalizer, Bass, Treble) based on the [Rockbox DSP](https://github.com/tsirysndr/rockboxd/tree/master/crates/rockbox-dsp) engine. Press `e` while playing (or anywhere in interactive mode) to open the equalizer popup: a **10-band graphic equalizer** plus **Bass** and **Treble** shelf controls.\n\n| Key       | Action                                               |\n| --------- | ---------------------------------------------------- |\n| `e`       | Open / close the equalizer                           |\n| `←` / `→` | Select a band (or Bass / Treble)                     |\n| `↑` / `↓` | Adjust the selected gain (`Shift` for coarse steps)  |\n| `Space`   | Toggle the equalizer on / off                        |\n| `0`       | Reset all gains to 0 dB                              |\n| `Esc`     | Close the popup                                      |\n\n### Bass \u0026 Treble\n\nThe Bass and Treble columns control Rockbox-style shelf filters (±24 dB, in whole-dB steps). Following Rockbox semantics they are **independent of the equalizer on/off switch**: any non-zero value is applied even when the band EQ is off. The shelf cutoffs default to 200 Hz (bass) and 3.5 kHz (treble) and can be changed in the settings file.\n\n### Settings\n\nEvery change is saved immediately to `settings.toml` in the config directory (`~/Library/Application Support/io.tunein-cli.tunein-cli/` on macOS, `~/.config/tunein-cli/` on Linux). The schema matches Rockbox's `settings.toml`, so EQ presets round-trip between the two:\n\n```toml\neq_enabled = true\nbass = 4        # dB, shelf filter, independent of eq_enabled\ntreble = -2     # dB\nbass_cutoff = 0   # Hz, 0 = default (200)\ntreble_cutoff = 0 # Hz, 0 = default (3500)\n\n[[eq_band_settings]]\ncutoff = 32 # Hz\nq = 7       # Q × 10 (0.7)\ngain = 30   # dB × 10 (+3.0 dB)\n\n# … 9 more [[eq_band_settings]] entries (63, 125, 250, 500, 1k, 2k, 4k, 8k, 16k)\n```\n\n## 🎹 Keyboard Shortcuts\n\nPress `?` in either UI to see every available shortcut with a description. Highlights:\n\n| Key            | Player              | Interactive mode       |\n| -------------- | ------------------- | ---------------------- |\n| `Space`        | Play / pause        | Toggle EQ (in popup)   |\n| `Tab`          | Cycle visualization | —                      |\n| `↑` / `↓`      | Volume              | Navigate lists         |\n| `e`            | Equalizer           | Equalizer              |\n| `f`            | —                   | Add / remove favourite |\n| `x`            | —                   | Stop playback          |\n| `+` / `-`      | —                   | Volume                 |\n| `?`            | Help                | Help                   |\n| `q` / `Ctrl+C` | Quit                | Quit (`Ctrl+C`)        |\n\n## 🧙 Systemd Service\n\nTunein daemon can be started as a systemd service. To enable and start the service, run the following command:\n\n```bash\ntunein service install\n```\n\nTo disable and stop the service, run the following command:\n\n```bash\ntunein service uninstall\n```\n\nTo check the status of the service, run the following command:\n\n```bash\ntunein service status\n```\n\n\n## API Documentation\n[https://buf.build/tsiry/tuneinserverapis/docs/main:tunein.v1alpha1](https://buf.build/tsiry/tuneinserverapis/docs/main:tunein.v1alpha1)\n\nYou can start the server locally by running:\n```bash\ntunein server\n```\n\nand then use [Buf Studio](https://studio.buf.build/tsiry/tuneinserverapis?selectedProtocol=grpc-web\u0026target=http%3A%2F%2Flocalhost%3A8090) to make requests to the server\n\n\u003cimg src=\"./api.png\" /\u003e\n\n\n## 📝 License\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsirysndr%2Ftunein-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsirysndr%2Ftunein-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsirysndr%2Ftunein-cli/lists"}