framesmith-cli
Command-line tool for controlling Samsung Frame TVs over your local network — no cloud, no Samsung account.
Manage artwork, display settings, slideshows, mattes, filters, and more from your terminal. Powered by the framesmith library.
Installation
This installs the framesmith binary.
Quick Start
Find Your TV
Discovery uses SSDP multicast and only finds TVs on the same subnet.
Pair with the TV
# Approve the connection prompt shown on the TV screen
# Token is saved to ~/.framesmith/token (customize with -t/--auth-token-file)
Upload and Display Art
Tip: The TV hostname is the first argument by design — create an alias for TVs you use often:
Commands
Art Management
# List all images on the TV
# Show info for the currently displayed image
# Show info for a specific image
# Upload an image (optionally display it immediately)
# Upload, display, and delete the previous image
# Center a small image on a colored canvas
# Select / delete images
# Download a thumbnail
# Toggle favorite
Art Mode & Slideshows
Mattes & Filters
Display Settings
Motion Sensor
Remote Control
40+ buttons available: power, navigation, volume, channels, media playback, number keys, color keys, HDMI inputs, and more.
Device Info
Background Server
By default, the CLI routes commands through a background server process that holds a persistent WebSocket connection to the TV. This avoids the several-second connection setup (TLS handshake, auth exchange, protocol negotiation) on every invocation — once a server is running, commands execute nearly instantly.
The server starts automatically on the first command that needs it. Manage it explicitly with:
Direct Mode
Use --direct to bypass the background server and connect to the TV directly. Useful for scripting, one-off commands, or environments where background daemons are unwelcome.
Global Options
| Option | Description | Default |
|---|---|---|
-t, --auth-token-file <PATH> |
Path to the auth token file | ~/.framesmith/token |
--timeout <SECONDS> |
TV initial-connection timeout | 5 |
--direct |
Bypass background server, connect directly to TV | off |
--json |
Emit all output as JSON | off |
-v, --verbose |
Enable debug logging | off |
Network Requirements
- Your machine and the TV must be on the same subnet (or use SNAT masquerading for cross-VLAN setups)
- Ports 8001 (HTTP) and 8002 (WSS)
- The TV must be powered on or in Art Mode / standby with network standby enabled
Library
Looking for a Rust library? See framesmith.
License
MIT