Find a file
oskar 8031396f04 docs: session 2026-08-06 — deploy fixu dispatch 0o775 + zdjecie M1 na SOLARII i VPS
Wdrozenie do runtime dwoch zmergowanych commitow (52eca1c, 1bab321), zero zmian
w kodzie. Deploy przez deploy-service.sh --build-if-needed, nie przez
deploy.sh <target>: ten drugi to dyspozytor Saturn-side po SSH deployujacy caly
node (na VPS ruszylby npm/outline/joplin/ai-cluster), a sesja toczyla sie z
SOLARII, gdzie `ssh solaria` to polaczenie do samego siebie.

Pierwszy cykl prune po zdjeciu M1 poszedl zgodnie z ostrzezeniem z 1bab321 —
markera last-docker-cleanup nie bylo na zadnym z nodow, wiec cleanup odpalil
~0,5 s po starcie. Zero ubytkow kontenerow (SOLARIA 9/9, VPS 24/24), humanai-*
nietkniete. Dwie prognozy wymagaly korekty, obie bo `docker images` pokazuje
rozmiar pozorny z warstwami wspoldzielonymi: na SOLARII 4 dangling zniknely, ale
SpaceReclaimed=0 (warstwy dzielone z control-plane i kb-query), a na VPS jedyny
dangling okazal sie zywym obrazem outline-postgres-1 (flaga U) i prune go nie
ruszyl — slusznie.

Test dispatch end-to-end: wszystkie 6 kryteriow spelnione. dispatch/lustro
755 -> 775 w momencie zapisu przez executora, plik akcji zniknal ze zrodla i nie
wrocil, oba zalegle pliki z 10:39 i 11:08 zdrenowaly sie przy okazji, a spam
"already processed — skipping" co 60 s ustal. Poszlo przez approved/, nie przez
approval operatora: supervisor auto-anulowal pending po 7 s jako
drift_resolved_auto, zanim operator zdazyl kliknac.

Klasyfikacja rc=23 pozostaje niezweryfikowana na zywo — LUSTRO ma nadal stary
node-agent (fee079e8), ktory fizycznie nie umie tego zalogowac (follow-up #3).

Refs docs/sessions/2026-08-06.md (follow-up #1, #5)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 15:22:49 +02:00
.claude/skills fix(kb): przepiecie wszystkich odwolan wewnetrznych po migracji 2026-08-04 16:58:46 +02:00
backups/zigbee Add Zigbee coordinator backup 2026-05-14 18:24:26 +02:00
docs/sessions docs: session 2026-08-06 — deploy fixu dispatch 0o775 + zdjecie M1 na SOLARII i VPS 2026-08-06 15:22:49 +02:00
dotfiles add shared zshrc 2026-05-10 20:52:44 +02:00
hardware/esp/ir-ac-ha-integration feat(kb): przenosiny type=service do kb/services/ (13 plikow, bez SPLIT) 2026-08-04 16:58:04 +02:00
hosts revert(m1): zdjecie NODE_TYPE=lte_node na SOLARII i VPS po wdrozeniu R1 2026-08-06 13:47:09 +02:00
inventory feat(supervisor): duty-cycle nodes — liveness transitions logged, not actioned 2026-08-05 13:48:29 +02:00
jobs eval(retrieval): przekwalifikuj N2 na mail_query M5, nowa kontrolka N3 2026-08-06 13:22:23 +02:00
kb docs(recon): przyrostowka IMAP gmail + fastmail — Krok 7 fazy mailowej 2026-08-06 14:13:23 +02:00
packages fix(mail-body-ingest): usuwaj NUL (0x00) z tekstu przed chunkowaniem i embedem 2026-08-06 11:14:09 +02:00
scripts fix(kb-site): token bramki w kazdym linku wewnetrznym generatora 2026-08-05 20:29:27 +02:00
services fix(dispatch): inbox 0o775 + rsync rc=23 przestaje byc cichy 2026-08-06 13:42:47 +02:00
.codex Document current homelab state 2026-04-15 17:37:25 +02:00
.gitignore feat(kb): generator publicznej warstwy KB (gen_pages.py) 2026-08-04 17:57:15 +02:00
.mcp.json feat(ha-mcp): read-only MCP server (faza 2a) 2026-07-30 16:47:27 +02:00
CLAUDE.md fix(kb): przepiecie wszystkich odwolan wewnetrznych po migracji 2026-08-04 16:58:46 +02:00
codex_context Add session context state 2026-04-20 22:10:39 +02:00
codex_context.yaml add shared context lock 2026-05-05 17:25:50 +02:00
deploy_agent.py Add deploy escalation output 2026-04-22 22:08:26 +02:00
ollama_client.py Initial shared homelab agent workspace 2026-05-03 19:37:40 +02:00
README.md fix(kb): przepiecie wszystkich odwolan wewnetrznych po migracji 2026-08-04 16:58:46 +02:00
start-aider.sh Initial shared homelab agent workspace 2026-05-03 19:37:40 +02:00
start-codex.sh Initial shared homelab agent workspace 2026-05-03 19:37:40 +02:00
sync-context.sh add shared context lock 2026-05-05 17:25:50 +02:00
update-context.md Initial shared homelab agent workspace 2026-05-03 19:37:40 +02:00

Homelab Codex

GitOps-lite orchestration for a distributed homelab environment.

Architecture

The homelab consists of several nodes connected via a Tailscale internal mesh.

Host Role Description
SATURN Primary Node Development, orchestration, and git source of truth (commit node).
SOLARIA Compute Node GPU, inference, and heavy compute workloads.
PIHA Infra Node Core infrastructure services, automation, and monitoring.
VPS Edge Node Public ingress, reverse proxy, and edge services.

Agent System

The homelab uses a multi-agent orchestration model with human-in-the-loop for destructive actions:

Agent Node Role
stability-agent all nodes Per-node watchdog — monitors Docker, disk, Tailscale, MQTT; emits events
node-agent all nodes Publishes container health events to Redis pub/sub
observer VPS Synthesizes world state from events into /opt/homelab/world/*.json
supervisor VPS Detects drift between desired and actual state; writes pending actions
planner-agent SOLARIA LLM-powered diagnosis — listens to Redis, proposes remediation actions
executor VPS Executes actions only after operator approval
operator-ui + telegram-bot VPS / PIHA Operator reviews and approves/rejects pending actions

Action approval flow: pending/ → operator approves → approved/ → executor runs.

Repository Structure

Getting Started

  1. Standardization: Follow the Infrastructure Standards.
  2. Deployment: See Deployment Conventions for how to roll out changes.
  3. SATURN: Remember that SATURN is the only node where commits should be made.

Documentation Index


Note: This repository documents the state of the homelab. Runtime state lives outside the repository in /opt/homelab.