Skill: 13681882136/kami-smarthome-suite (version 1.0.3)

--- name: kami-smarthome-suite description: "Kami SmartHome skill bundle. One-click installer for the entire Kami SmartHome ecosystem with centralized configuration (API key, cameras, notifications) — no more configuring each skill individually." version: 1.0.0 author: kami-smarthome tags: - smart-home - kami - smarthome - suite - bundle - camera - rtsp - detect - video - image-search - package-detection - fall-detection - conflict-detection - face-recognition - surveillance - security triggers: - kami smart home - kami smarthome suite - install kami skills - install all kami - smart home suite - kami home assistant - install kami suite - kami all skills - smart home bundle metadata: openclaw: requires: bins: - python3.10 hardware: cpu: "4+ cores (x86_64 / ARM64)" memory: "8 GB+" storage: "20 GB+" gpu: "optional (speeds up ONNX inference)" network: - "RTSP camera access (LAN)" - "Internet (KamiClaw API)" devices: - "RTSP IP camera" emoji: "🏠" --- # Kami SmartHome Suite ## Overview Kami SmartHome Suite is the one-stop installer for the **kami-smarthome** ecosystem. By installing this single skill, users get: 1. **Batch download** — install all 6 ecosystem skills from ClawHub in one go 2. **Guided configuration** — interactive setup for API key and notification channels; **all skills are ready to use immediately after configuration** 3. **Centralized config management** — to change anything later, edit one file and run `configure.sh --distribute` to sync > **Configure once, run everywhere** — one config file controls all skills. ## Included Skills This suite bundles the following 6 standalone skills: | # | Skill | Emoji | Description | Use case | |---|-------|-------|-------------|----------| | 1 | **kami-package-detection** | 📦 | Real-time package/parcel detection on RTSP streams using YOLO-World ONNX | Doorstep delivery alerts | | 2 | **kami-image-search** | 🔍 | Periodic frame capture + VLM captioning + FAISS index for natural-language image search | Search historical frames | | 3 | **kami-video-search** | 📹 | Continuous video segmentation + VLM scene description + natural-language clip search | Search historical clips | | 4 | **kami-fall-detection** | 🚨 | Frame-difference detection + KamiClaw cloud inference for fall events | Elder / lone-resident care | | 5 | **kami-conflict-detection** | 🥊 | Multi-person physical conflict (fight/shove) detection with event-driven alarm JSON | Security alerting | | 6 | **kami-suspicious-person** | 🕵️ | Stranger recognition via SCRFD + ArcFace, detects unregistered face loitering | Doorway / stranger-loiter alerts | ### Skill Map ``` kami-smarthome-suite (this skill — installer entry point) ├── kami-package-detection ── Package / delivery detection ├── kami-image-search ── Image search ├── kami-video-search ── Video recording & search ├── kami-fall-detection ── Fall detection (cloud API) ├── kami-conflict-detection ── Conflict / fight detection └── kami-suspicious-person ── Stranger / suspicious-person detection ``` ## Installation All Kami SmartHome skills are published on **ClawHub** and installed via `clawhub install`. ### Option 1: One-click install (recommended) ```bash # Install the suite clawhub install kami-smarthome-suite # Run setup.sh — auto-installs all 6 skills + guides centralized config bash {baseDir}/setup.sh ``` `setup.sh` performs: 1. One-shot install of all 6 Kami ecosystem skills from ClawHub 2. Detect / install Python 3.10: - **Debian/Ubuntu**: prefer conda → pyenv → system python3.10 (avoids `python3.10-venv` sudo dependency) - **Other systems**: prefer system python3.10 → pyenv → conda - If none found: auto-install (conda preferred → pyenv as fallback), no sudo required; only pyenv source build will ask for sudo when build-deps are missing 3. Interactive prompts for centralized config (API key, camera URL, notifications) 4. Auto-distribute the centralized config to each skill's local config files > Idempotent — re-running will not reinstall skills that are already present. ### Option 2: Install individually You can also install specific skills directly from ClawHub: ```bash clawhub install kami-package-detection clawhub install kami-image-search clawhub install kami-video-search clawhub install kami-fall-detection clawhub install kami-conflict-detection clawhub install kami-suspicious-person ``` After individual installs, run `bash {baseDir}/configure.sh` to apply unified configuration. ## Guided Setup (read this on first use) > **Agent behavior**: when this skill is triggered, follow this order: > 1. Check whether sub-skills are installed (any missing sub-skill directory means "not installed") → if missing, run `bash {baseDir}/setup.sh` > 2. Check whether `kamiclaw_api_key` is empty in `{baseDir}/kami_config.json` → if so, prompt the user > 3. If both checks pass, skip the wizard and execute the user's request directly ### Step 0: Install sub-skills - **Check**: look for sibling directories `kami-image-search`, `kami-video-search`, etc. next to `{baseDir}` - **If missing**: run the one-click install: ```bash bash {baseDir}/setup.sh ``` This script will: download all 6 sub-skills from ClawHub + create venvs + install dependencies - **If present**: skip and proceed to config check ### Step 1: Configure KamiClaw API key - **Check**: read the `kamiclaw_api_key` field from `{baseDir}/kami_config.json` - **If empty**: tell the user 4 of the 6 skills require an API key, and prompt for one - **How to obtain**: register at https://kamiclaw-skill.kamihome.com (free 200 credits) - API-dependent skills: image-search, video-search, fall-detection, conflict-detection - 2 fully-local skills (package-detection, suspicious-person) do not need an API key ### Step 2: Configure notification channels - **Check**: read the `notifications` section of `{baseDir}/kami_config.json` - **If all empty**: ask the user whether to set up alarm push (any combination is allowed) - **Supported channels** (alarm skills `fall-detection` / `conflict-detection` / `suspicious-person` push automatically when events fire): - **Feishu Webhook**: `feishu_webhook_url` (+ optional `feishu_webhook_secret` for signed webhooks) — supported by all 3 alarm skills - **Telegram Bot**: `telegram_bot_token` + `telegram_chat_id` — supported by all 3 alarm skills - **Discord Webhook**: `discord_webhook_url` (push-only) — supported by all 3 alarm skills - **Discord Bot**: `discord_bot_token` + `discord_channel_id` (two-way) — **fall-detection only** - All channels are optional; skipped channels just fall back to JSON output without push - ⚠️ Discord / Telegram may be unreachable from some regions. If a proxy is needed, set `HTTPS_PROXY` in your shell rc (e.g. `~/.bashrc`) yourself — **the suite intentionally does NOT manage proxy settings** ### Configuration complete → all skills ready After the user provides values: 1. Write the values back into the corresponding fields of `{baseDir}/kami_config.json` 2. Run distribution: ```bash bash {baseDir}/configure.sh --distribute ``` 3. After distribution: tell the user that all skills are ready to use ### Updating configuration later To change the API key or notification channels later: ```bash # Re-run the interactive wizard bash {baseDir}/configure.sh # Or edit directly and redistribute vim {baseDir}/kami_config.json bash {baseDir}/configure.sh --distribute ``` ## Prerequisites - `clawhub` CLI installed (used to pull skills from ClawHub) - Network access (for skill download + KamiClaw API calls from some skills) > **Python 3.10 is required**. `setup.sh` selects detection priority by OS family (Debian/Ubuntu prefers conda/pyenv; other systems prefer system python3.10) and auto-installs via conda when missing. Other dependencies are managed by each sub-skill. ## Hardware Requirements Recommended minimum hardware for each skill: | Skill | CPU | Memory (RAM) | Storage | GPU | Notes | |-------|-----|--------------|---------|-----|-------| | kami-package-detection | 2+ cores | 2 GB | 500 MB | not required | YOLO-World ONNX, CPU-only | | kami-image-search | 2+ cores | 2 GB | 5 GB+ | not required | FAISS index + SQLite frame history | | kami-video-search | 2+ cores | 2 GB | 10 GB+ | not required | Stores video segments, scales with retention | | kami-fall-detection | 1+ core | 1 GB | 200 MB | not required | Local does frame-diff only; inference runs in cloud | | kami-conflict-detection | 4+ cores | 4 GB | 1 GB | optional (accelerates) | Local YOLO person detection + multi-frame analysis | | kami-suspicious-person | 4+ cores | 4 GB | 1.5 GB | optional (accelerates) | SCRFD + ArcFace ONNX (~1 GB) | **Recommended config to run all 6 skills concurrently**: - CPU: 4+ cores (x86_64 / ARM64) - Memory: 8 GB+ - Storage: 20 GB+ free space - Network: stable connection (RTSP pull + API calls) - OS: Linux (Ubuntu 20.04+ recommended) > If you only enable a subset of skills, refer to the corresponding rows above. ## Centralized Configuration ### Design The suite uses a **central config + auto-distribute** model: ``` kami_config.json (Single Source of Truth) │ ▼ configure.py --distribute ├── kami-image-search/image_config.json ├── kami-video-search/stream_config.json ├── kami-fall-detection/config.json ├── kami-package-detection/config.json ├── kami-conflict-detection/config.json ├── kami-suspicious-person/config.json └── ~/.kami/credentials.json + cameras.json (cached for any skill) ``` ### Central config file `kami_config.json` Located in the suite directory, it contains the following sections: | Section | Description | Skills affected | |---------|-------------|-----------------| | `kamiclaw_api_key` | KamiClaw API key | The 4 cloud-API skills | | `cameras` | Map of named cameras (`name -> {stream_url}`) | All 6 skills (auto-distributed) | | `notifications` | Feishu / Telegram / Discord push settings | fall-detection, conflict-detection, suspicious-person | | `skills.<name>.cameras` | Per-skill camera selector: `[]` = all, `["front"]` = filter by name | Selects which cameras each skill receives | | `skills.<name>` | Per-skill tuning parameters | The corresponding skill | Edit this file once and every skill is configured. ### Multi-Camera Support The suite manages multiple cameras under the top-level `cameras` map. Give each camera a short, unique name (the dict key); each skill references cameras by that name. ```json { "cameras": { "front": { "stream_url": "rtsp://..." }, "back": { "stream_url": "rtsp://..." }, "garage": { "stream_url": "rtsp://..." } }, "skills": { "kami-image-search": { "cameras": [] }, // all cameras "kami-package-detection": { "cameras": ["front", "garage"] } // filter by name } } ``` > **Naming tip.** Use short, lowercase, meaningful names (room or location, e.g. `front`, `back`, `garage`). Names must be unique inside `cameras`. If you skip naming, the suite auto-assigns `cam1`, `cam2`, ... in order. > > - Interactive mode: the wizard asks for a name, press Enter to auto-assign. > - CLI mode: `--add-camera NAME=URL` (explicit) or `--add-camera URL` (auto-assigned). All 6 skills support native multi-camera: each selected camera runs as an independent background process. ### Usage ```bash # Mode 1: interactive wizard (prompts each field, supports add/edit/delete cameras) bash {baseDir}/configure.sh # Mode 2: set API key directly bash {baseDir}/configure.sh sk_live_xxxxxxxx # Mode 3: edit manually then distribute vim {baseDir}/kami_config.json bash {baseDir}/configure.sh --distribute # Mode 4: show current config bash {baseDir}/configure.sh --show # Mode 5: add / remove cameras non-interactively (repeatable) bash {baseDir}/configure.sh --add-camera rtsp://10.0.0.1/stream # auto-named cam1 bash {baseDir}/configure.sh --add-camera front=rtsp://10.0.0.1/stream # explicit name bash {baseDir}/configure.sh --remove-camera front ``` ### Distribution Map | Skill | Target file | Distributed fields | |-------|-------------|--------------------| | `kami-image-search` | `image_config.json` | `cameras: [{STREAM_URL, DEVICE_ID}, ...]` (all selected cameras), `KAMIVISION_API_KEY`, `CAPTURE_INTERVAL`, `RETENTION_DAYS` | | `kami-video-search` | `stream_config.json` | `cameras: [{STREAM_URL, DEVICE_ID}, ...]` (all selected cameras), `KAMI_API_KEY`, `SEGMENT_DURATION`, `RETENTION_DAYS` | | `kami-fall-detection` | `config.json` | `cameras: [{rtsp_url, name}, ...]` (all selected cameras), `api_key`, `feishu_webhook_url`, `telegram_bot_token`, `telegram_chat_id`, `discord_webhook_url`, `discord_bot_token`, `discord_channel_id`, `pre_seconds`, `post_seconds`, `save_alarm_clips` | | `kami-package-detection` | `config.json` | `cameras: [{rtsp_url, device_id}, ...]` (all selected cameras), `conf_threshold`, `run_time` (pure local inference, no API key) | | `kami-conflict-detection` | `config.json` | `cameras: [{rtsp_url, name}, ...]` (all selected cameras), `kami_api_key`, `feishu_webhook`, `discord_webhook`, `telegram_bot_token`, `telegram_chat_id` | | `kami-suspicious-person` | `config.json` | `cameras: [{rtsp_url, name}, ...]` (all selected cameras), `feishu_webhook`, `discord_webhook`, `telegram_bot_token`, `telegram_chat_id` (pure local inference, no API key) | > Power-user tip: each skill's argparse also accepts env vars (`KAMI_API_KEY`, `FEISHU_WEBHOOK_URL`, `TELEGRAM_*`, `DISCORD_WEBHOOK_URL`, `HTTPS_PROXY`) as a fallback. If you need an HTTPS proxy for Discord / Telegram, export `HTTPS_PROXY` in your shell rc — proxy settings are out of scope for `kami_config.json`. ### Integration with setup.sh `setup.sh` automatically enters the centralized config flow after installing all skills. If skipped, run `bash configure.sh` later anytime. ## Exit Codes | Exit code | Meaning | |-----------|---------| | `0` | All skills installed successfully | | `1` | Some skills failed to install (check logs) | | `2` | Prerequisite missing (no `clawhub`, or neither conda nor pyenv is usable and Python 3.10 cannot be installed) | ## Troubleshooting **`clawhub` CLI not available** ``` clawhub: command not found ``` → Install the ClawHub CLI first. **A skill failed to install** ``` [!] kami-xxx (failed, exit 1) ``` → Retry: `clawhub install kami-xxx` **KamiClaw API key not configured** → Run `bash configure.sh` or register at https://kamiclaw-skill.kamihome.com **Config changes have no effect** → After editing `kami_config.json`, run `bash configure.sh --distribute` to push the changes to each skill. ## Privacy Notice This suite involves camera streams, image capture and face recognition. Please review the following privacy notes before use: ### Cloud API calls - 4 skills depend on **KamiClaw API** (image-search, video-search, fall-detection, conflict-detection); 2 skills (package-detection, suspicious-person) run **fully locally** - Data sent to the cloud is used only for real-time inference and is **not persisted nor used for model training** - API traffic uses HTTPS encryption ### Local data storage - Captured frames, video segments, etc. are stored under each skill's working directory and can be cleaned manually - `image-search` and `video-search` honor a `retention_days` parameter for automatic expiry - The API key and camera list are cached in `~/.kami/` (mode 600, current user only) ### Face data (kami-suspicious-person) - The face feature database is built and matched fully locally — **nothing is uploaded to any server** - Files are stored under `face_db/`, fully under user control - Removing the `face_db/` directory wipes all face data ### User control - Users freely choose which skills to enable; disabled skills collect nothing - All camera URLs are user-supplied; skills do not auto-discover or auto-connect cameras - Users can stop a skill, delete local data, or revoke the API key at any time > Privacy policy details: https://kamiclaw-skill.kamihome.com/privacy


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)