From 485f53f48db9c8b943844d9f6ef18642b40a4aa1 Mon Sep 17 00:00:00 2001 From: Lars Rossen Date: Tue, 25 Aug 2026 17:33:03 +0200 Subject: [PATCH] slides(tappaas): real hardware/VM diagrams, and count the Community modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split the single architecture slide into two: the iron (three nodes, switch, AP, modem) and the software (foundation band with the AI and productivity stacks above it). Both read off the running cluster via tappaas-cicd, not from docs — CPU, RAM, pool topology, link speeds and switch ports are live values. The VM layer-cake is inline SVG rather than mermaid: mermaid ignores `direction LR` inside a subgraph that has a cross-boundary edge, so the bands came out as a 629x1258 column. Module slide now counts all three sources — 8 foundation + 12 apps + 21 Community = 41 — and slide 3 is recomputed for today. Co-Authored-By: Claude Opus 5 --- slides/tappaas/one-year-in/index.md | 115 ++++++++++++++++------------ 1 file changed, 66 insertions(+), 49 deletions(-) diff --git a/slides/tappaas/one-year-in/index.md b/slides/tappaas/one-year-in/index.md index c1f857c..4275c89 100644 --- a/slides/tappaas/one-year-in/index.md +++ b/slides/tappaas/one-year-in/index.md @@ -21,6 +21,8 @@ code.todo { color: #ff8a80; font-weight: 600; } div.mermaid { display: flex; justify-content: center; width: 100%; } div.mermaid svg { width: 100% !important; height: auto !important; max-height: 500px; } section.diagram h2 { margin-bottom: 0.1em; } +/* Hand-drawn diagrams (inline SVG) get the same full-width treatment. */ +section.diagram > svg { display: block; width: 100%; height: auto; max-height: 520px; margin: 0 auto; } /* Section dividers: gaia's `lead` does the centring; this only sets the scale. */ section.chapter h1 { font-size: 2.6em; margin-bottom: 0.1em; } /* Punch lines: the slides that are one sentence, said loudly. */ @@ -74,20 +76,27 @@ out to be the whole point — come back to it in the AI section. | --- | --- | | First commit | **10 May 2025** — "Initial commit" | | Commits when I submitted this abstract | **1,091** | -| Commits standing here today | **1,488** | -| Contributors | 3 (I am ~79% of it) | +| Commits standing here today | **1,507** | +| Contributors | 3 (I am ~77% of it) | | ADRs written | **24** | -| Lines of code (bash · TypeScript · Python · Nix) | **111,777** | -| Of which **test** code | **30,282** — 29% | -| Lines of documentation | **~34,000** | -| App modules in the tree | **13** | +| **Modules** — 8 foundation · 12 apps · 21 community | **41** | +| Lines of code (bash · TypeScript · Python · Nix) | **126,699** | +| Of which **test** code | **34,490** — 27% | +| Lines of documentation | **~39,500** | -Everything in this talk is in a public repository. You can check my homework. +Everything in this talk is in two public repositories. You can check my homework. --- @@ -117,60 +126,68 @@ Deliberately short divider slide. Say "it runs" out loud and pause. -## What is actually in the basement +## The iron: three boxes, a switch, an AP and a modem ```mermaid -flowchart LR - sat["satellite VPS
public ingress
off-site backup"] - net["OPNsense · network
zones · VLANs
DNS · certificates"] - subgraph cluster["Proxmox cluster — commodity boxes"] - n1["tappaas1 · foundation"] - n2["tappaas2 · AI / HA"] - n3["tappaas3 · backup"] - end - subgraph found["Foundation modules"] - cicd["tappaas-cicd
the mothership"] - idp["identity"] - bak["backup · PBS"] - log["logging"] - end - apps["Application
modules
NixOS VMs"] - sat -.WireGuard.-> net - net --> cluster - cluster --> found - cicd --> apps +flowchart TB + n1["tappaas1 — ASUS · EPYC 4464P
12c/24t · 64 GB ECC
tanka1 2×4 TB NVMe mirror
tankb1 12 TB HDD"] + n2["tappaas2 — Minisforum MS-S1 MAX
Ryzen AI MAX+ 395 · 16c/32t
128 GB unified · Radeon 8060S
tanka1 2 TB NVMe"] + n3["tappaas3 — TianBei WTR PRO
Ryzen 7 5825U · 8c/16t · 32 GB
tanka1 1 TB NVMe
tankc1 5 TB HDD — PBS"] + sw["UniFi USW Pro XG 10 PoE
10.0.0.201
trunk: mgmt untagged +
VLAN 200 310 410 420 430 510 610"] + ap["UniFi Nano HD
access point · port 9"] + modem["ISP modem
port 5 · VLAN 100 = wan"] + n1 -- "10G · p12" --> sw + n2 -- "10G · p2" --> sw + n3 -- "2.5G · p3" --> sw + sw --- ap + sw --- modem ``` --- -## I promised you eight. There are thirteen. + -| Module | What it is | Lines | -| --- | --- | ---: | -| `nextcloud` + `nextcloud-hpb` + `coturn` | files, calendar, contacts, calls | 5,081 | -| `litellm` | AI gateway — keys, quotas, routing | 2,455 | -| `openwebui` | the chat window | 1,911 | -| `deconz` | Zigbee | 1,451 | -| `vllm-amd` | **local LLM inference** | 1,407 | -| `euro-office` | documents in the browser | 1,148 | -| `hass` | home automation | 1,095 | -| `vaultwarden` | passwords | 513 | -| `windows-server` | the one thing that will not die | 361 | -| `netbird-client` · `n8n` | mesh VPN · automation | 263 | +## The software: foundation underneath, stacks on top -`TODO: tick off which are actually live in the basement on the night — the tree carries more than the basement runs` +AI stack — tappaas2, on the GPUvllm-amd · 312LXC · Radeon 8060S128 GB unifiedlitellm · 310gateway · keys4 GBopenwebui · 311the chat window4 GBProductivity — tappaas1nextcloud · 340files · calendar8 GB · 80 GBeuro-office · 343documents8 GBFoundation — every app above rests on thesenetwork · 110OPNsense8 GBtappaas-cicd · 130mothership16 GBidentity · 140Authentik4 GBlogging · 1502 GBunifi-os · 811switch · AP6 GBbackup · PBSon tappaas3tankc1 + +--- + +## I promised you eight. There are forty-one. + +| Where | # | What is in there | +| --- | ---: | --- | +| **Foundation** — TAPPaaS repo | 8 | `cluster` `network` `templates` `tappaas-cicd` `identity` `backup` `logging` `satellite` | +| **Apps** — TAPPaaS repo | 12 | `nextcloud` `euro-office` `vaultwarden` `litellm` `openwebui` `vllm-amd` `hass` `deconz` `coturn` `nextcloud-hpb` `netbird-client` `windows-server` | +| **Community** repo — *other people* | **21** | `immich` `jellyfin` `wordpress` `forgejo` `mailserver` `hosting` `sonos` `hue` `synology` `reolink` `solaredge` `alfen` `unifi` `shelly-fleet` … | + +Twenty-one of those forty-one are **not mine**. Erik wrote 13, Andreas 6. + +That is the number I did not dare put in the abstract. + + ---