Expand description
§grod — Google Fishing Rod
Cast YouTube and Piped videos to any Chromecast device from the command line.
§Features
- Cast by YouTube URL, Piped URL, or video ID
- Queue with auto-advance via background daemon (
daemon) - Interactive TUI queue manager with error popup overlay (
tui) - Full playback controls: pause, seek, volume, mute
- Stream resolution via self-hosted Piped API (
piped) - Local HLS muxer for 1080p casting (ffmpeg pulls video-only mp4 +
audio-only m4a from Piped, transcodes with libx264, serves over HTTP —
streamer) - LAN HTTP API with optional PIN auth for companion apps (
api) - mDNS service advertisement (
_grod._tcp.local.) for LAN auto-discovery (discovery) grod firewallsubcommand prints LAN-scoped allow rules for ufw/firewalld/nftables/iptables
§Quick start
grod config discover # find devices on LAN
grod config set-api <url> # set Piped API base URL
grod cast <youtube-url> # cast immediately or queue (alias: c)
grod play/pause # toggle play/pause (alias: pp)
grod status # now playing + queue (alias: s)
grod tui # open interactive TUI
grod daemon [start|stop|status] # manage background daemon (alias: d)
grod firewall # print LAN allow rules for required portsModules§
- api
- HTTP API server — exposes grod controls to local-network clients (e.g. Flutter app).
- cast
- Chromecast control — wraps
go-chromecastfor load, stop, and playback commands. - cli
- config
- daemon
- Background daemon — polls device every 10s and auto-advances the queue when idle.
Also runs the HTTP API server on
api_port(default 7878) and a muxing stream server onstream_port(default 7879) that serves remuxed video+audio to the Chromecast. - discovery
- mDNS service discovery — advertises the grod daemon on the LAN.
- piped
- Piped API client — resolves YouTube video IDs to stream URLs and titles.
- queue
- Persistent queue and now-playing state, stored as JSON in the XDG data dir.
- streamer
- Local muxing HTTP server (HLS).
- tui