Control Chromecast
v1.0.0Control Chromecast devices on your local network - discover, cast media, control playback, manage queues, and save/restore states
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
The name/description are about controlling Chromecast devices and the skill only requires the 'catt' CLI (which is the expected tool for this purpose). No unrelated services, credentials, or binaries are requested.
Instruction Scope
SKILL.md contains concrete catt command examples (scan, cast, play, pause, status, etc.). It references the catt config file (~/.config/catt/catt.cfg) and local-network requirements (mDNS, ports), which are expected for Chromecast control. The instructions do not ask the agent to read unrelated system files, harvest credentials, or transmit data to unexpected external endpoints.
Install Mechanism
Install uses a Python package (uv/pip) to provide the 'catt' CLI (package name 'catt'). Installing from PyPI is common and appropriate here, but pip install runs arbitrary package code at install time and will pull in dependencies (e.g., yt-dlp, ffmpeg-related tooling). Recommend reviewing the catt package source (GitHub repo listed) and PyPI metadata before installing.
Credentials
The skill requests no environment variables or external credentials. This is proportional: controlling local Chromecast devices does not require cloud API keys. The only filesystem/config interaction is the user's catt config in their home directory, which is appropriate.
Persistence & Privilege
always is false (no forced inclusion). The skill will read/write its own config (~/.config/catt/catt.cfg) when using commands like set_default — this is expected but worth noting because it persists device aliases/defaults to the user's home config. Autonomous invocation by the agent is allowed (platform default); that is normal but increases impact if the installed package were malicious.
Assessment
This skill appears coherent and implements Chromecast control by invoking the catt CLI. Before installing, you should: (1) verify the catt package source on the linked GitHub repo and PyPI page to ensure you trust it; (2) be aware that 'pip' installs execute package code and will pull dependencies (yt-dlp, etc.); (3) accept that the tool needs local network access and may open TCP ports (45000–47000) for local-file casting — avoid enabling those ports on untrusted networks; (4) know the tool will write settings to ~/.config/catt/catt.cfg (device aliases/defaults); and (5) consider installing inside a virtual environment or isolated environment if you want to limit system-wide impact.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
📺 Clawdis
Binscatt
Install
Install via pip/uv
Bins: catt
uv tool install cattlatest
Chromecast Control
Control Chromecast and Google Cast-enabled devices on your local network using catt (Cast All The Things).
Quick Reference
| Command | Description |
|---|---|
catt scan | Find all Chromecasts on network |
catt cast <url> | Cast video/audio |
catt pause / play | Pause/resume |
catt stop | Stop playback |
catt status | Current playback info |
catt volume <0-100> | Set volume |
Use -d <device> to target a specific device by name or IP.
Discovery & Device Management
# Find all devices
catt scan
# Set a default device (saves to config)
catt -d "Living Room TV" set_default
# Create an alias for easier access
catt -d 192.168.1.163 set_alias tv
# Remove alias or default
catt -d tv del_alias
catt del_default
Casting Media
Basic Casting
# Cast from URL (YouTube, Vimeo, and hundreds of yt-dlp supported sites)
catt cast "https://www.youtube.com/watch?v=VIDEO_ID"
# Cast local file
catt cast ./video.mp4
# Cast a website (displays webpage on TV)
catt cast_site "https://example.com"
Advanced Cast Options
# Cast with subtitles
catt cast -s ./subtitles.srt ./video.mp4
# Start at specific timestamp
catt cast -t 01:30:00 "https://youtube.com/watch?v=VIDEO_ID"
# Play random item from playlist
catt cast -r "https://youtube.com/playlist?list=PLAYLIST_ID"
# Play only video (ignore playlist in URL)
catt cast -n "https://youtube.com/watch?v=VIDEO_ID&list=PLAYLIST_ID"
# Disable automatic subtitle loading
catt cast --no-subs ./video.mp4
# Pass yt-dlp options (e.g., select format)
catt cast -y format=best "https://youtube.com/watch?v=VIDEO_ID"
# Block until playback ends (useful for scripts)
catt cast -b "https://example.com/video.mp4"
Playback Control
catt play # Resume playback
catt pause # Pause playback
catt play_toggle # Toggle play/pause
catt stop # Stop playback completely
catt skip # Skip to end of content
# Seeking
catt seek 300 # Jump to 5 minutes (seconds)
catt seek 01:30:00 # Jump to 1h 30m (HH:MM:SS)
catt ffwd 30 # Fast forward 30 seconds
catt rewind 30 # Rewind 30 seconds
Volume Control
catt volume 50 # Set volume to 50%
catt volumeup 10 # Increase by 10
catt volumedown 10 # Decrease by 10
catt volumemute on # Mute
catt volumemute off # Unmute
Queue Management (YouTube)
# Add video to end of queue
catt add "https://youtube.com/watch?v=VIDEO_ID"
# Add video to play next
catt add -n "https://youtube.com/watch?v=VIDEO_ID"
# Remove video from queue
catt remove "https://youtube.com/watch?v=VIDEO_ID"
# Clear entire queue
catt clear
State Management
# Save current state (position, volume, what's playing)
catt save
# Restore saved state later
catt restore
Device Information
catt status # Brief: time, volume, mute status
catt info # Full: title, URL, player state, media type, etc.
Configuration
Config file: ~/.config/catt/catt.cfg
[options]
device = Living Room TV
[aliases]
tv = Living Room TV
bedroom = Bedroom Speaker
Network Requirements
- Chromecast and computer must be on same network
- For local file casting: TCP ports 45000-47000 must be open
- Some networks block mDNS - use IP address directly if
catt scanfails
Supported Sources
Catt uses yt-dlp internally, supporting:
- YouTube (videos, playlists, live streams)
- Vimeo, Dailymotion, Twitch
- Direct video URLs (MP4, MKV, WebM, etc.)
- Local files (video, audio, images)
- Hundreds more sites (see yt-dlp supported sites)
Comments
Loading comments...
