5.7 KiB
5.7 KiB
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
### 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.
LAN Services (Will)
- Host LAN IPs observed:
192.168.153.113(wlan0)192.168.153.117(eth0)
- Tailscale IP:
100.123.88.127
Session routing notes
- Current TUI conversations arrive with inbound metadata like:
channel: webchatprovider: webchatsurface: webchat
- Telegram DMs route into a separate main session when
session.dmScope = "per-channel-peer". - Verified 2026-03-10:
- TUI/webchat session remained separate from Telegram DM session
- Telegram outbound + inbound both worked
- Telegram inbound landed in its own main session file rather than the active TUI session
Search routing
- Default page-reading tool: native
web_fetch - Default search path:
skills/local-meta-search/scripts/search.sh - Routing policy:
- use SearXNG first for normal web lookups
- fall back to Brave MCP if SearXNG fails or returns weak/empty results
- use Brave MCP directly when Will explicitly asks for Brave / a second opinion
- Backend labels should be called out in research answers when relevant
Search cheat sheet
- General/local-first search:
skills/local-meta-search/scripts/search.sh "query"
- Direct SearXNG:
skills/searxng-local-search/scripts/search.sh "query"
- Direct Brave MCP:
skills/brave-mcp-search/scripts/search.sh "query"
- Native fetch:
- use tool
web_fetch(url=...)
- use tool
Docker services
-
searxng
- Image:
searxng/searxng:latest - Container:
searxng - Port:
18803 -> 8080 - URL(s):
http://192.168.153.113:18803http://192.168.153.117:18803
- API: JSON enabled (
search.formatsincludeshtml,json) - Runtime env:
SEARXNG_URL=http://192.168.153.113:18803(workspace.env) - Role: preferred local-first search backend
- Smoke test:
skills/searxng-local-search/scripts/smoke.sh openclaw
- Image:
-
whisper-server
- Image:
ghcr.io/ggml-org/whisper.cpp:main - Container:
whisper-server - Port:
18801 -> 8080 - Health: healthy
- URL(s):
http://192.168.153.113:18801http://192.168.153.117:18801
- Image:
-
brave-search (MCP)
- Image:
mcp/brave-search:latest - Container:
brave-search - Port:
18802 -> 8000 - URL(s):
http://192.168.153.113:18802http://192.168.153.117:18802
- MCP endpoint:
http://192.168.153.113:18802/mcp - Note: Will confirmed Brave search port is
18802on 2026-03-10. - Verified 2026-03-10: reachable via
mcporteras toolbrave_web_search. - Native Brave Search API (
web_search) configured on 2026-03-10. - Plan/rate note: Brave free plan hit
rate_limit: 1; serialize requests instead of parallel bursts.
- Image:
Embeddings (local)
- Runtime: Ollama
- Active model:
nomic-embed-text:latest - Model id:
0a109f422b47 - Size:
595 MB - Processor:
100% GPU - Context:
2048 - Loaded until:
Forever - Ollama embeddings endpoint:
http://192.168.153.113:18807 - OpenClaw memory search: configured to use provider
ollamawith modelnomic-embed-text - OpenClaw memory index verified working on 2026-03-10 (
45 files,160 chunks, vector dims768)
Object storage (assistant bucket)
- Provider: MinIO
- Endpoint:
http://192.168.153.253:9000 - Bucket:
zap - Credentials file:
~/.openclaw/credentials/minio-zap.env(mode600) - Backup script:
scripts/backup-to-minio.sh - Backup scope: full archive of
~/.openclaw(tar.gz) +sha256+manifest.txt - Backup schedule: system cron every 6 hours at minute 17
17 */6 * * * /home/openclaw/.openclaw/workspace/scripts/backup-to-minio.sh >> /home/openclaw/.openclaw/workspace/memory/minio-backup.log 2>&1
- Bucket versioning: enabled
- Lifecycle rule (prefix
workspace-backups/):- expire noncurrent versions after 90 days
- keep 3 newer noncurrent versions
- expire delete markers enabled
Kubernetes (homelab)
- Cluster access: available
- Shared namespace:
swarm - Kubeconfig:
~/.openclaw/credentials/kubeconfig-swarm.yaml(mode600) - Usage note: deploy assistant workloads into
swarm; namespace is shared with other agents - Cluster profile: small Raspberry Pi cluster — prefer lightweight images, low CPU/memory requests, and minimal replicas by default
Local custom skills (security-reviewed)
skills/swarm-kubectl-safe- Purpose: safe kubectl operations scoped to
swarm - Script:
skills/swarm-kubectl-safe/scripts/kubectl-swarm.sh
- Purpose: safe kubectl operations scoped to
skills/whisper-local-safe- Purpose: local whisper-server transcription on LAN only
- Script:
skills/whisper-local-safe/scripts/transcribe-local.sh
Why local equivalents were built:
- Candidate ClawHub skills
kubectlandfaster-whisper-transcribewere flagged as suspicious by ClawHub/VirusTotal checks. - We intentionally avoided force-installing flagged skills for safety.
- Decision: use minimal local skills for now; revisit those ClawHub skills later if we perform a manual security review and explicitly approve.
Add whatever helps you do your job. This is your cheat sheet.