roku
by @gumadeiras
Control Roku devices via CLI. Discovery, remote control, app launching, search, and HTTP bridge mode for real-time control.
clawhub install rokuπ About This Skill
name: roku description: Control Roku devices via CLI. Discovery, remote control, app launching, search, and HTTP bridge mode for real-time control. homepage: https://github.com/gumadeiras/roku-cli repository: https://github.com/gumadeiras/roku-cli metadata: {"clawdbot":{"emoji":"πΊ","requires":{"bins":["roku"]},"install":[{"id":"node","kind":"node","package":"roku-ts-cli","bins":["roku"],"label":"Install Roku CLI (npm)"}]}}
Roku CLI
Fast TypeScript CLI for controlling Roku devices via the ECP API.
Installation
npm install -g roku-ts-cli@latest
Quick Start
# Discover devices and save an alias
roku discover --save livingroom --index 1Use the alias
roku --host livingroom device-info
roku --host livingroom apps
Commands
| Command | Description |
|---------|-------------|
| roku discover | Find Roku devices on network |
| roku --host | Get device info |
| roku --host | List installed apps |
| roku --host | Send remote key |
| roku --host | Type text |
| roku --host | Search content |
| roku --host | Launch app |
| roku --host | Interactive remote mode |
Interactive Mode
roku livingroom # interactive control
roku --host livingroom interactive # same thing
Use arrow keys, enter, escape for remote-like control.
Bridge Service
Run a persistent HTTP bridge as a native OS service:
# Install and start the service
roku bridge install-service --port 19839 --token secret --host livingroom --user
roku bridge start --userService management
roku bridge status --user
roku bridge stop --user
roku bridge uninstall --user
Send commands via HTTP:
# Send key
curl -X POST http://127.0.0.1:19839/key \
-H "Content-Type: application/json" \
-H "Authorization: Bearer secret" \
-d '{"key":"home"}'Type text
curl -X POST http://127.0.0.1:19839/text \
-H "Content-Type: application/json" \
-H "Authorization: Bearer secret" \
-d '{"text":"hello"}'Launch app
curl -X POST http://127.0.0.1:19839/launch \
-H "Content-Type: application/json" \
-H "Authorization: Bearer secret" \
-d '{"app":"plex"}'Health check
curl http://127.0.0.1:19839/health -H "Authorization: Bearer secret"
Bridge Endpoints
| Endpoint | Body |
|----------|------|
| POST /key | {"key": "home"} |
| POST /text | {"text": "hello"} |
| POST /search | {"title": "Stargate"} |
| POST /launch | {"app": "plex"} |
| GET /health | β |
| GET /health?deep=1 | Deep health check (probes Roku) |
Aliases
# Save device alias
roku discover --save livingroom --index 1
roku alias set office 192.168.1.20Save app alias
roku alias set plex 13535List aliases
roku alias listUse aliases
roku --host livingroom launch plex
Remote Keys
home, back, select, up, down, left, right, play, pause, rev, fwd, replay, info, power, volume_up, volume_down, mute
Notes
--user flag for user-space service (no sudo required)--token for authentication in bridge modeSource
https://github.com/gumadeiras/roku-cli
π‘ Examples
# Discover devices and save an alias
roku discover --save livingroom --index 1Use the alias
roku --host livingroom device-info
roku --host livingroom apps
π Tips & Best Practices
--user flag for user-space service (no sudo required)--token for authentication in bridge mode