Files
shed-hunting-map/claude-access-prompt-home-lab.md
eric 47fd00d79f Initial commit: interactive shed hunting map for Bear River Range
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>
2026-04-10 13:40:19 -06:00

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, user frigate, password faqtEd-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 from 192.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: ushttps://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_registry get overwritten on HA restart. Use ws://192.168.1.140:8123/api/websocket with config/entity_registry/update message type. Python websocket-client is 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