Skip to main content

CLI for managing and controlling Shelly devices

Project description

shelly

A fast CLI for discovering, monitoring, and controlling Shelly smart home devices.

CI crates.io PyPI License: MIT

Features

  • Auto-discovery of Shelly devices on the local network (with subnet auto-detection)
  • Unified Gen1 + Gen2/Gen3 support (transparent protocol handling)
  • Multi-switch device support (e.g., Shelly 2.5 with dual relays)
  • Interactive watch dashboard with live power, temperature, WiFi monitoring -- and switch control
  • Energy consumption tracking (total kWh per device)
  • Detailed device info view (model, firmware, uptime, WiFi, temperature)
  • Device health checks (temperature, WiFi signal, firmware, uptime)
  • Device authentication (--password flag or config file)
  • Device groups with filter-based and name-based definitions
  • Firmware check and update across all devices
  • Config backup and restore with network-safe defaults
  • Schedule and webhook inspection (Gen2/Gen3)
  • Device renaming and configuration from the CLI
  • Structured JSON output for scripting and AI agent integration
  • Shell completions with dynamic device name suggestions (bash, zsh, fish)
  • Fuzzy device name matching with "did you mean?" suggestions
  • Color output with automatic detection

Install

uv (recommended)

uv tool install shelly-cli

Homebrew (macOS/Linux)

brew install rvben/tap/shelly-cli

pip

pip install shelly-cli

Cargo

cargo install shelly-cli

Pre-built binaries

Download from GitHub Releases.

Quick Start

# 1. Discover devices (auto-detects your subnet)
shelly discover

# 2. See what you found
shelly devices

# 3. Check device health
shelly health

Usage

Device control

shelly on "Kitchen Light"          # Turn on
shelly off "Kitchen Light"         # Turn off
shelly toggle -n "Living Room"     # Toggle
shelly status -n "Kitchen Light"   # Get status

Monitoring

shelly watch                       # Interactive dashboard
shelly health                      # Health check all devices
shelly power -a                    # Power usage for all devices
shelly energy -a                   # Total energy (kWh) per device
shelly info -n "Kitchen Light"     # Detailed device info

Device management

shelly rename -n "old-name" "New Name"    # Rename device
shelly firmware check -a                   # Check for updates
shelly firmware update -a                  # Update all firmware
shelly reboot -n "Kitchen Light"          # Reboot device

Configuration

shelly config get -n "Kitchen"                  # Get device config (JSON)
shelly config get -a                            # Get config for all devices
shelly config set -n "Kitchen" eco_mode true    # Set a config value
shelly config set -n "Kitchen" name "New Name"  # Rename via config

Supported config keys: name, eco_mode, led_status_disable.

Backup and restore

shelly backup -n "Kitchen"         # Backup single device
shelly backup -a                   # Backup all devices to shelly-backups/
shelly backup -a -o ~/backups      # Custom output directory

shelly restore -n "Kitchen" shelly-backups/kitchen-2025-01-15.json

Restore skips network/WiFi/MQTT/cloud settings to avoid bricking devices.

Schedules and webhooks

shelly schedule list -n "Kitchen"  # View device schedules (Gen2/Gen3)
shelly schedule list -a            # View all device schedules

shelly webhook list -n "Kitchen"   # View device webhooks
shelly webhook list -a             # View all device webhooks

Groups

shelly group add lights "Kitchen" "Living Room" "Bedroom"
shelly group list
shelly group show lights
shelly -g lights off               # Turn off all lights
shelly -g lights status            # Status of all lights
shelly -g gen3 firmware check      # Check firmware for Gen3 devices

Authentication

For devices with authentication enabled:

# Per-command
shelly --password "secret" status -a

# Or set in config file (~/.config/shelly-cli/config.toml)
# [auth]
# password = "secret"

Shell completions

# Generate completions (includes dynamic device name suggestions)
shelly completions zsh > ~/.zfunc/_shelly    # zsh
shelly completions bash > /etc/bash_completion.d/shelly  # bash
shelly completions fish > ~/.config/fish/completions/shelly.fish  # fish

# After installing, tab-complete device names:
# shelly -n <TAB>  →  "Kitchen Light"  "Living Room"  "Bedroom Fan"
# shelly -g <TAB>  →  "lights"  "gen1"  "gen3"

Agent Integration

Designed for scripting and AI agent use with structured, machine-readable output.

# Structured JSON output (auto-enabled when piped)
shelly status -a | jq '.data'

# Consistent envelope: {"ok": true, "data": ...} or {"ok": false, "error": {...}}
shelly -n "nonexistent" status
# {"ok": false, "error": {"code": "DEVICE_NOT_FOUND", "message": "..."}}

# Machine-readable schema with types, targeting docs, and error codes
shelly schema

Error codes: DEVICE_NOT_FOUND, DEVICE_UNREACHABLE, AUTH_REQUIRED, NETWORK_ERROR, INVALID_INPUT, GROUP_NOT_FOUND, NO_CACHED_DEVICES, PARTIAL_FAILURE.

Groups Configuration

Groups are defined in a TOML file:

# ~/.config/shelly-cli/groups.toml (Linux)
# ~/Library/Application Support/shelly-cli/groups.toml (macOS)

[groups]
lights = ["Kitchen Light", "Living Room Light", "Bedroom Light"]
gen1 = { filter = "gen1" }
gen3 = { filter = "gen3" }
all = { filter = "all" }

Or manage via CLI: shelly group add, shelly group remove, shelly group show.

Supported Devices

Generation Examples Status
Gen1 Shelly 1, 1PM, 2.5, Plug S, Dimmer Supported (switch, power, firmware, config)
Gen2 Shelly Plus 1, Plus 1PM, Plus 2PM Supported (switch, power, firmware, config, schedules, webhooks)
Gen3 Shelly Mini 1PM G3, Plus series G3 Supported (switch, power, firmware, config, schedules, webhooks)

License

MIT License -- see LICENSE file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shelly_cli-0.1.10.tar.gz (59.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

shelly_cli-0.1.10-py3-none-win_amd64.whl (5.6 MB view details)

Uploaded Python 3Windows x86-64

shelly_cli-0.1.10-py3-none-manylinux_2_28_x86_64.whl (6.1 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

shelly_cli-0.1.10-py3-none-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

shelly_cli-0.1.10-py3-none-macosx_11_0_arm64.whl (5.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

shelly_cli-0.1.10-py3-none-macosx_10_12_x86_64.whl (5.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file shelly_cli-0.1.10.tar.gz.

File metadata

  • Download URL: shelly_cli-0.1.10.tar.gz
  • Upload date:
  • Size: 59.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for shelly_cli-0.1.10.tar.gz
Algorithm Hash digest
SHA256 1dade7c74cf1334f3e1f690d6b519e08953c1a80c26605b6f66a3a683f7e9e64
MD5 383fefc22c5de493462ce4dd886b05c3
BLAKE2b-256 97d1da09f992f28472602126ecf19c43d6378e6908c058a840797175b97a88e4

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.10-py3-none-win_amd64.whl.

File metadata

  • Download URL: shelly_cli-0.1.10-py3-none-win_amd64.whl
  • Upload date:
  • Size: 5.6 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for shelly_cli-0.1.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2c804f7294a1f02232638d7424ceecf8323cc966a8581a920da13d6b3e0dc70b
MD5 e1b15567eae9adbf75bfe30caea1c3fb
BLAKE2b-256 3792896dbad5f0d9a2bf3c2513e55bab86b02443c39fd773e1a147340f7a0380

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.10-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for shelly_cli-0.1.10-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e28771dac866ae41aba9453c98e3b6e9977c43fdb7c53b1abf9a8ac7e693f7f
MD5 0370526339d64bea0e08a2a1c8b26056
BLAKE2b-256 3476d8cdc76125e42e810e75004e8b567ab3e6405ef7697cd0d396b0307b40c0

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.10-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for shelly_cli-0.1.10-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cda40c09f3cbf78d64008e06ecb8dc6174e4470bee57efc6b9bf6a9218d96978
MD5 a712ec0d68fc8ce654c2a7b86a8e6b3b
BLAKE2b-256 b2031a254f4eda5cad737c6992c42631a54cb95c70a9a297d834b5405d9c36bf

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.10-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for shelly_cli-0.1.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2c97ff6cc9b01a9f220f8b6be720307465e55ea4501c3f64dc6ad9c49e07fd5
MD5 61f15a41bd80d390e123cb277c0b4104
BLAKE2b-256 052cc944695b4095a7f2655dd22b42a8afa885f16564071e4b36e6c2dc8aefea

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.10-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for shelly_cli-0.1.10-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 56b8c10c1d155bef11a09130d9e8d641071956acfcefc970500b4d9b82eb67a3
MD5 d3dce7ea10643326e9509ccd07dd3e48
BLAKE2b-256 499c21944aea1825671b168418b316f735fda3cb1a76242e77986e34d427b2be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page