TERA Shinokada
winget install --id=Shinokada.Tera -e TERA is a terminal-based internet radio player that lets you browse and listen to online radio stations directly from your terminal.
winget install --id=Shinokada.Tera -e TERA is a terminal-based internet radio player that lets you browse and listen to online radio stations directly from your terminal.
A terminal-based internet radio player powered by Radio Browser.
? anytime to see available keyboard shortcuts# update and upgrade
brew update && brew upgrade
brew install shinokada/tera/tera
# Upgrade existing installation
brew upgrade shinokada/tera/tera
go install github.com/shinokada/tera/cmd/tera@latest
sudo dpkg -i tera_1.x.x_linux_amd64.deb
sudo apt-get install -f # Install mpv dependency if needed
sudo rpm -i tera_1.x.x_linux_amd64.rpm
scoop bucket add shinokada https://github.com/shinokada/scoop-bucket
scoop install tera
winget install Shinokada.Tera
# Upgrade existing installation
winget upgrade Shinokada.Tera
Download the latest binary for your platform from the releases page:
| Platform | Architecture | File |
|---|---|---|
| macOS | Intel | tera_1.x.x_darwin_amd64.tar.gz |
| macOS | Apple Silicon | tera_1.x.x_darwin_arm64.tar.gz |
| Linux | x86_64 | tera_1.x.x_linux_amd64.tar.gz |
| Linux | ARM64 | tera_1.x.x_linux_arm64.tar.gz |
| Windows | x86_64 | tera_1.x.x_windows_amd64.zip |
| Windows | ARM64 | tera_1.x.x_windows_arm64.zip |
# Download and extract (example for macOS Apple Silicon)
tar -xzf tera_1.x.x_darwin_arm64.tar.gz
# Move to a directory in your PATH
sudo mv tera /usr/local/bin/
.zip file for your architecturetera.exe to a directory already in your PATHIf you are upgrading from TERA v1 to v2, you need to move your configuration files to the new platform-specific directory.
~/.config/terafavorites, tokens, and .yaml files) to the new location:| Operating System | New Config Directory |
|---|---|
| Linux | ~/.config/tera/ (No change) |
| macOS | ~/Library/Application Support/tera/ |
| Windows | %APPDATA%\tera\ |
# Start TERA
tera
# Main Menu Options:
# 1) Play from Favorites - Browse your saved lists
# 2) Search Stations - Find new stations
# 3) Manage Lists - Create/edit/delete favorite lists
# 4) Block List - Manage blocked stations
# 5) I Feel Lucky - Random station by keyword
# 6) Gist Management - Backup/restore via GitHub
# 7) Settings - Configure TERA
# Quick Play (from main menu):
# Type 10-99+ to instantly play stations from "My-favorites"
# Need help? Press ? anytime to see keyboard shortcuts!
Browse and play stations from your organized lists. Navigate with āā or jk, press Enter to play.
Six search methods to find stations:
See Search Guide below for details.
Create, rename, and delete your favorite lists. Stations can be:
Duplicate Detection: TERA automatically prevents adding the same station twice to any list.
Block unwanted stations to prevent them from appearing in search results and shuffle mode.
How to Block:
b to block it instantlyu within 5 seconds to undo (in case of accidental block)Block List Management: From main menu, select "4. Block List" to:
u to unblock a selected stationc to clear entire block list (with confirmation)Keyboard Shortcuts:
| Screen | Key | Action |
|---|---|---|
| Playing | b | Block current station |
| Playing | u | Undo block (5 sec window) |
| Block List | u | Unblock selected station |
| Block List | c | Clear all blocks |
Storage Location:
~/.config/tera/blocklist.json~/Library/Application Support/tera/blocklist.json%APPDATA%\tera\blocklist.jsonEnter a keyword (genre, mood, style) and TERA finds a random matching station. Perfect for music discovery!
Shuffle Mode: Enable shuffle mode to automatically cycle through multiple stations matching your keyword:
t to toggle shuffle on/offSee Shuffle Mode for detailed features.
Access app configuration from the main menu (option 7):
The Settings menu automatically detects how you installed TERA (Homebrew, Go, Scoop, Winget, etc.) and shows the appropriate update command.
Customize how the TERA header appears at the top of the application:
Header Modes:
Customization Options:
Tips:
figlet to generate ASCII artFor users on unstable networks (mobile data, GPRS, 4G), configure automatic reconnection:
Settings stored in the config directory (see File Locations).
The main menu shows your "My-favorites" list with shortcuts 10-99+. Type the number to play instantly:
Main Menu & Quick Play
Choose an option:
1. Play from Favorites
2. Search Stations
3. Manage Lists
4. Block List
5. I Feel Lucky
6. Gist Management
7. Settings
āāā Quick Play Favorites āāā
10. Jazz FM ⢠UK ⢠MP3 192kbps
11. BBC Radio 6 Music ⢠UK ⢠AAC 128kbps
12. KEXP 90.3 FM ⢠US ⢠AAC 128kbps
Type 10-12 to play instantly!
How it works:
11) and press EnterEsc to stop playbackThe easiest way to change themes is through the Settings menu:
7 from the main menu to open SettingsYou can also customize colors and padding by editing the theme config file:
tera theme path # Show config file location
tera theme reset # Reset to defaults
The config file includes an ANSI color reference (0-15 standard colors, 16-255 extended colors). Example:
colors:
primary: "6" # Cyan
highlight: "3" # Yellow
error: "9" # Bright Red
padding:
list_item_left: 2
TERA automatically checks for new versions on startup. When an update is available:
7 from the main menu to open SettingsTERA detects how you installed it and provides the correct update command. For example:
brew upgrade shinokada/tera/terago install github.com/shinokada/tera/cmd/tera@latestscoop update terawinget upgrade tera| Installation Method | Update Command |
|---|---|
| Homebrew | brew upgrade shinokada/tera/tera |
| Go install | go install github.com/shinokada/tera/cmd/tera@latest |
| Scoop | scoop update tera |
| Winget | winget upgrade tera |
| APT/DEB | sudo apt update && sudo apt install --only-upgrade tera |
| RPM/DNF | sudo dnf upgrade tera |
| Manual | Download from releases page |
Shuffle mode is an enhanced version of "I Feel Lucky" that lets you explore multiple stations matching your search keyword without manually searching each time.
t to toggle shuffle mode onAutomatic Station Discovery
Auto-Advance Timer (Optional)
p keyStation History
b keySeamless Playback
h| Key | Action |
|---|---|
t | Toggle shuffle mode (in input screen) |
n | Next shuffle station (manual skip) |
[ | Previous station (from history) |
b | Block current station |
u | Undo block (5 sec window) |
p | Pause/resume auto-advance timer |
h | Stop shuffle, keep playing current |
f | Save to My-favorites |
s | Save to another list |
v | Vote for station |
Esc | Stop shuffle and return to input |
Configure shuffle behavior in Settings ā Shuffle Settings:
Auto-advance
n/[Auto-advance Interval
Remember History
History Size
šµ Now Playing (š Shuffle: jazz)
Station: Smooth Jazz 24/7
Country: United States
Codec: AAC ⢠Bitrate: 128 kbps
ā¶ Playing...
š Shuffle Active ⢠Next in: 4:23
Station 3 of session
āāā Shuffle History āāā
ā Jazz FM London
ā WBGO Jazz 88.3
ā Smooth Jazz 24/7 ā Current
f: Fav ⢠s: List ⢠v: Vote ⢠n: Next ⢠[: Prev ⢠b: Block ⢠p: Pause timer ⢠h: Stop shuffle
Shuffle settings are stored in the config directory as shuffle.yaml:
shuffle:
auto_advance: true # Auto-advance enabled
interval_minutes: 5 # 5 minutes per station
remember_history: true # Track history
max_history: 5 # Remember last 5 stations
You can edit this file directly or use the Settings menu.
| Key | Action |
|---|---|
āā / jk | Navigate |
Enter | Select / Play |
Esc | Back / Stop |
0 | Main Menu |
? | Help |
Ctrl+C | Quit |
| Key | Action |
|---|---|
1-7 | Quick select menu item |
10-99+ | Quick play from My-favorites |
| Key | Action |
|---|---|
Space | Pause / Resume |
* | Volume up (+5%) |
/ | Volume down (-5%) |
m | Toggle mute |
b | Block station |
u | Undo block (5s) |
| Key | Action |
|---|---|
f | Save to My-favorites |
s | Save to another list |
v | Vote for station |
| Key | Action |
|---|---|
n | New list (in dialogs) |
d | Delete item |
The Search Stations menu offers multiple ways to find stations:
| Option | Description | Example Query |
|---|---|---|
| Search by Tag | Find stations by genre/style tags | jazz, rock, news, classical |
| Search by Name | Find stations by their name | BBC, NPR, KEXP |
| Search by Language | Find stations broadcasting in a language | english, spanish, japanese |
| Search by Country Code | Find stations from a specific country | US, UK, FR, JP |
| Search by State | Find stations from a state/region | California, Texas, Bavaria |
| Advanced Search | Search both name AND tag fields | smooth jazz, classic rock |
jazz, rock, newsclassic rock, smooth jazz, talk radioBBC finds "BBC Radio 1", "BBC World Service", etc.Jazz, JAZZ, and jazz all work the sameUse Advanced Search when:
Features:
For example, searching jazz in Advanced Search finds:
Results are sorted by votes (most popular first) and limited to 100 stations. Broken/offline stations are automatically filtered out.
In the results:
āā or jkEnter to view station details and playf to add to My-favoritess to add to another listv to vote for the stationBackup and sync your favorite lists across devices using GitHub Gists.
Quick Setup:
gist scope only)Features:
Documentation:
TERA stores its configuration files in the OS-standard config directory:
| Operating System | Location |
|---|---|
| Linux | ~/.config/tera/ |
| macOS | ~/Library/Application Support/tera/ |
| Windows | %APPDATA%\tera\ |
tera/
āāā theme.yaml # Color and padding customization
āāā appearance_config.yaml # Header customization (text, ASCII art, etc.)
āāā connection_config.yaml # Auto-reconnect and buffering settings
āāā shuffle.yaml # Shuffle mode settings
āāā blocklist.json # Blocked radio stations
āāā voted_stations.json # Voting history (prevents duplicate votes)
āāā gist_metadata.json # Your gist history
āāā tokens/
ā āāā github_token # GitHub Personal Access Token
āāā favorites/
āāā My-favorites.json # Quick play list (main menu 10+)
āāā Rock.json # Your custom lists
āāā Jazz.json
Environment Variable Override: You can set a custom favorites directory:
export TERA_FAVORITE_PATH="/path/to/your/favorites"
mpv is installed: mpv --versionmpv https://stream.example.compkill mpv
TERA should prevent this, but if it happens:
killall mpv
# or on Linux
pkill -9 mpv
TERA creates it automatically at first launch. Check the favorites directory in your OS-specific config location (see File Locations).
If missing, restart TERA and it will be created.
git clone https://github.com/shinokada/tera.git
cd tera
go run cmd/tera/main.go
go test ./... -v
go build -o tera cmd/tera/main.go
Contributions are welcome! Please:
MIT Ā© Shinichi Okada