# 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 ### 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 Ollama-Server (192.168.8.112) Zwei separate Ollama-Container mit unterschiedlichen GPUs. #### AMD-Container (Port 11439) - URL: `http://192.168.8.112:11439/v1` (HTTP, kein Auth, apiKey: `ollama`) - **GPU:** AMD Radeon RX 7800 XT (Navi 32, Gigabyte, 16GB VRAM) - **Software:** Ollama - **Provider-Name:** `TrueNAS - AMD` - Verfügbare Modelle: - qwen3:32b (Q4_K_M, 32.8B, 18.8GB) - qwen3:14b (Q4_K_M, 14.8B, 8.6GB) - mistral-small3.2 (Q4_K_M, 24.0B, 14.1GB) – Multimodal (Text+Vision), 128K Context, Tool-Calling, Apache 2.0 - gpt-oss:20b (MXFP4, 20.9B, 12.8GB) – OpenAI Open-Weight, MoE (~3.6B active/token), Tool-Use, Chat+Coding - **Aktuell:** qwen3:32b lädt die vollen 16GB VRAM → kein Platz für zweites Modell parallel - ⚠️ **Einschränkung:** 14b/32b können Befehle/Tool-Results nicht korrekt verarbeiten – der ~26k Token System-Prompt überfordert die Modelle - **Verwendung:** Notfall-Fallback wenn Cloud-Provider down – einfache Textantworten gehen, aber keine Tool-Nutzung - Alias: `Qwen3-14b-Truenas` / `Qwen3-32b-Truenas` / `Mistral-Small-Truenas` / `GPT-OSS-Truenas` #### NVIDIA-Container (Port 11434) - URL: `http://192.168.8.112:11434/v1` (HTTP, kein Auth, apiKey: `ollama`) - **GPU:** NVIDIA RTX 3060 Ti Lite Hash Rate (GA104, 8GB VRAM) - **Software:** Ollama - Verfügbare Modelle: qwen3:32b, qwen3:14b, qwen3:8b, mistral-small3.2, llama3, gpt-oss:20b - ⚠️ **8GB VRAM-Limit:** qwen3:8b (5.2GB) oder llama3 (4.7GB) passen problemlos; qwen3:14b knapp (9.3GB, evtl. partial offload) - **Verwendung:** Kleine lokale Modelle für einfache Tasks ### 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` - Credentials in `.bashrc`: `$TRUENAS_SMB_USER`, `$TRUENAS_SMB_PASS`, `$TRUENAS_SMB_HOST` - SMB-Credentials-Datei: `/root/.smb-credentials` (für fstab) - Shares: Filme, ix-applications, martin, isos, Spiele, Programme, Audiobooks, Google, Musik, Familiensachen, Lara, Luisa, openclaw - 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` ### 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**