OpenClaw · Skill
Govee Control
Control Govee devices using manual curl commands only.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install cole-z/govee-controlClawHub installer
npx clawhub@latest install cole-z/govee-controlOpenClaw CLI
openclaw skills install cole-z/govee-controlDirect OpenClaw install
openclaw install cole-z/govee-controlWhat this skill does
Control Govee devices using manual curl commands only.
Why it matters
Gives direct API access without requiring a Govee app, third-party integration, or custom scripts.
Typical use cases
- Turn smart lights on or off from the terminal
- Set room brightness before a video call
- Change light color to match an activity or mood
- Check whether a specific Govee device is currently on
- List all Govee devices linked to an account
Source instructions
Govee OpenAPI (No Scripts)
Control Govee devices using manual curl commands only.
Linux System Requirements
- Linux shell with
bashavailable. curlinstalled.- Internet access to
https://developer-api.govee.comandhttps://developer.govee.com. - Govee account with supported devices linked.
- Optional:
jqfor pretty-printing JSON responses.
Quick check:
bash --version | head -n 1
curl --version | head -n 1
command -v jq >/dev/null && jq --version || echo "jq not installed (optional)"
Required Credential
GOVEE_API_KEY(required)
Autonomous Use Guardrails
- Only read
GOVEE_API_KEYfrom your chosen per-user secrets file. - Do not read unrelated secret files or system credentials.
- Restrict outbound requests to:
https://developer-api.govee.comhttps://developer.govee.com
- Ask before controlling multiple devices or performing bulk changes.
Get a Govee API Key
- Open
https://developer.govee.com/. - Sign in with the same Govee account that owns your devices.
- Go to the API key section in the developer console.
- Generate/apply for a key and copy it.
- Keep it private (treat it like a password).
If the portal UI changes, use the same flow: sign in to Govee Developer → find API key management → create key.
Secure Local Storage (Per-User)
Never store API keys in skill files, git, or chat logs.
Create a per-user secrets file (avoid /root unless intentionally running as root):
mkdir -p "$HOME/.openclaw/secrets"
cat > "$HOME/.openclaw/secrets/govee.env" <<'EOF'
export GOVEE_API_KEY='<YOUR_API_KEY>'
EOF
chmod 600 "$HOME/.openclaw/secrets/govee.env"
Load only this variable into the current shell (no set -a):
source "$HOME/.openclaw/secrets/govee.env"
API Base URL
https://developer-api.govee.com/v1
Discover Devices First
Before controlling lights, list devices and copy your own device + model:
curl -sS -X GET "https://developer-api.govee.com/v1/devices" \
-H "Govee-API-Key: $GOVEE_API_KEY" \
-H "Content-Type: application/json"
View Device State
curl -sS -X GET "https://developer-api.govee.com/v1/devices/state?device=<DEVICE>&model=<MODEL>" \
-H "Govee-API-Key: $GOVEE_API_KEY" \
-H "Content-Type: application/json"
Control Commands
Turn on
curl -sS -X PUT "https://developer-api.govee.com/v1/devices/control" \
-H "Govee-API-Key: $GOVEE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"device":"<DEVICE>","model":"<MODEL>","cmd":{"name":"turn","value":"on"}}'
Turn off
curl -sS -X PUT "https://developer-api.govee.com/v1/devices/control" \
-H "Govee-API-Key: $GOVEE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"device":"<DEVICE>","model":"<MODEL>","cmd":{"name":"turn","value":"off"}}'
Brightness (1-100)
curl -sS -X PUT "https://developer-api.govee.com/v1/devices/control" \
-H "Govee-API-Key: $GOVEE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"device":"<DEVICE>","model":"<MODEL>","cmd":{"name":"brightness","value":75}}'
RGB color
curl -sS -X PUT "https://developer-api.govee.com/v1/devices/control" \
-H "Govee-API-Key: $GOVEE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"device":"<DEVICE>","model":"<MODEL>","cmd":{"name":"color","value":{"r":120,"g":180,"b":255}}}'
Response Check
Success usually returns:
{"code":200,"message":"Success"}
If code is not 200, treat it as failure.
Troubleshooting
401/ unauthorized: key missing, expired, or invalid.429/ rate limit: slow retries.- command rejected: model does not support that command (
supportCmds). - empty device list: account has no supported linked devices.
Safety Rules
- Use placeholders in docs only (
<DEVICE>,<MODEL>,<YOUR_API_KEY>). - Do not include real keys or device IDs in published artifacts.
- Prefer one-device-at-a-time actions over bulk changes.
- Avoid pasting API keys into chat.