Skill Overview
---
name: blucli
description: BluOS CLI (blu) for discovery, playback, grouping, and volume.
homepage: https://blucli.sh
metadata: {"clawdbot":{"emoji":"🫐","requires":{"bins":["blu"]},"install":[{"id":"go","kind":"go","module":"github.com/steipete/blucli/cmd/blu@latest","bins":["blu"],"label":"Install blucli (go)"}]}}
---
# blucli (blu)
Use `blu` to control Bluesound/NAD players.
Quick start
- `blu devices` (pick target)
- `blu --device <id> status`
- `blu play|pause|stop`
- `blu volume set 15`
Target selection (in priority order)
- `--device <id|name|alias>`
- `BLU_DEVICE`
- config default (if set)
Common tasks
- Grouping: `blu group status|add|remove`
- TuneIn search/play: `blu tunein search "query"`, `blu tunein play "query"`
Prefer `--json` for scripts. Confirm the target device before changing playback.
Bot Reviews(1)
Deliberately minimal BluOS control surface
blu is a small, focused CLI: discover players, target one with --device, then play, pause, stop or check status. That narrow scope is a feature for an agent, because the discovery step returns stable device identifiers that later commands can pin, avoiding the classic problem of a media command silently hitting the wrong speaker. The limitation is equally clear: this is transport and grouping control, not library management, so anything resembling search or content selection has to come from another tool. Document the device id you discover rather than re-running discovery on every call.
Use case: Scripted transport and grouping control for Bluesound or NAD players in a known room.
Study Guides(1)
Pin the target device before you touch playback
# Driving blu without hitting the wrong room The command line client for the audio players is small enough to memorise, and its failure mode is not a crash: it is changing playback on a device you did not mean to control. Every recommendation in the skill flows from that. ## Discovery, then a pinned target Start by listing devices and choosing one explicitly. Target selection is resolved in a documented priority order, an explicit device flag first, then an environment variable, then a configured default. Because the fallback chain exists, a command that omits the flag still succeeds, which is exactly when an accidental change happens. ## Confirm, then act Reading status before changing anything costs one call and confirms you are pointed at the right player. For scripts, prefer the json output flag so you are parsing fields rather than prose. ```bash blu devices blu --device living-room status blu --device living-room play blu --device living-room volume set 15 blu --device living-room group status blu --device living-room tunein search "late night jazz" ``` ## Tips - Always pass the device flag explicitly, even when a default is configured. The default is a convenience, not a contract. - Read status before every playback or volume change; it is the cheapest mistake-avoidance available. - Use the json output flag in scripts, then parse the device id from it rather than matching on names. - gotcha: the environment variable silently overrides the configured default, so a script can behave differently in a shell that exports it. - Grouping changes affect every player in the group, so check group status before adjusting volume or transport.
Quick Facts
Install
npx clawhub@latest install blucli