| name | plex-ctl |
| description | PLEX-CTL |
plexctl โ Plex Media Server Control
Standalone CLI for controlling Plex Media Server and clients via the Plex API
When to Use
Trigger phrases:
- "play [title] on Plex"
- "search Plex for [query]"
- "what's playing on Plex"
- "pause/resume Plex"
- "show me what's on deck"
- "what's new on Plex"
- "list Plex clients"
- "tell me about [movie/show]"
Use this skill when:
- User wants to play specific content on Plex
- User wants to search their Plex library
- User wants to control playback (pause, resume, stop, next, prev)
- User wants to see what's currently playing
- User wants to browse recently added content
- User wants to see continue watching (on-deck)
- User wants detailed info about a title
Don't use this skill when:
- User wants Apple TV-specific navigation (use ClawTV instead)
- User wants vision-based automation (use ClawTV instead)
- User wants to manage Plex server settings (use Plex web UI)
Commands
Setup
plexctl setup
Interactive first-time setup:
Playback
plexctl play "Fight Club"
plexctl play "inception"
plexctl play "The Office" -s 3 -e 10
plexctl play "Westworld" --season 2 --episode 6
plexctl play "Matrix" -c "Living Room TV"
Playback Control
plexctl pause
plexctl resume
plexctl stop
plexctl next
plexctl prev
Search & Discovery
plexctl search "matrix"
plexctl search "breaking bad"
plexctl recent
plexctl recent -n 20
plexctl on-deck
plexctl now-playing
plexctl info "Inception"
plexctl info "The Office"
Library Management
plexctl libraries
plexctl clients
Setup Instructions
1. Install Dependencies
pip install plexapi
2. Run Setup
plexctl setup
You'll need:
- Plex server URL: Usually
http://[local-ip]:32400
- Plex token: Get from Settings โ Account โ Authorized Devices
- Or from browser URL when logged into Plex Web
- Look for
X-Plex-Token parameter
- Default client: The tool will discover available clients
3. Verify
plexctl clients
plexctl libraries
plexctl search "test"
Required Credentials
Config stored in ~/.plexctl/config.json:
{
"plex_url": "http://192.168.86.86:32400",
"plex_token": "your-plex-token-here",
"default_client": "Apple TV"
}
Getting Your Plex Token
Method 1: Settings Page
- Log into Plex Web (app.plex.tv)
- Settings โ Account โ Authorized Devices
- Look for your token in the page source or URL
Method 2: Browser URL
- Open any Plex Web page while logged in
- Check the URL for
X-Plex-Token=...
- Copy the token value
Method 3: XML Direct Method
- Navigate to:
http://[your-plex-ip]:32400/?X-Plex-Token=
- View page source
- Look for
authToken attribute
Privacy & Data
- Local only: Connects directly to your Plex Media Server on your local network
- No cloud APIs: All communication is local (unless using Plex cloud discovery as fallback)
- No external services: No data sent to third parties
- No telemetry: No usage tracking or analytics
- Config storage: Only stores Plex URL, token, and default client locally
Note: Plex cloud discovery (MyPlex) is only used as a fallback when local GDM discovery fails. All media playback is direct to your local server.
Common Use Cases
1. Quick Movie Playback
plexctl play "Fight Club"
Searches library, finds best match, starts playing on default client.
2. Binge Watching TV Shows
plexctl play "Breaking Bad" -s 1 -e 1
plexctl next
plexctl next
3. Continue Watching
plexctl on-deck
plexctl play "Show Name"
4. Browse New Content
plexctl recent
plexctl info "Movie Title"
plexctl play "Movie Title"
5. Multi-Client Control
plexctl clients
plexctl play "Movie" -c "Bedroom TV"
plexctl pause -c "Living Room TV"
6. Library Search
plexctl search "christopher nolan"
plexctl search "breaking"
plexctl info "Inception"
Fuzzy Matching
The play and info commands use fuzzy search:
- "fight club" โ "Fight Club (1999)"
- "inception" โ "Inception"
- "office" โ "The Office (U.S.)"
Exact matches are prioritized over partial matches.
Error Handling
Client not found:
Error: Client 'Apple TV' not found
Available clients:
Local:
โข Living Room TV (Plex for Apple TV)
โข Bedroom (Plex Web)
No results:
No results found for: xyz123
Connection failed:
Error connecting to Plex server: [Errno 61] Connection refused
URL: http://192.168.86.86:32400
Check your plex_url and plex_token in config
Integration with OpenClaw
When a user asks to play something on Plex:
- Parse the request โ extract title, season, episode
- Choose command:
- Movie:
plexctl play "Title"
- TV show specific episode:
plexctl play "Show" -s N -e N
- Search first:
plexctl search "query" then plexctl play "Title"
- Execute and report โ run command, share output with user
Example agent flow:
User: "Play Fight Club on Plex"
Agent: [exec] plexctl play "Fight Club"
Output: Found: Fight Club (1999) (movie)
โ Playing on Apple TV
Agent: "Now playing Fight Club on your Apple TV"
Troubleshooting
Can't connect to Plex:
- Verify server is running
- Check URL (should be http://IP:32400, not https)
- Verify token is correct
- Check firewall settings
Client not found:
- Make sure Plex app is open on the client device
- Run
plexctl clients to see available clients
- Try cloud discovery (automatic fallback)
- Restart Plex app on client device
Playback fails:
- Verify client can play the content type
- Check client is still active (
plexctl clients)
- Try playing manually in Plex app first
- Check Plex server logs
Search returns no results:
- Verify content exists in your library
- Try broader search terms
- Check library is scanned and up-to-date
- Run
plexctl libraries to verify library access
Performance
- Local GDM discovery: ~100ms
- Cloud fallback discovery: ~500-1000ms
- Search: ~200-500ms depending on library size
- Playback start: ~500ms
- Control commands: ~100ms
All operations are direct Plex API calls โ no vision, no screenshots, no AI inference needed.
Differences from ClawTV
| Feature | plexctl | ClawTV |
|---|
| Plex control | โ
Direct API | โ
API + Vision |
| Apple TV remote | โ | โ
|
| Vision-based navigation | โ | โ
|
| Any streaming app | โ | โ
|
| Speed | โก Instant | ๐ข Slower (screenshots) |
| Dependencies | plexapi only | pyatv, Anthropic API, QuickTime |
| Use case | Plex-only control | Universal TV automation |
When to use plexctl: Fast, direct Plex control
When to use ClawTV: Complex navigation, non-Plex apps, vision-based automation