Install
openclaw skills install tapo-cameraConnect to Tapo cameras, verify local access, capture snapshots, and inspect frames with local-first RTSP workflows and safe fallbacks.
openclaw skills install tapo-cameraUse this skill when the user wants an agent to connect to their own Tapo cameras on a trusted local network, verify camera reachability, take still captures, and inspect the resulting frames without defaulting to cloud workflows.
This skill is for local camera operations, not general surveillance design. Keep it scoped to user-owned cameras, explicit capture requests, and reversible local workflows.
Memory lives in ~/tapo-camera/. If ~/tapo-camera/ does not exist, run setup.md. See memory-template.md for structure.
~/tapo-camera/
├── memory.md # activation boundaries, preferred capture defaults, and trust limits
├── cameras.md # hostnames, labels, model notes, and stream capabilities
├── sessions/
│ └── YYYY-MM-DD.md # capture attempts, failures, and what worked
├── captures/
│ └── ... # user-approved local stills only
└── incidents.md # auth, network, RTSP, and model-specific failure notes
Only create cameras.md, sessions/, captures/, or incidents.md if the user wants persistent local state.
| Topic | File |
|---|---|
| Setup and activation behavior | setup.md |
| Memory schema and status values | memory-template.md |
| Camera inventory template | cameras.md |
| Incident log template | incidents.md |
| Discovery, auth, and capability checks | discovery-and-auth.md |
| Local still-capture and review flows | snapshot-workflows.md |
| Unofficial API fallback boundary | api-fallback.md |
| Failure diagnosis and recovery order | troubleshooting.md |
| Local capture helper | tapo-capture.py |
python3python-kasa and its kasa CLI for local discovery, device state, and camera module accessffmpeg for one-frame JPEG capture from RTSPTAPO_CAMERA_USERNAME, TAPO_CAMERA_PASSWORD, or KASA_CREDENTIALS_HASHTreat Tapo credentials and KASA_CREDENTIALS_HASH as secrets. Never paste them into chat, commit them to files, or print them back to the user.
Use local notes only when they improve repeatability:
cameras.md for camera labels, hosts, model quirks, and stream capability notesincidents.md for recurring auth, RTSP, ONVIF, or firmware regressionscaptures/ folder for user-approved still images onlypython-kasa and the kasa CLI for discovery, auth validation, and camera capability checks.ffmpeg, but it should not print that URL unless the user explicitly asks.~/tapo-camera/captures/ or another explicit destination.kasa cannot expose a camera module or RTSP URL, check model support, privacy mode, and third-party compatibility before changing approach.| Trap | Why It Fails | Better Move |
|---|---|---|
| Treating every Tapo device like a direct RTSP camera | Hub children and some battery devices do not expose the same local stream surface | Identify device class first, then choose RTSP, ONVIF, or API fallback |
| Printing the full RTSP URL into logs | That leaks camera credentials into history and shared output | Keep URLs redacted by default and only reveal them on explicit request |
| Using cloud login assumptions for local capture | Local device auth and camera account setup are separate in practice | Verify the camera account and third-party compatibility state first |
| Jumping straight to repeated frame pulls | Harder to debug and easier to cross privacy boundaries | Prove one still capture before any loop or batch job |
| Storing captures and credentials together | Raises the blast radius if the local folder is copied or synced | Keep images and secrets separate, and never persist secrets in ~/tapo-camera/ |
| Endpoint | Data Sent | Purpose |
|---|---|---|
https://{camera-host} | local camera authentication and feature queries | local device connection through python-kasa |
rtsp://{camera-host}:554/stream1 or stream2 | local camera credentials and stream request | still capture via ffmpeg from the LAN stream |
http://{camera-host}:2020/onvif/device_service | local device-service requests | ONVIF capability checks when enabled on the camera |
No third-party endpoint is part of the default workflow.
Data that may leave your machine:
Data that stays local:
~/tapo-camera/This skill does NOT:
~/tapo-camera/ for memoryThis skill ONLY:
This skill NEVER:
Install with clawhub install <slug> if user confirms:
cameras - broader camera capture and review workflows outside the Tapo-specific laneffmpeg - deeper frame extraction, transcoding, and media inspection once capture workssmart-home - ecosystem-level device coordination and automation planningiot - local-device debugging and network-aware connector reasoningphotos - organize and inspect saved captures after acquisitionclawhub star tapo-cameraclawhub sync