Modern, ultra-lightweight, cross-platform menu bar internet radio player powered by Tauri v2 & Rust.
Featuring a native macOS HUD Glass interface, real-time Rust ICY metadata extraction, broadcast show schedules with autoplay, and public directory discovery.
Menu Bar Tray Popover
Compact 2-click HUD player with live waveform & sleep timer
|
Main Station Management Full-featured broadcast directory & preferences
|
About Squelch Native macOS dark frosted glass HUD dialog
|
Run this single command in your Terminal. It downloads the latest release, installs it directly to /Applications, configures Gatekeeper permissions automatically, and launches Squelch:
curl -fsSL https://raw.githubusercontent.com/mrbvrz/squelch/main/install.sh | bashDownload the ready-to-run package from GitHub Releases:
- ๐ Download Squelch for macOS (.dmg)
- ๐ฆ Download Squelch for macOS (.zip)
- ๐ View All Release Assets
Tip
First-time launch on macOS: Because Squelch is an independent open-source app distributed outside the paid Apple Developer Program, macOS Gatekeeper may display a prompt on first launch.
To open without issues:
- Drag Squelch.app into
/Applications. - Right-Click (or Control-Click)
Squelch.appin/Applicationsand select Open. - Click Open on the confirmation dialog. (You only need to do this once).
Alternatively, run this in Terminal after dragging to /Applications:
xattr -cr /Applications/Squelch.appNote
Windows (x64) and Linux (AppImage / .deb) support is in active development!
Squelch's core backend is written in standard Rust with Tauri v2, providing 100% native cross-platform support with minimal system resource consumption.
- ๐ฎ๐ฉ Trakteer: https://trakteer.id/mrbvrz
- โ Buy Me A Coffee: https://www.buymeacoffee.com/mrbvrz
- Ultra-Lightweight Native Performance (Tauri v2 + Rust)
- Low RAM consumption (~25โ35 MB memory footprint vs. ~160+ MB in legacy frameworks).
- Instant cold startup under 300ms using system-native WebKit webviews.
- Robust Rust backend handling atomic JSON persistence, local HTTP proxying, and global window state synchronization.
- macOS HUD Glass Popover & Animated Waveform
- Native macOS HUD translucency window with frosted Bento layout (
backdrop-filter: blur(24px) saturate(180%)). - 12-frame pure white Signed Distance Field (SDF) capsule waveform animation in the menu bar with zero CPU overhead.
- Quick two-click playback, live audio signal indicators, sleep timer presets (
15m,30m,60m) with 1-minute remaining desktop notifications, and instant category filters.
- Native macOS HUD translucency window with frosted Bento layout (
- Show Schedules & Automated Autoplay
- Configure broadcast programs (e.g. Sarapan Seru on Jak 101 FM, MondayโFriday 06:00โ10:00).
- Background scheduler engine with daily slot deduplication and native desktop notifications.
- Optional Autoplay switch to automatically tune in and stream when your show begins.
- Live on-air pulsating badge (
๐ข On Air Now) indicating active broadcasts.
- Rust Asynchronous ICY Metadata Proxy & Multi-Codec Engine
- Background audio engine combining HTML5 Audio with
hls.jssupporting MP3, AAC / HE-AAC, OGG / Opus, and HLS (.m3u8). - High-performance local loopback proxy server (
127.0.0.1) built withaxumandtokio, requestingIcy-MetaData: 1, extractingStreamTitlechunks in real time without audio glitching. - Automatic stream URL resolver supporting direct streams,
.m3u,.pls, and Noice catalog endpoints (open.noice.id).
- Background audio engine combining HTML5 Audio with
- Unified Sidebar & Instant Keyboard Navigation
- Integrated mini player deck docked right below the search bar on the left sidebar.
- Global
โF(macOS) /Ctrl+F(Windows/Linux) search shortcut with key badge and auto-focus.
- Open Public Radio Directory
- Search global stations powered by the
radio-browser.infodirectory with automatic deduplication. - Country selection dropdown with emoji flags and inline audio stream previewing.
- Search global stations powered by the
- Listening Analytics
- Weekly, Monthly, and Yearly listening duration tracking with interactive bar charts.
- Resolves actual station names and artwork in the listening statistics deck.
- Personalization & Custom Themes
- System, Light, and Dark window themes matching macOS neutral graphite tones.
- 8 native macOS accent color palettes and adjustable frosted glass opacity.
- Custom system font selector with automatic local font discovery.
- Atomic JSON data backup and restore.
Squelch follows a modern, decoupled architecture pairing a high-performance Rust backend (via Tauri v2) with a responsive React 18 + TypeScript + Vite frontend:
squelch/
โโโ src-tauri/ # Native Rust Backend (Tauri v2)
โ โโโ Cargo.toml # Rust package manifest & release profiles
โ โโโ tauri.conf.json # Tauri v2 window and bundle configuration
โ โโโ capabilities/ # Fine-grained security capabilities & permissions
โ โโโ src/
โ โโโ main.rs # Application entry point
โ โโโ lib.rs # Tray coordinator, menu event handlers & vibrancy
โ โโโ commands.rs # IPC Tauri command handlers (CRUD, audio, notif)
โ โโโ store.rs # Atomic JSON store (AppStore) & state synchronization
โ โโโ icy_proxy.rs # Asynchronous ICY metadata demuxer (Tokio + Axum)
โโโ src/ # Frontend Web Application (React 18 + Vite)
โ โโโ app/ # Main management window (App.tsx, styles.css)
โ โโโ tray/ # Menu bar tray popover view (TrayPopoverApp.tsx)
โ โโโ audio/ # Headless audio worker (audio-renderer.ts)
โ โโโ bridge/ # Tauri IPC bridge & cross-window sync (tauri-bridge.ts)
โ โโโ components/ # UI components (StationAvatar, Icons, Modals)
โ โโโ i18n/ # Bilingual localization (Indonesian & English)
โ โโโ types/ # Shared domain TypeScript interfaces & schemas
โ โโโ utils/ # Visual appearance, playlist parsers, player state
โโโ index.html # Main window HTML entry
โโโ tray.html # Tray popover HTML entry
โโโ audio.html # Audio transport worker HTML entry
โโโ vite.config.ts # Vite multi-entry build configuration
โโโ tsconfig.json # Strict TypeScript configuration
โโโ ARCHITECTURE.md # Detailed Architecture & Technical Specifications
โโโ CHANGELOG.md # Version Release History
For detailed specifications on the Rust ICY demuxing protocol, state synchronization, and security model, see ARCHITECTURE.md.
For the complete version history, see CHANGELOG.md.
- Node.js
>= 20.x - npm
>= 10.x - Rust
>= 1.78(withcargo) - macOS
12+(Apple Silicon or Intel), Windows 10/11, or Linux
# Clone the repository
git clone https://github.com/mrbvrz/squelch.git
cd squelch
# Install frontend dependencies
npm install# Launch Squelch in development mode (starts Vite dev server & Tauri debug app)
npm run dev
# Or run typecheck and test suites
npm run typecheck
npm test| Command | Description |
|---|---|
npm run dev |
Launches Squelch in live development mode (tauri dev). |
npm run build |
Builds the optimized production frontend bundle (dist-ui/). |
npm run tauri:build |
Builds the production application executable via Tauri. |
npm run tauri:dist |
Creates the production macOS bundle, codesigns, and generates .dmg. |
npm test |
Runs unit and architecture verification test suites with Vitest. |
npm run typecheck |
Runs strict TypeScript verification across all code (tsc --noEmit). |
npm run lint |
Checks TypeScript and React code with ESLint. |
npm run format |
Formats all source files, CSS, HTML, and Markdown with Prettier. |
npm run format:check |
Verifies code formatting without modifying files. |
All user configuration, schedules, and listening statistics are stored atomically in the operating system's standard application support folder:
- macOS:
~/Library/Application Support/com.mrbvrz.squelch/ - Windows:
%APPDATA%\com.mrbvrz.squelch\ - Linux:
~/.config/com.mrbvrz.squelch/
Files persisted:
stations.jsonโ Station library and category groupsschedules.jsonโ Configured show schedules, alerts, and autoplay preferencessettings.jsonโ User preferences, theme, font, and shortcutsstats.jsonโ Listening activity and duration history (with station names & logos)
- Author: mrbvrz
- Repository: https://github.com/mrbvrz/squelch
- License: MIT License

