--- created: 2026-09-09 11:55 modified: 2026-09-09 12:00 type: project status: active tags: - family - home-lab - showcase - project aliases: - Family Home Lab - Home Lab Console --- # Family Home Lab A self-hosted **family console + tool lab** on our home network. One login at **https://console.lab.audasmedia.com.au** gives every household member a dashboard of ~40 self-hosted services, AI chat, a voice assistant, media tools and file sharing — all running on our own gear. **Interactive architecture map:** [maps.lab → Family Home Lab](https://maps.lab.audasmedia.com.au/family_home_lab/docs/family-home-lab-map.html) ## What it is - **Console portal** — per-user logins (sam/jo/harry/finn), searchable home-dash tool cards, admin area (users, passwords, live Pi-dashboard), Files upload, dark mode. - **AI chat (dsh)** — a private per-user chat (chat/reasoning/coding + multimodal GLM; **renameable conversations**), with conversation memory, web/doc summarise, image ingest & generate, video screen analysis, **audio transcription (speech-to-text, converts m4a/mp3/mp4/AAC locally via whisper)** and a general **Ask with a file** tool (audio/video/image/txt - the AI routes by type). Hardened: read-only filesystem, no shell. - **Voice assistant (Jervis)** — a local LLM voice agent: talk to it or type on the Voice page — it controls Home Assistant (lights/switches), shopping list, weather, timers, reminders, character voices. - **Media tools** — GIMP (edit), KdenLive (video), Audacity (audio), LMMS (music) — all browser-based. - **Transcriber** — turn audio **or video** into MIDI (Basic Pitch) or sheet music (MuScriptor). - **Storage** — Garage S3 object storage + a shared media folder; offsite Amazon S3 backups. ## How to use it 1. Go to **console.lab.audasmedia.com.au** and log in. 2. **Dashboard** — every service is a card, grouped and searchable; kids get a reduced view, admins see everything. 3. **Files** — upload from your browser; it appears in the media tools (~/media) and you can view/download/delete. 4. **Chat** — pick a model (chat / reasoning / coding / multimodal), attach images, summarise a page or file, generate an image, analyze a video, or **transcribe an audio/video file to text** (files convert automatically) (upload to Transcribe audio - converted locally, transcript downloadable as .txt). 5. **Voice** — type a command (lights, weather, shopping, timers) and Jervis answers and speaks. 6. **Admin** — add/rename users, change passwords, watch live agent sessions. ## Architecture ```mermaid flowchart LR U[Family browsers / phones] -->|https *.lab| C[Caddy :35] C -->|console.lab| P[Console portal FastAPI :13:8500] C -->|dsh-*.lab| D[dsh chat x4 SSE] C -->|media/apps.lab| A[Media + ~40 apps] P -->|SQL| DB[(Postgres+Redis)] P -->|transcribe| W[Celery workers + RabbitMQ] D -->|LLM| OR[OmniRoute :20129] OR -->|chat/reasoning/coding| OC[opencode-go / deepseek] D -->|vision/video| OL[OpenRouter GPT-5 · GLM-5v] P -->|Files/S3| G[(Garage S3 + shared-media)] G -.->|Borg| BACK[(Amazon S3 offsite)] U -->|Voice page| V[Jervis voice agent :8501] V -->|HA REST/MQTT| HA[Home Assistant] ``` ## Where things live | Area | Location | |---|---| | Source & Gitea | `/home/sam/home_network/custom_tools/family_home_lab` → `sam/family_home_lab` | | Portal stack | `.13` Docker compose `/home/sam/Docker/Containers/family-home-lab` | | dsh chat | `.13` `/home/sam/Docker/Containers/dsh` | | Voice agent (Jervis) | `.13` `:8501` (NixOS systemd) | | Data | `/mnt/data/family-home-lab/` (Garage, shared-media, dsh, pi-dashboard) — Borg-backed | | Proxy/DNS | Caddy on `.35`; public `*.lab.audasmedia.com.au`, LAN-only `*.home.lab` | | Maps site | `maps.lab.audasmedia.com.au` (published Archify maps) | | Tasks / Docs | Vikunja "Family Home Lab" project · Outline "Family Home Lab" collection | ## Tools used - **Web/portal** — FastAPI · Jinja2 · HTMX · Postgres · Redis · Celery/RabbitMQ · boto3 · docker compose - **AI** — OmniRoute (LLM gateway) · OpenRouter (vision/image) · DeepSeek/opencode-go · GLM-5v · Basic Pitch · MuScriptor · piper TTS · **faster-whisper** (voice_whisper on .13:5000, shared, speech-to-text) - **Apps/services** — Garage S3 · Caddy · Gitea · Vikunja · Outline · Home Assistant · Metube · Jellyfin · Nextcloud · Immich (+ more) - **Infra** — NixOS (.13/.27) · Ubuntu (.35) · pi agent · systemd · RustDesk · Borg ## Config notes for future maintenance (no secrets) - LLM routing: chat/reasoning/coding go through **OmniRoute** on `.13:20129` as **pinned deterministic model ids** (skip the flaky `auto/*` pools); vision/image/video go through **OpenRouter**. - Secrets live only in `.env` files (git-ignored) and the machine secrets store — never commit. - Deploy an edit: push to Gitea → rsync/scp to `.13` → `docker compose up -d --build `; Caddy edits on `.35`. - Maps: after any `archify deliver`, run `publish-maps.sh` to update maps.lab. ## Related - Human deep-dive: [[Family Console]] (360 Dev-Ops Network Computers) - [[Home Network Map Overview]] · [[Docker Containers]] · [[Websites on Nixos-Desktop 13]]