Cast media files to Smart TVs and Chromecast devices.
Go2TV lets you play video, audio, and image files on your Smart TV or Chromecast device directly from your computer or phone. It works with:
No need to copy files to a USB drive or set up a media server. Just select your file, pick your device, and play.
Download the latest release from the releases page.
go2tv_vX.Y.Z_windows_amd64.zip, extract, and run go2tv.exego2tv_vX.Y.Z_macOS_amd64.zip (Intel) or go2tv_vX.Y.Z_macOS_arm64.zip (Apple Silicon), extract, and run the appgo2tv_vX.Y.Z_linux_amd64.zip (or appropriate arch), extract, and run go2tvgo2tv_vX.Y.Z.apk) or zip (go2tv_vX.Y.Z_android.zip)Go2TV is a single executable with no installation required. Just download and run.
For maximum compatibility with all devices and file formats, install FFmpeg. Go2TV will automatically use it when needed.
When transcoding is enabled, Go2TV probes available GPU H.264 encoders first and falls back to libx264 if hardware encoding is unavailable or fails at startup.
sudo apt install ffmpeg or equivalent for your distrobrew install ffmpegGUI Mode

CLI Mode

Go2TV GUI keeps the current selection in a Playlist, even for a single file.
Go2TV can act as an RTMP server, allowing you to stream from OBS or other software directly to your Chromecast. This feature requires FFmpeg.
Go2TV can cast your desktop as a live stream to Chromecast devices. This feature is experimental and requires FFmpeg.
Notes: - Experimental: behavior/performance may vary by system. - Chromecast only (not DLNA/UPnP TVs). - Not supported on audio-only Chromecast devices.
$ go2tv -h
Usage of go2tv:
-l List available devices (Smart TVs and Chromecasts).
-s string
Path to subtitles file (.srt or .vtt).
-t string
Device URL to cast to (from -l output).
-tc
Force transcoding with ffmpeg.
-u string
URL to media file (triggers CLI mode).
-v string
Path to video/audio file (triggers CLI mode).
-version
Print version.
Examples
# List available devices
go2tv -l
# Play a video on your TV
go2tv -v movie.mp4 -t http://192.168.1.100:8060/
# Play with subtitles
go2tv -v movie.mp4 -s movie.srt -t http://192.168.1.100:8060/
# Force transcoding for incompatible formats
go2tv -v video.avi -tc -t http://192.168.1.100:8060/
# Cast to Chromecast
go2tv -v movie.mp4 -t http://192.168.1.50:8009
# Stream from stdin
cat video.mp4 | go2tv -t http://192.168.1.50:8009
# Stream from command output
yt-dlp -o - "https://youtu.be/..." | go2tv -t http://192.168.1.50:8009
# Stream from stdin with transcoding
cat video.mkv | go2tv -tc -t http://192.168.1.50:8009
# Stream from command output with transcoding
yt-dlp -o - "https://youtu.be/..." | go2tv -tc -t http://192.168.1.50:8009
mp4, avi, mkv, mpeg, mov, webm, m4v, mpv, mp3, flac, wav, jpg, jpeg, png
The CLI accepts any file type.
mcp-beam is a companion MCP server (stdio transport) built on top of Go2TV core packages.
Use it when you want MCP clients/agents to:
If you want direct end-user control, use Go2TV GUI/CLI.
If you want tool-driven casting from MCP-compatible workflows, use mcp-beam.
Chromecast receiver
Go2TV uses a custom Chromecast receiver hosted at https://cast-receiver.go2tv.app/. It is not part of this open-source repository and is not currently published. Functionality matches the default receiver, with minor branding differences.
Firewall Configuration
Go2TV uses ports 3339-3438 for device discovery. If you're behind a firewall, allow inbound UDP traffic on these ports.
Requirements: Go 1.25
git clone https://github.com/alexballas/go2tv
cd go2tv
make build
AppImage build (Linux)
make appimage
v2.1 style build. No bundled ffmpeg/ffprobe.
AppImage build (with ffmpeg, Linux)
make appimage-ffmpeg
APPIMAGE_FFMPEG_MODE=auto (default): use host ffmpeg/ffprobe if static; else download prebuilt bundleAPPIMAGE_FFMPEG_MODE=system: require host ffmpeg/ffprobeAPPIMAGE_FFMPEG_MODE=download: always download prebuilt bundleAPPIMAGE_FFMPEG_MODE=none: build AppImage without ffmpeg binariesAPPIMAGE_FFMPEG_BIN=/path/ffmpeg APPIMAGE_FFPROBE_BIN=/path/ffprobeUsing Docker
Build the image:
docker build --force-rm -t go2tv .
Run the container (Linux with X11):
xhost +local:docker
docker run -it --network host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix go2tv go2tv
Alexandros Ballas alex@ballas.org
MIT
$ claude mcp add go2tv \
-- python -m otcore.mcp_server <graph>