Bannister Labs }

Homelab

status: active · phase 1 started

The homelab itself: a version-controlled source of truth for the network, hosts, and services - model, diagrams, tests, and records. Held in the 00-homelab repository; the network, the labs site, and the Pi cluster are subprojects of this project.

Repository: https://github.com/pbannister/00-homelab

README

Transcluded from README.md in the repository.

Homelab

The lair. A homelab of which the Pi cluster is one part (the cluster repo, ~/cluster-setup, stays separate for now and may be imported later).

This repository is structured for collaborative development with an LLM, following the 00-project-skeleton pattern. The LLM should begin by reading these files in order (the numeric prefix marks load order):

  1. prompts/01-contract.md
  2. prompts/02-workflow.md
  3. prompts/03-conventions.md

These define the interaction rules, workflow, and formatting conventions. Human contributors should begin with prompts/README.md and documents/README.md.

What the homelab is

A mad-scientist's lair in progress (owner background: physics education, software career; pattern: starts many projects, finishes quite a few). Components:

  • Pi cluster (8 nodes in a rack with a 1 GbE PoE switch) — robots + clustering experiments; Adafruit HAT add-ons (sensors, clocks, battery/RTC, motor controllers) in custom 3D-printed cases and rack. See ~/cluster-setup/README.md.
  • beast.lan — LLM "big brain" (AMD MI25, Vega 10 16 GB), offload target for the Pis; large spinning storage.
  • athena.lan — desktop / control host; large spinning storage.
  • minerva.lan — laptop. mercury — role unclear.
  • Turing Pi 2 — owned, not yet set up.
  • 2× passively-cooled SFF boxes — intended homelab infrastructure, not set up.
  • 3D printers (network-connected, growing collection; smart power switch).
  • LG TVs — media playback; transcode/store video from beast/athena spinning storage.
  • Router: GL.iNet GL-MT6000 "Flint 2" (OpenWrt-based).
  • Lair projects: Van de Graaff generator (small owned; larger under construction), planned small fusion-reactor experiment, physical bin-inventory with AI item recognition ("where is item X?").

The full brain-dump is the canonical overview document: documents/04-homelab-overview.md (source note: ~/cluster-setup/HOMELAB.md, which this project supersedes).

Privacy boundary (owner directive)

  • Old work-related files (e.g. athena: vg2-recorder, prior-job files) are OFF-LIMITS: the owner will inspect and likely discard them. Do not introspect, index, back up, or summarize these.
  • The two 1 TB SATA SSDs in athena are earmarked to be pulled for use elsewhere.

Top-Level Map

  • README.md — this overview.
  • TODO.md — pending and completed project tasks.
  • prompts/ — LLM interaction rules, common requirements, feature requirements, task definitions, and episode work orders.
  • documents/ — human-consumption documents (incl. 04-homelab-overview.md).
  • records/ — version-controlled outcome, incident, and handoff records.
  • tools/ — tool-specific rules (aider-rules.md for Aider only).
  • sources/ — implementations (empty for now; future: homelab infra code — Ansible plays, router automation, media stack, etc.).
  • scripts/ — project scripts. tests/ — tests and validation.
  • dataflow.in/ / dataflow.out/ — input data / generated output (out not version-controlled).
  • logs/ — generated logs (not version-controlled).
  • site.in/ / site.out/ — static-site input / generated output (out not version-controlled).
  • Makefile — build/test/clean driver.

Labs site (labs.bannister.us)

  • Built with Eleventy from sources/labs-site/ (make site), deployed with scripts/labs-deploy.sh (make deploy) to the Dreamhost docroot.
  • /projects/ lists the public projects from sources/projects.yaml (the canonical map), with one page per project at /projects/<id>/.
  • A project marked self_published: true publishes its own pages under /projects/<id>/ — but all publishing to labs.bannister.us goes through this project (see documents/09-project-pages-conventions.md): the project sets pages_source in sources/projects.yaml (path or ssh command); scripts/project-pages-fetch.sh reads it, leak-gates it, and scripts/labs-deploy.sh stages + publishes it with the site. Projects do not push to the web server themselves (an rsync --delete exclusion remains only as a safety net against accidental pushes).

Status

  • Started 2026-08-21 from 00-project-skeleton; working note HOMELAB.md relocated from ~/cluster-setup as documents/04-homelab-overview.md.
  • ~/cluster-setup intentionally left as-is (may be imported here later; it is the potential public example, so it should stay free of personal-infra details).