# 2026-01-30 ## Room Presence - WORKING! - **Status**: Connected! livingroom-pi (192.168.0.95) running room-assistant - **MQTT**: HA broker found Pi immediately - **Entities**: `cluster_leader` and `cluster_size` appeared in HA - **Phone**: B0:C2:C7:07:28:B4 paired with Pi (motorola razr 2024) - **Next**: Add phone MAC to config, complete npm install, test device tracking ## Obsidian CLI - **obsidian-cli**: Installed via Scoop, vault set - **Location**: `C:\Users\admin\clawd\skills\obsidian\` - **Pending**: Researching sync approach with SQL backend ## Skills Installed (10 total) | Skill | Purpose | |-------|---------| | auto-updater | Daily auto-update skill | | clean-code | Clean code principles | | coding-agent | Codex/Claude Code CLI runner | | clawdbot-backup | Backup/restore Clawdbot | | home-assistant | HA REST API integration | | memory-to-obsidian | Sync notes to Obsidian | | qbittorrent | Torrent management | | radarr | Movie automation | | skills-search | Search skills.sh | | sonarr | TV show automation | ## Backup System - **Location**: `P:\Clawdbot-Backups\` - **Script**: `C:\Users\admin\clawd\backup-clawdbot.ps1` - **Schedule**: Daily at 2 AM via cron job ## Downloads Integration (VPN machine) - qbittorrent, sonarr, radarr all installed - Config location: `~/.clawdbot/credentials/` ## SSH to Pi - **IP**: 192.168.0.95 / admin / 41945549 - **Windows SSH quirk**: ed25519 keys not working properly - **Workaround**: Run SSH commands in user's terminal directly ## Reference Links - **MoltDirectory**: https://moltdirectory.com/ - 672 skills, 28 categories for Molt/Clawdbot agents - **ClawdHub**: https://clawdhub.com/ - OpenClaw skills registry - **Awesome OpenClaw Skills**: https://github.com/VoltAgent/awesome-openclaw-skills - Community-curated skill list ### OpenClaw Branding History - **Clawdbot** → Original name, still used for personal instances - **MoltBot** → Platform name during development - **OpenClaw** → Current open-source branding - **Just branding** — Architecture and skills remain compatible across all names --- ## SQL-Based Storage Project (IN PROGRESS) ### Completed Tonight - **MySQL Installed**: C:\web\mysql\ (MariaDB 10.4.32) - **Database Created**: `clawdbot_projects` - **Tables Created**: - `daily_notes` - Raw logs from memory files - `long_term_memories` - Curated knowledge (16 entries) - `action_items` - Task tracking (6 entries) - `backup_logs` - Backup history - `sessions` - Session history - **User Created**: `AlexAI` / `alexisabignerd` - **Schema File**: `C:\Users\admin\clawd\schema-detailed.sql` (8.8KB with full documentation) - **Credentials File**: `C:\Users\admin\clawd\.clawdbot\credentials\mysql.json` ### Quick Reference ``` Host: localhost:3306 Database: clawdbot_projects User: AlexAI Password: alexisabignerd ``` ### Example Queries ```sql -- Find all HA-related memories SELECT * FROM long_term_memories WHERE JSON_CONTAINS(tags, '"ha"'); -- Show pending action items by priority SELECT * FROM action_items WHERE status = 'pending' ORDER BY priority DESC; -- Check backup history SELECT * FROM backup_logs ORDER BY timestamp DESC LIMIT 10; ``` **Idea:** Use SQL as central data layer for automation and tracking ### Proposed Architecture - **SQL Database**: Central fact store and query engine - **Sources**: Room-assistant, HA, Clawdbot, downloads stack - **Output**: SQL → Obsidian markdown exports ### Possible Use Cases 1. **Room Presence & Phone Tracking** - Store BLE/RFID presence events in SQL - Query daily/weekly summaries (time present, patterns) - Export to Obsidian for analysis - Track Kathy + Corey's presence separately 2. **Home Assistant State History** - Query `home_assistant_v2.db` (SQLite) - Track entity changes, on/off patterns - Generate occupancy reports - Detect anomalies (devices stuck on/off) 3. **Clawdbot Memory → SQL Mirror** - Mirror memory files in SQL tables - Complex queries (tags + date ranges + keyword search) - Faster lookups than file scanning - Historical versioning built-in 4. **Downloads & Media Stack** - Track sonarr/radarr history - Monitor download success/fail rates - Export "watchlist" to Obsidian 5. **Backup & System Logs** - SQL table for backup logs (success, duration, size) - System metrics (CPU, memory, disk over time) - Alert thresholds based on SQL queries ### Technical Notes - **MySQL** for central database - **Apache** for web server - **Python/Flask or PHP** for web apps - **HA Custom Plugin** (Python) to query MySQL natively in HA dashboards - **HA Integration Options**: - Custom `sensor` entities from SQL queries - Custom dashboard cards showing SQL data - Automatic entity creation from presence tracking - Real-time updates on HA dashboard - **PowerShell**: `MySql.Data` library or `mysql` CLI - **Obsidian CLI** for markdown export after SQL queries - **Apache** can serve HTML dashboards showing SQL data - **Tinker/Flask** for Python-based web apps - Use XAMPP or standalone install for AMP stack ### Proposed Architecture ``` ┌─────────────────────────────────────────────────┐ │ Home Assistant Dashboard │ │ (Native HA cards + custom plugin sensors) │ ├─────────────────────────────────────────────────┤ │ Custom HA Plugin (Python) │ │ - Queries MySQL │ │ - Creates HA entities │ │ - Real-time updates │ ├─────────────────────────────────────────────────┤ │ MySQL Database │ ├─────────────────────────────────────────────────┤ │ Room-Assistant │ Downloads │ Clawdbot │ └─────────────────────────────────────────────────┘ ``` ### HA Plugins to Consider 1. **SQL Sensor Plugin** - Generic SQL → HA sensor 2. **Room Presence Tracker** - Phone BLE → SQL → HA entity 3. **Media Library Dashboard** - Sonarr/Radarr stats 4. **Clawdbot Memory Cards** - Show today's memory on HA --- ## Action Items - [ ] Verify room-assistant phone tracking works - [ ] Add Kathy's phone to room-assistant config - [ ] Replace Master Hallway motion sensor battery (1%) - [ ] Clone SD card for more Pis after first Pi fully working - [ ] **Update HA Dashboard** with frontend-design style - [x] Set MySQL root password for security ✅ - [x] Create non-root user for Clawdbot (AlexAI/alexisabignerd) ✅ --- ## AI Art/Video Generation Project (PLANNING) ### Hardware - **GPU**: RTX 5090 (24GB VRAM) — perfect for FLUX, SDXL - **Storage**: Install 4TB NVME for models and outputs - **RAM**: 32GB available for batching ### Software Stack - **ComfyUI** — Node-based workflow editor - Supports SDXL, FLUX, AnimateDiff, SVD - Highly extensible, free, local - **MySQL** — Track generation history - Table: `generation_history` (prompt, settings, seed, model, timestamp, output_path) - Query prompts by style, model, date range - **Apache/PHP** — Web UI for triggering generations (optional) ### Database Schema (Proposed) ```sql CREATE TABLE generation_history ( id INT AUTO_INCREMENT PRIMARY KEY, prompt TEXT NOT NULL, negative_prompt TEXT, model VARCHAR(100), width INT, height INT, steps INT, cfg_scale DECIMAL(4,2), seed BIGINT, sampler VARCHAR(50), output_path VARCHAR(500), generation_time_seconds DECIMAL(8,2), vram_used_gb DECIMAL(4,2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, tags JSON, rating INT -- 1-5 personal rating ); ``` ### Future Features - Browse generation history by prompt/search - "Retry with variations" based on successful generations - Export favorites to Obsidian - Track cost savings vs API services --- ### Resources - ComfyUI: https://github.com/comfyanonymous/ComfyUI - FLUX.1 Models: https://blackforestlabs.ai/ - Stable Diffusion: https://stability.ai/stable-diffusion --- ## ComfyUI Installation (COMPLETED) ### Installed Location - **Path**: `C:\ComfyUI\ComfyUI` - **Version**: 0.3.67 with ComfyUI-Manager V3.37 - **Python**: 3.12.10 with PyTorch 2.7 nightly ### GPU Configuration - **Flag**: `--highvram` for RTX 5090 (24GB) - **PyTorch**: Nightly build with CUDA 12.4 for Blackwell (sm_120) support - Note: sm_120 warning appears but doesn't affect functionality ### Quick Launch - **Script**: `C:\ComfyUI\launch_comfyui.bat` - **URL**: `http://[PC-IP-ADDRESS]:8188` (network access enabled) ### Models to Download Place all in `C:\ComfyUI\ComfyUI\models\checkpoints\` | Model | Size | Link | |-------|------|------| | FLUX.1-schnell (FP8) | ~4GB | https://huggingface.co/Comfy-Org/flux1-schnell | | SDXL Base 1.0 | ~6GB | https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0 | | SD 1.5 | ~4GB | https://huggingface.co/CompVis/stable-diffusion-v-1-4-original | ### Files Created - `C:\ComfyUI\launch_comfyui.bat` - Launcher with `--listen 0.0.0.0` - `C:\ComfyUI\COMFYUI_README.md` - Full documentation - `C:\ComfyUI\ComfyUI\download_models.bat` - Download instructions ### Known Issues - PyTorch sm_120 compatibility warning (non-breaking) - torchaudio missing (not needed for images) --- ## Home Focus (2026-02-02) Office covered by Hank. Back to home priorities: **Current Home Projects:** - Room-assistant (phone tracking verification) - ComfyUI setup + model downloads - MySQL/Apex dashboard refinement - Home automation integration **Action Items Updated:** ### Goal Enable natural language queries against databases with smart clarification when results are empty. Users ask questions in plain English; Clawdbot generates queries, executes them, and presents results conversationally. ### Architecture: Orchestrated Agent Pipeline **Use Clawdbot's sub-agent system for multi-stage processing:** ``` Main Session → Search Orchestrator │ ┌───────────┼───────────┐ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ Intent │ │ Structured│ │ Vector │ │ Parser │→│ Search │→│ Search │ └──────────┘ │ (MSSQL) │ │ (Qdrant) │ └──────────┘ └──────────┘ │ ▼ ┌──────────────────┐ │ Result Synthesizer │ └──────────────────┘ │ ▼ Main Session Response ``` ### Database Stack (Office Clone) | Database | Type | Purpose | |----------|------|---------| | **MSSQL** | Relational | Exact queries, aggregations, relationships | | **Qdrant** | Vector DB | Semantic search, similarity, "find similar" | | **Context Docs** | JSON/Markdown | Schema docs, example queries, agent prompts | ### Key Files Available - **Schema documentation** — For agent context - **User queries** — Collected examples to train/reverse-engineer intent - **Context data** — Per-table, per-column documentation ### Features 1. **Orchestrated Agents** (sub-agent pipeline) - Intent Parser — Detect what user wants - Structured Search Agent (MSSQL) — Exact/relational queries - Vector Search Agent (Qdrant) — Semantic similarity - Result Synthesizer — Combine and present naturally - Each agent: isolated, timeout-able, retry-able 2. **Natural Language → SQL** - Parse user intent from NL - Generate valid MSSQL queries - Handle WHERE, JOIN, ORDER BY, LIMIT 3. **Smart Result Handling** - SUCCESS: Present results naturally (tables, summaries, bullet lists) - EMPTY: Clarifying questions instead of "No results found" - MULTI-AMBIGUOUS: Ask which interpretation 4. **Clarification Examples** - "No results for 'orders' — did you mean 'transactions'?" - "50,000 rows found — limit, summarize, or export?" - "I found similar customers in Qdrant. Want their order history from MSSQL?" 5. **Schema Awareness** - Use existing schema docs as agent context - Cache table structures per session - Learn from user corrections ### Workflow Example ``` User: "Show me customers like the one who bought 500 widgets" 1. Intent Parser: Detect "find similar" pattern 2. Vector Agent: Find similar customer profiles in Qdrant 3. SQL Agent: Get recent orders for similar customers in MSSQL 4. Synthesizer: "I found 12 similar customers with X characteristics..." ``` ### Architecture ``` User: "Show me all users who bought X last month" ↓ ┌─────────────────────────────────────────┐ │ Intent Parser │ │ - Extract entities, dates, filters │ │ - Detect aggregation vs lookup │ └─────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Query Generator │ │ - Build SQL based on intent │ │ - Apply optimizations / limits │ └─────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Executor │ │ - Run query (with timeout/caching) │ │ - Handle errors gracefully │ └─────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Response Handler │ │ - Format results naturally │ │ - Handle empty → clarifying response │ │ - Pagination for large results │ └─────────────────────────────────────────┘ ↓ User: "Here's the data" OR "Hmm, did you mean X?" ``` ### Technical Notes - MySQL for local data - Apache serving dashboard - Skills available for various tasks --- ## Action Items ### Use Cases (Brainstorming) | Agent | Type | Trigger | |-------|------|---------| | **Network Monitor** | Long-running | Ping sweep every 30s, detect down hosts | | **Inventory Alert** | Cron-prompted | Check inventory levels, warn if below threshold | | **Shipping/Receiving** | Webhook | Notify when shipment received | | **System Health** | Cron-prompted | CPU, memory, disk alerts | | **Database Anomaly** | Cron-prompted | Query patterns, slow queries, connection spikes | ### Agent Archetypes **1. Long-Running Stateful Agent** - Stays awake, maintains context - Polls continuously, remembers last state - Use: Network monitoring, system health **2. Cron-Prompted Agent** - Wakes on schedule, checks condition, sleeps - Use: Daily inventory checks, weekly reports **3. Webhook-Triggered Agent** - Spawned by external event - Use: Shipping notifications, instant alerts ### Example: Inventory Monitor Agent ``` Trigger: Cron every 15 min (or webhook from ERP system) Task: "Check inventory items where quantity < reorder_level" Logic: - Query: SELECT item, quantity, reorder_level FROM inventory - Filter: WHERE quantity < reorder_level - If items found: Alert user via Discord/Slack - If empty: Do nothing, sleep until next cycle ``` ### Example: Network Monitor Agent ``` Trigger: Spawn as persistent agent Task: "Ping 192.168.1.0/24 subnet every 30s" Logic: - Maintain state of known hosts - On state change (up/down): Notify - Weekly summary: "Network was 99.7% uptime" ``` ### Benefits of Agent-Based Monitoring - **Automation**: No manual checkbox checking - **Alerts**: Proactive notification vs reactive discovery - **History**: Track when issues started/stopped - **Scalability**: Add new monitors by spawning new agents ### Implementation Notes - Use cron for scheduled checks (`cron` tool) - Use webhooks for event-driven (`api/webhooks.php`) - Use `sessions_spawn` with `cleanup=delete` for short-lived agents - Use long-running process for stateful monitors --- ### Future Enhancements - **Query Explainer**: "I found 50 orders by showing you the SQL..." - **Saved Queries**: Let users name and reuse common searches - **Export Options**: "Export these 100 rows to CSV?" - **Voice Support**: "Hey Clawdbot, show me..." - **Multi-Database**: Single query spanning both MSSQL and Qdrant --- ## Multi-User Architecture (PROJECT EXTENSION) ### Goal Support multiple users with individual identities, preferences, and context when deployed to office Slack. ### Slack Integration Context - **Platform**: Slack (primary office communication) - **User IDs**: Slack format (U01XXXXXXXXXX) - **Identity Files**: Each user has dedicated context file - **Routing**: Load user-specific context based on Slack user ID ### User Identity Structure ``` memory/ ├── USER.md # Corey's home identity (stays as-is) └── users/ ├── user_manifest.json # Discord/Slack ID → User File mapping ├── USER-197498647183622144.md # Ethan's identity ├── MEMORY-197498647183622144.md # Ethan's personal memories └── skills.json # Ethan's skill config Example user_manifest.json: { "U01ABC123DEF": "USER-john.doe.md", "U01GHI456JKL": "USER-jane.smith.md" } ``` ### User File Template ```markdown # User Identity ## Name John Doe ## Roles - sql_search (can query MSSQL) - dashboard_view (read-only) - admin (full access) ## Preferences - Format: "Brief summary with bullet points" - Max Results: 50 rows default - Data Sensitivity: "High" (hide certain fields) ## Context - Department: Sales - Common Queries: ["daily sales", "team performance", "customer metrics"] - Saved Searches: ["weekly_recap", "monthly_targets"] ## Permissions - Databases: ["sales_db", "customers_db"] - Restricted Tables: ["payroll", "executive_compensation"] ``` ### Context Loading Flow ``` Discord/Slack Message ↓ Extract User ID (e.g., 197498647183622144) ↓ Check users/user_manifest.json → Find USER-[id].md ↓ Load: USER-[id].md + MEMORY-[id].md + skills.json ↓ Inject into session context ↓ Agent responds with user's identity + preferences ``` ### User Files Created (Ethan - ID: 197498647183622144) | File | Purpose | |------|---------| | `users/user_manifest.json` | Maps ID → user files | | `users/USER-197498647183622144.md` | Ethan's identity + permissions | | `users/MEMORY-197498647183622144.md` | His personal memories (starts empty) | | `users/skills.json` | His enabled skills (gmail, calendar, web_search) | --- ## Privacy Discovery (IMPORTANT LESSON) ### The Problem **Initial thought**: Single channel for all users **Reality check**: Shared channel = shared memories, queries, emails exposed to everyone ### Solution: Private Channels per User ``` #general → Shared context (projects, automation, fun stuff) #corey-private → Corey's personal context (memories, email, sensitive queries) #ethan-private → Ethan's personal context #kathy-private → Will add when Kathy joins ``` ### How It Works | Channel | Loads | |---------|-------| | #general | Shared/default context | | #corey-private | `USER.md` + `MEMORY.md` (Corey) | | #ethan-private | `USER-ethan.md` + `MEMORY-ethan.md` | ### Why Private Channels > DMs - **Conversation history preserved** in server - **No DM vs channel switching** for the user - **Searchable** within Discord/Slack - **Privacy** maintained per channel ### Implementation Note Channel ID detection needed: - If message from `#corey-private` → load Corey's files - If from `#ethan-private` → load Ethan's files - If from shared channel → load shared/default context ### Lesson Learned Security/privacy paranoia leads to better architecture. Asking "what could go wrong?" prevented a later data exposure issue. --- ### Technical Implementation Notes - **Current**: Clawdbot loads `memory/USER.md` and `memory/MEMORY.md` - **Manual detection**: Ethan (197498647183622144) recognized, context loaded manually for now - **Full integration needed**: Detect channel ID, load matching USER/MEMORY files - **Backward Compatible**: Default to `USER.md` if no user_id/channel match found - **Ethan tested**: Multi-user context works in DM testing ### Permission Levels | Level | Access | |-------|--------| | **read** | View queries, browse results | | **sql_search** | Execute searches, generate queries | | **export** | Download CSV, share results | | **admin** | Manage user permissions, schema changes | ### User Management Commands ``` @clawdbot user add U01XXX --name "Jane" --role sql_search @clawdbot user permissions U01XXX --databases sales_db --restricted payroll @clawdbot user list @clawdbot user remove U01XXX ``` ### Privacy Considerations - User A should not see User B's saved searches unless shared - Query history per user - Admin audit log of who ran what query --- ### Known Issues (ComfyUI) - PyTorch sm_120 compatibility warning (non-breaking) - torchaudio missing (not needed for images) --- ## Home Focus (2026-02-02 Updated) Office covered by Hank. Back to home priorities: **Current Home Projects:** - Room-assistant (phone tracking verification) - ComfyUI setup + model downloads - MySQL + Apache dashboard refinement - Home automation (HA) integration **Multi-User:** Ethan added as test user (197498647183622144) for multi-user functionality. --- ## Action Items (Home Focus) - [ ] Verify room-assistant phone tracking works - [ ] Add Kathy's phone to room-assistant config - [ ] Replace Master Hallway motion sensor battery (1%) - [x] Set MySQL root password for security ✅ - [x] Create non-root user for Clawdbot (AlexAI/alexisabignerd) ✅ --- ## Quick Reference ``` MySQL: localhost:3306 / clawdbot_projects / AlexAI / alexisabignerd ComfyUI: http://localhost:8188 (needs --listen flag for network) Apache: http://localhost/ (dashboard) ```