openclaw/skills/8sleep/SKILL.md
Control Eight Sleep Pod(s). Defaults to Crosstown (West Roxbury); pass `--location cabin` once the Cabin Pod is online. Use when asked about bed temperature, sleep tracking, sleep score, Eight Sleep, Pod, bed cooling/heating, or anything about the smart bed. Supports both sides — Dylan (left) and Julia (right). NOT for room thermostat (use nest-thermostat for that).
npx skillsauth add Dbochman/dotfiles 8sleepInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Control Eight Sleep Pod(s) via the Eight Sleep cloud API. Currently one Pod: Pod 3 (King) at Crosstown. A second Pod will be added at the Cabin.
| Location | Pod | Env var (optional) |
|----------|-----|--------------------|
| crosstown (default) | Pod 3 (King) at Crosstown | EIGHTSLEEP_CROSSTOWN_DEVICE_ID |
| cabin | (TBD — to be added) | EIGHTSLEEP_CABIN_DEVICE_ID |
Pass --location <name> (or -l <name>) before any subcommand to target a specific Pod. If unset, defaults to crosstown. Env vars are optional — when unset, the CLI falls back to whichever Pod is the account's "current device" (correct for single-Pod accounts).
Note: Eight Sleep's per-side endpoints (temp, off, on, away) are user-scoped and route to the user's "current device", not by explicit device ID. Once the Cabin Pod is online, verify these actually target the intended Pod — may need additional plumbing.
| Side | User | Position | |------|------|----------| | dylan | Dylan | Left | | julia | Julia | Right |
All temperature and sleep commands require specifying the side: dylan or julia.
8sleep status
Shows current temperature level, heating/cooling state, and water status for both sides.
8sleep temp dylan -30 # cool Dylan's side (~64F)
8sleep temp julia 20 # warm Julia's side (~87F)
8sleep temp dylan 0 # neutral (~81F)
8sleep off dylan # turn off Dylan's side (stop thermal unit)
8sleep off julia # turn off Julia's side
8sleep on dylan # turn on Dylan's side (resume smart schedule)
8sleep on julia # turn on Julia's side
off stops all heating/cooling immediately. on resumes the smart schedule.
8sleep away dylan start # enable away mode for Dylan
8sleep away julia start # enable away mode for Julia
8sleep away dylan end # disable away mode for Dylan (returning home)
8sleep away julia end # disable away mode for Julia
Away mode marks the user as absent — the pod stops all thermal activity for that side and adjusts sleep tracking accordingly. Use this for vacations or extended travel. For short absences (leaving the house for the day), prefer off/on instead.
| Level | Temp | Feeling | |-------|------|---------| | -100 | ~55F | Very cold | | -50 | ~70F | Cool | | -30 | ~64F | Slightly cool | | 0 | ~81F | Neutral | | +30 | ~87F | Warm | | +50 | ~97F | Very warm | | +100 | ~111F | Very hot |
Dylan prefers cool temperatures. Julia prefers warm.
8sleep sleep dylan # Dylan's last night
8sleep sleep julia # Julia's last night
8sleep sleep dylan 2026-03-21 # specific date
8sleep device
Shows model, serial, water level, connectivity, priming status.
Pod 3 ←─cloud─→ Eight Sleep API ←─HTTPS─→ 8sleep-api.py (Mac Mini)
Cloud-only — requires internet. No local network API. Auth via Dylan's account (household access covers both sides).
When Dylan or Julia asks about "my bed temperature" or "my sleep score":
dylanjuliaeightctlThe eightctl Go CLI is broken — it sends the wrong client_id and uses macOS keyring (which fails headless). Always use the 8sleep command (custom Python wrapper). Never go install, brew install, or otherwise install eightctl.
Too many auth attempts. Wait 5-10 minutes. Token is cached with refresh token support — should rarely need full re-auth.
Check the 8sleep wrapper config on Mac Mini (~/.openclaw/8sleep/ directory). Password was set via "Forgot Password" reset flow.
Eight Sleep API may have changed. Use 8sleep raw users/me for raw response.
development
Search the web for current information, news, facts, and answers. Use when asked questions about current events, needing to look something up, finding websites, researching topics, or when you need up-to-date information beyond your training data.
development
Summarize any URL, YouTube video, podcast, PDF, or file into concise text. Use when asked to read an article, summarize a link, get the gist of a video or podcast, extract content from a URL, or when you need to understand what a web page or document contains.
development
Play music via Spotify and control Google Home speakers. Use when asked to play music, songs, artists, playlists, podcasts, or control speakers/volume/audio.
testing
Create new OpenClaw skills, modify and improve existing skills, and measure skill performance with evals. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Also use when asked to "make a skill", "turn this into a skill", "improve this skill", or "test this skill".