# TOOLS.md - Local Notes Skills define _how_ tools work. This file is for _your_ specifics — the stuff that's unique to your setup. ## What Goes Here Things like: - Camera names and locations - SSH hosts and aliases - Preferred voices for TTS - Speaker/room names - Device nicknames - Anything environment-specific ## Examples ```markdown ### Cameras - living-room → Main area, 180° wide angle - front-door → Entrance, motion-triggered ### SSH - home-server → 192.168.1.100, user: admin ### TTS - Preferred voice: "Nova" (warm, slightly British) - Default speaker: Kitchen HomePod ``` ## Why Separate? Skills are shared. Your setup is yours. Keeping them apart means you can update skills without losing your notes, and share skills without leaking your infrastructure. --- Add whatever helps you do your job. This is your cheat sheet. ### Paperless-ngx - URL: https://docs.home.kies-media.de/ - User: greggy - Credentials in `.bashrc`/`.profile` (`$PAPERLESS_USER`, `$PAPERLESS_PASS`) - Dokumenttypen: Rechnungen, Versicherungspolicen, Verträge, wichtige Entscheidungen - Workflow: Bei Email-Check relevante Dokumente automatisch archivieren ### Google Workspace (gog CLI) - Version: v0.12.0 - Account: `mkiesewetter9@googlemail.com` - OAuth authentifiziert für: contacts, calendar - Keyring-Passwort: `$GOG_KEYRING_PASSWORD` in `.bashrc`/`.profile` - Befehle: - Contacts: `gog contacts list --max 20` - Calendar: `gog calendar events primary --account mkiesewetter9@googlemail.com --from --to ` - Kalender-Farben: `gog calendar colors` ### Email (AgentMail) - Inbox: `max-kies-media-ai-assistent@agentmail.to` - Name: Max Kies-Media AI Assistent - API Key: `$AGENTMAIL_API_KEY` in `.bashrc` - Signatur: "Max von Kies-Media – KI-Assistent von Martin" - Footer in jeder Email: ``` -- Martin Kiesewetter Tel.: 0176-45853923 Email: mki@kies-media.de ``` - Reply-To: `mki@kies-media.de` verwenden wenn möglich ### Aktive OpenClaw-Modelle - **Primary:** `z-ai/glm-5.1` (Alias: GLM-5.1) - **Fallback:** `openrouter/google/gemma-4-31b` (Alias: Gemma-4-31B) – auch für Coding & Git - **Free:** `z-ai/glm-4.7-flash` (GLM-4.7-flash-free), `openrouter/deepseek/deepseek-v4-flash:free` (DeepSeek-V4-Flash) ### OpenRouter - API Key: `$OPENROUTER_API_KEY` in `.bashrc` - URL: https://openrouter.ai/api/v1 - ⚠️ **SICHERHEITSREGEL:** Niemals API-Keys, Passwörter, Tokens oder andere geheime Informationen an kostenlose OpenRouter-Modelle (free-Tier) weiterleiten. Diese Modelle können Daten loggen oder für Training nutzen. - Free-Modelle (z.B. `deepseek/deepseek-v4-flash:free`) nur für unkritische Anfragen nutzen - Bei Anfragen die Credentials/Secrets enthalten → bezahltes Modell oder lokales Modell verwenden - ⚠️ **PATCH NACH JEDEM OPENCLAW-UPDATE:** Datei `/usr/lib/node_modules/openclaw/dist/openai-transport-stream-BkI6rJ3U.js` patchen: - Zeile mit `function flattenStringOnlyCompletionContent(content) {` suchen - Direkt danach, vor `if (!Array.isArray(content)) return content;`, einfügen: `if (content === null || content === undefined) return "";` - Grund: DeepSeek V4 Flash (free) akzeptiert kein `null` in message content – OpenClaw sendet das aber bei Tool-Result-Nachrichten - Nach dem Patch: Gateway neu starten ### Git - Remote: `https://git.home.kies-media.de/greggy/openclaw.git` - Branch: `master` - User: `greggy` - Workspace Repo: `/root/.openclaw/workspace` - Credentials in `.bashrc`/`.profile` ### TrueNAS Server (192.168.8.112) **Hardware:** - Mainboard: Supermicro H12SSL-i (Milan, Dual-Sockel-fähig) - CPU: AMD EPYC 7C13 (64 Cores) - RAM: 512 GB DDR4 2666 MHz - GPU: NVIDIA RTX 3060 Ti Lite Hash Rate (8 GB VRAM) - HBA: LSI SAS 9300-16i (IT Mode, 12 Gbit/s, 16 Ports, 2× SAS3008 via PLX PEX 8724 Switch) - Netzwerk: Mellanox ConnectX-2 MNPA19-XTR (10 GbE SFP+, PCIe x8) - Netzwerk: 2× Broadcom BCM5720 Gigabit Ethernet (onboard) - IPMI/BMC: ASPEED Graphics (Remote Management) - NVMe: WD Black SN850X 1TB (boot-pool) **Storage (Pool: Main):** - 1× WD Black SN850X 1TB NVMe (boot-pool) - 2× TeamGroup T253 512GB SSD (sdd, sdf) - 2× Seagate Exos X18 16TB HDD 7200rpm (sdg, sdh) – ST16000NM000J - 2× Toshiba MG08 16TB HDD 7200rpm (sdi, sdj) – MG08ACA16TE - 2× HGST Ultrastar 8TB HDD 7200rpm (sdk, sdc) – HUH721008ALE600 - 2× Toshiba 8TB HDD 7200rpm (sdb, sde) – HDWG480 - 1× Seagate Exos X18 18TB HDD 7200rpm (sda, unassigned) – ST18000NM000J **ZFS-Layout (Main-Pool):** - 2× RAIDZ1 VDEVs (je 5 HDDs, 1 Parität pro VDEV) - 1× Mirror SLOG (2× 512GB SSD als ZIL) - Effektiv: ~102 TB nutzbar von ~128 TB roh - Belegt: 65.3 TB (64%), Frei: 36.6 TB (Stand: Mai 2026) - **Zusätzlich:** 18TB Seagate Exos X18 (sda) nicht zugewiesen, S.M.A.R.T. ✅ gesund - ⚠️ RAIDZ1 bei 16TB-Platten: nur single parity ### TrueNAS SMB (192.168.8.112) - Über WireGuard erreichbar: `192.168.8.112` - User: `openclaw` (eingeschränkter User, nicht admin) - Credentials in `.bashrc`: `$TRUENAS_SMB_USER`, `$TRUENAS_SMB_PASS`, `$TRUENAS_SMB_HOST` - SMB-Credentials-Datei: `/root/.smb-credentials` (für fstab) - SMB-Befehl: `smbclient //$TRUENAS_SMB_HOST/ -U $TRUENAS_SMB_USER%$TRUENAS_SMB_PASS` - Shares auflisten: `smbclient -L $TRUENAS_SMB_HOST -U $TRUENAS_SMB_USER%$TRUENAS_SMB_PASS` #### Verfügbare Shares & Berechtigungen (Stand 05/2026) **SMB-Share-Level ACLs (alle aktiv außer ix-applications):** | Share | Pfad | openclaw Zugriff | greggy Zugriff | Bemerkung | |---|---|---|---|---| | openclaw | /mnt/Main/openclaw | ✅ FULL | ✅ (via admin) | Workspace-Backup, gemounted `/mnt/openclaw-smb` | | Austausch | /mnt/Main/Austausch | ✅ FULL (everyone@) | ✅ FULL (everyone@) | Allgemeiner Austausch-Ordner | | martin | /mnt/Main/martin | 🔍 READ | ✅ FULL | greggy = Owner | | Filme | /mnt/Main/Filme | ❌ | ✅ (via admin) | homelab-family: READ, rene: READ | | isos | /mnt/Main/isos | ❌ | ✅ FULL | Nur greggy | | Spiele | /mnt/Main/Spiele | ❌ | ✅ (via admin) | homelab-family: READ, rene: READ | | Programme | /mnt/Main/Programme | ✅ FULL (everyone@) | ✅ FULL (everyone@) | Alle haben Vollzugriff | | Audiobooks | /mnt/Main/Musik/Audiobooks | ❌ | ✅ (via homelab-family) | Unterverzeichnis von Musik | | Google | /mnt/Main/Google | ❌ | ✅ (via admin) | Nur truenas_admin | | Musik | /mnt/Main/Musik | 🔍 READ (everyone@) | ✅ FULL | Alle lesen, greggy schreibt | | Familiensachen | /mnt/Main/Familiensachen | ❌ | ✅ (via admin) | admin + homelab-family: READ | | Lara | /mnt/Main/Lara | ❌ | ✅ FULL | lara + greggy | | Luisa | /mnt/Main/Luisa | ❌ | ✅ FULL | luisa + greggy | | ix-applications | /mnt/Main/ix-applications | ❌ | ❌ | Deaktiviert | **Wichtige Users:** - `greggy` (uid 3000) – Gruppen: nogroup, truenas_admin, homelab-family - `openclaw` (uid 3004) – Gruppe: AI-Martin - `lara` (uid 3001), `luisa` (uid 3002), `rene` (uid 3003) **⚠️ Bekanntes Problem (05/2026):** Einige Ordner hatten verwaiste Gruppe 3000 (gelöscht) – Docker-Homelab wurde auf `homelab-family` korrigiert. Bei weiteren Zugriffsproblemen Gruppenzugehörigkeit prüfen. ### OpenClaw Arbeitsbereich (TrueNAS) - SMB-Share: `//192.168.8.112/openclaw` → gemountet auf `/mnt/openclaw-smb` - Workspace-Spiegel: `/mnt/openclaw-smb/workspace/` - Auto-Mount via `/etc/fstab` (credentials: `/root/.smb-credentials`) - Sync-Scripts: - `scripts/sync-to-truenas.sh` – synct Workspace zum TrueNAS - `scripts/commit-and-sync.sh` – git commit + push + sync zu TrueNAS - Workflow: Nach Datei-Änderungen → `bash scripts/commit-and-sync.sh` ### Landingpage Testumgebung - **Server:** Apache auf dem OpenClaw-Server (lokal) - **DocumentRoot:** `/var/www/test/html` - **URL (localhost):** `http://localhost:6427/` - **URL (extern):** `http://178.104.150.0:6427/` - **Port:** 80 + 6427 - **Deploy:** Branch klonen → rsync nach `/var/www/test/html/` - **Repo:** `greggy/landingpage-haus-schleusingen` - ⚠️ **Nach jedem Deploy:** URL als klickbarer Link im Chat posten: http://178.104.150.0:6427/ - **⚠️ Wichtig:** Feature-Branches werden VOR dem Merge auf die Testumgebung deployed. Nach PR-Merge ist kein erneuter Deploy nötig – main ist dann automatisch auf dem gleichen Stand. ### Exec-Timeouts (Konventionen) - Kurze CLI-Abfragen: **150 Sekunden** - Python-Skripte: **300 Sekunden** - Browser-Vorgänge: **300 Sekunden**