Skip to main content

Crate grod

Crate grod 

Source
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 firewall subcommand 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 ports

Modules§

api
HTTP API server — exposes grod controls to local-network clients (e.g. Flutter app).
cast
Chromecast control — wraps go-chromecast for 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 on stream_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