Files
openclaw-workspace/memory/2026-02-02.md
2026-04-11 09:45:12 -05:00

644 lines
23 KiB
Markdown

# 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)
```