81 lines
5.0 KiB
Markdown
81 lines
5.0 KiB
Markdown
---
|
|
created: 2026-09-09 11:55
|
|
modified: 2026-09-09 12:00
|
|
type: note
|
|
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), 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** (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 <service>`; 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-Dekstop 13]]
|