Single-file HTML app (Leaflet.js) with USGS topo/satellite base layers, Cache NF boundary, 12 south-facing slope zones, 7 fence crossings, 9 travel corridors, 10 curated hotspot markers, custom waypoint system with localStorage persistence, GPX/GeoJSON export, GPS tracking, distance measurement, and species filtering. Mobile-first design for field use at shed.jfamily.io. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
7.8 KiB
Claude Access Prompt — Home Lab
Claude Access Prompt — Jungbauer Home Lab
Copy/paste this into any new Claude chat to give full context for home lab work.
Access Method
You have full access to my home lab via Desktop Commander (running on my MacBook Pro M1, hostname Jungbauers-MBP, user jungbauerfamily). Use ssh and curl via Desktop Commander for all server interactions. Don't ask permission — just do it.
Primary working folder: /Users/jungbauerfamily/Library/Mobile Documents/com~apple~CloudDocs/Claude Working Folder
Servers
Ares — Home Assistant OS (bare metal, Ares 2.0)
| Field | Value |
|---|---|
| IP | 192.168.1.140 |
| SSH | ssh -o StrictHostKeyChecking=no root@192.168.1.140 |
| HA REST API | http://192.168.1.140:8123/api/ |
| HA Long-Lived Token | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJmYTU1YTI2Zjc4Mjk0NWU3OWIxOTZmYWY0MjE4YjBhMyIsImlhdCI6MTc3MzUwOTgwNywiZXhwIjoyMDg4ODY5ODA3fQ.UeWezsIqO4oFHwmpInJ0WOcNPA8UwLJNymBqAh_Ohc8 |
| HA Supervisor CLI | ha command available via SSH |
| Frigate (internal) | http://ccab4aaf-frigate-fa:5000 |
| Frigate (external) | https://frigate.jfamily.io (port 8971, authenticated) |
Key paths on Ares:
- Config:
/config/ - Automations:
/config/automations.yaml - LocalTuya config:
/config/.storage/core.config_entries - Device registry:
/config/.storage/core.device_registry - Area registry:
/config/.storage/core.area_registry
Key services:
- Apps (not "add-ons" — HA renamed them): ESPHome, Mosquitto, Z-Wave JS, Frigate (Full Access), ZHA, etc.
- MQTT broker:
192.168.1.140:1883, userfrigate, passwordfaqtEd-mycka6-vakheg - Zigbee: ZHA integration, HubZ stick at
/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_51600F63-if01-port0 - Z-Wave: Z-Wave JS, HubZ stick at
if00-port0 - Frigate: 2x USB Coral TPU (
18d1:9302), Unifi Protect RTSP streams from192.168.1.121:7447 - ESPHome devices on IoT VLAN
192.168.4.x
Common HA API calls:
TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJmYTU1YTI2Zjc4Mjk0NWU3OWIxOTZmYWY0MjE4YjBhMyIsImlhdCI6MTc3MzUwOTgwNywiZXhwIjoyMDg4ODY5ODA3fQ.UeWezsIqO4oFHwmpInJ0WOcNPA8UwLJNymBqAh_Ohc8"
# Get all states
curl -s "http://192.168.1.140:8123/api/states" -H "Authorization: Bearer $TOKEN"
# Reload automations
curl -s -X POST "http://192.168.1.140:8123/api/services/automation/reload" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
# Reload LocalTuya
curl -s -X POST "http://192.168.1.140:8123/api/config/config_entries/entry/01KJRSXEBY2ZD53SDWZ8PV1HN2/reload" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"
# Restart HA core
ssh -o StrictHostKeyChecking=no root@192.168.1.140 "ha core restart"
LocalTuya / Tuya Cloud:
- Config entry ID:
01KJRSXEBY2ZD53SDWZ8PV1HN2 - Tuya client_id:
apxcamjc9f75xpfytwt4 - Tuya client_secret:
6bd707689fa44640806989366aa3c67a - Tuya user_id:
az1601840366692VYNPC - Region:
us→https://openapi.tuyaus.com - IoT VLAN for Tuya devices:
192.168.4.x
Tips:
- After editing
automations.yaml, reload automations via API (no restart needed) - To avoid shell escaping issues on HAOS, encode Python scripts as base64:
echo <b64> | base64 -d | python3 - Use Python
urllib.request+json.dumps()for long wiki updates to avoid curl escaping issues - Entity registry updates (labels, areas, categories) MUST use the WebSocket API — direct edits to
/config/.storage/core.entity_registryget overwritten on HA restart. Usews://192.168.1.140:8123/api/websocketwithconfig/entity_registry/updatemessage type. Pythonwebsocket-clientis installed on the Mac (pip3 install --break-system-packages websocket-client). Example:
import websocket, json
ws = websocket.create_connection("ws://192.168.1.140:8123/api/websocket")
ws.recv() # auth_required
ws.send(json.dumps({"type": "auth", "access_token": TOKEN}))
ws.recv() # auth_ok
ws.send(json.dumps({
"id": 1,
"type": "config/entity_registry/update",
"entity_id": "automation.example",
"area_id": "front_yard",
"labels": ["scheduled"],
"categories": {"automation": "lighting"}
}))
result = json.loads(ws.recv())
ws.close()
Existing automation labels: presence, scheduled, auto_off, notification, door_trigger, power_monitor, linked_room, override, safety
Existing automation categories: lighting (Lighting Control), appliance_monitoring (Appliance Monitoring), climate_safety (Climate & Safety), 01KM9PQDKRGY1WB1F2Q0JD4MHX (Media Control), 01KM9PQDKVPPZHY10V85VCXKZ0 (System), 01KMAR57JRNE63WXSNAP3F7272 (Security)
Ragnar — Proxmox Hypervisor ("Hail Reaper")
| Field | Value |
|---|---|
| IP | 192.168.1.107 |
| SSH | ssh -o StrictHostKeyChecking=no root@192.168.1.107 |
| Web UI | http://192.168.1.107:8006 |
| Nginx Proxy Manager | http://192.168.1.107:81 (Docker on host) |
~59 LXC/VM services. Key LXCs:
| CT ID | Name | IP | Notes |
|---|---|---|---|
| 104 | Gitea | 192.168.1.204 | Self-hosted Git |
| 106 | Outline | 192.168.1.206 | Wiki |
Darrow — Windows 11 NAS/Plex
| Field | Value |
|---|---|
| IP | 192.168.1.43 |
| SSH | ssh "darrow admin"@192.168.1.43 |
| Role | ~200TB Storage Spaces array, Plex server, backup target |
UDM-SE — UniFi Dream Machine (Router/Controller)
| Field | Value |
|---|---|
| IP | 192.168.1.1 |
| SSH | ssh root@192.168.1.1 |
| Main LAN | 192.168.1.x |
| IoT VLAN | 192.168.4.x (Tuya, ESPHome devices) |
Wiki (Outline)
| Field | Value |
|---|---|
| API | https://wiki.jfamily.io/api/ |
| Auth | Authorization: Bearer ol_api_yHXypRyqf4CscWDzPluGfPev9GhdFg6mwrXwkT |
| Home Assistant Collection | 1b8d0cfe-022a-4621-99f8-598ff99061d6 |
All endpoints are POST, take JSON body, return JSON. No MCP available — use curl via Desktop Commander.
WIKI_TOKEN="ol_api_yHXypRyqf4CscWDzPluGfPev9GhdFg6mwrXwkT"
# Search
curl -s -X POST "https://wiki.jfamily.io/api/documents.search" \
-H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" \
-d '{"query":"your search"}'
# Read a doc
curl -s -X POST "https://wiki.jfamily.io/api/documents.info" \
-H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" \
-d '{"id": "<doc-id>"}'
# Update a doc (use Python for long markdown to avoid escaping issues)
curl -s -X POST "https://wiki.jfamily.io/api/documents.update" \
-H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" \
-d '{"id": "<doc-id>", "text": "<full markdown>", "publish": true}'
# Create a doc
curl -s -X POST "https://wiki.jfamily.io/api/documents.create" \
-H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" \
-d '{"title": "...", "text": "...", "collectionId": "<id>", "publish": true}'
# List collections
curl -s -X POST "https://wiki.jfamily.io/api/collections.list" \
-H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" -d '{}'
Gitea
| Field | Value |
|---|---|
| SSH | git@git.jfamily.io (port 2222) |
| Web | http://192.168.1.204:3000 (user: eric) |
| API | http://192.168.1.204:3000/api/v1/ |
| Generate token | ssh root@192.168.1.107 "pct exec 104 -- docker exec -u git gitea gitea admin user generate-access-token --username eric --token-name <n> --scopes all" |
Context & Conventions
- Server naming follows Pierce Brown's Red Rising series (Ragnar, Darrow, Ares)
- "Apps" not "add-ons" — HA renamed them in a recent version
- Home is "Providence" — large custom-built home in Utah, ~9,000 sq ft, 49 rooms, 11,000+ HA entities
- Wiki (
wiki.jfamily.io) and Gitea (192.168.1.204:3000) are sources of truth — always update them after significant changes - When in doubt, check the wiki first before asking me