Files
docs/RESUME.md
T
fkrebs 811bc1af94 backlog: add crawl4ai SSE fix, syncstack consolidation, v5 import generalize
- crawl4ai MCP (SSE transport) fixed and working — 27/27 servers in LobeChat
- syncstack cron fixed (missing cd prefix)
- Backlog section added for: syncstack→gateway consolidation, SSE StreamConsumed
  investigation, v5 collection import generalization

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 23:18:44 +02:00

6.2 KiB
Raw Blame History

Session Resume

Last updated: 2026-05-22. Update this at the end of every session.

Open items (priority order)

Backup gaps

  • Pocket-ID backup — done 2026-05-22. Pre-hook on CT 103 exports via pocket-id export + copies keys to UNAS staging; services-backup-plan → jottacloud. Verified snapshot includes Pocket-ID data.
  • Backrest media-repovideo-projects-plan and media-backup-plan were at 0 snapshots but both restic processes were actively running as of 2026-05-22 19:10. Verify snapshots landed after they complete.
  • Gitea repos — already in services-backup-plan → jottacloud. DB on CT 113 (WAL-G).
  • Coder workspace homes — already in services-backup-plan → jottacloud.

Infrastructure

  • CT 109 "ops" — planned LXC for Prometheus, Loki, Grafana, Alloy, Homarr, sshwifty, Gotify. Not yet built. See infra/proxmox-state.md §16.
  • Second NVMe — needed before Postgres consolidation (CT 113) and rpool mirror. Unblocks moving remaining per-stack PG containers to CT 113.
  • Vaultwarden NFS cleanup/mnt/pve/unas/services/vaultwarden/ deleted 2026-05-22.
  • apps/backrest rename — done 2026-05-22 (renamed from PVE host via ZFS subvolume path; idmapped LXC blocked it from inside CT 104).

MCP / AI stack

  • Consolidate syncstack → MCP gatewaysyncstack.py cron is fragile; move LiteLLM model polling + LobeChat model-list sync into mcp-gateway/server.py alongside the existing plugin sync loop. Delete syncstack container + cron after.
  • crawl4ai SSE StreamConsumed — intermittent 502s on first request after gateway restart (race with in-flight requests from old code). Investigate if still present after a clean restart cycle; likely harmless but worth confirming.
  • Generalize Pocket-ID import script — current importer is hard-coded for Pocket-ID export layout; generalize to handle any v5 collection export format.

Audits / housekeeping

  • Zoraxy audit — CT 108 routes: WS headers, ACME coverage, decommissioned routes, auth consistency (Tinyauth gaps). See services/zoraxy.md.
  • Arcane OIDC secret — rotation was done 2026-05-22 but Arcane has known issues with OIDC. Verify it still authenticates cleanly.
  • AdGuard split-horizon DNS — some internal services still resolve to public IPs instead of LAN IPs for internal clients. Needs rewrite rules audit in services/adguard-dns.md.

Recently completed (session continued ×2, 2026-05-22)

  • crawl4ai MCP fixed: was returning 404 on /mcp (streamable-HTTP). Current 0.8.6 image already has MCP over SSE at /mcp/sse. Added SSE transport support to mcp-gateway/server.py: per-request SSE round-trip with auto-initialize handshake; transport: sse in hardcoded SERVERS + config.json. Gateway health now shows crawl4ai ok; lobe-sync shows 27/27 servers.
  • syncstack cron fixed: missing cd /opt/stacks/ai && prefix caused "no configuration file" every 15 min since ~May 18. Fixed. Manual run confirmed 60 models including 5 Claude models; LobeChat recreated.

Recently completed (session continued, 2026-05-22)

  • claude-max-bridge /v1/responses endpoint: implemented OpenAI Responses API with previous_response_id chaining. Root cause of "session already in use": Claude CLI leaves session JSONL files in an un-resumable "dequeued" state after each --print run. Fix: maintain conversation history server-side as formatted text; inject into system prompt for continuations; always use --no-session-persistence. Also fixed: assistant turns in --input-format stream-json require content as array-of-blocks not string (JS error otherwise). Assistant content array format also fixed in _parse_messages / _parse_responses_input.
  • LiteLLM pass-through for /v1/responses: added pass_through_endpoints entry in /opt/stacks/ai/litellm-config/config.yamlhttp://claude-max-bridge:8000/v1/responses. LiteLLM appends its token hash to the response id, so previous_response_id chaining only works when calling the bridge directly (not through LiteLLM).

Recently completed (this session, 2026-05-22)

  • Pocket-ID backup: pre-hook on CT 103 runs pocket-id export + scp keys → UNAS staging; services-backup-plan snapshots → jottacloud. Verified.
  • Stale NFS vaultwarden dir deleted: /mnt/pve/unas/services/vaultwarden/ removed.
  • Nextcloud CIFS → NFS: crash-loop fixed; CT 105 mp0 migrated from /mnt/pve/unas_smb to /mnt/pve/unas; CIFS fstab entry removed.
  • Vaultwarden → local zfs: /mnt/pve/unas/services/vaultwarden/opt/stacks/vaultwarden/data; stale db.sqlite3 deleted; DB already on CT 113 postgres.
  • WAL-G fixed: immich_postgres and lobe-postgres backups now succeed. Fixed: missing -u postgres, missing data path, set -e abort, dead shared-postgres reference.
  • ComfyUI --async-offload removed: caused CPU fallback + pure-noise output on GGUF img2img with XPU.
  • apps/ decommissioned: dead duplicate compose files in /opt/stacks/apps/ renamed .DECOMMISSIONED-2026-05-22.
  • Docs consolidated: storage.md, volumes.md, homelab-architecture.md, proxmox-state.md, proxmox-memory-audit.md, ct-inventory.md, README.md all reconciled.

Key system state

Host IP Role
nuc (PVE) 192.168.1.20 Proxmox host — SSH gateway to all CTs
CT 104 docker 192.168.1.40 Main Docker host — AI/ML, media, ~65 containers
CT 113 db 192.168.1.6 Shared Postgres 17 + WAL-G → Garage S3 (cron 02:00)
CT 110 id 192.168.1.5 Pocket-ID OIDC IdP
CT 103 backrest 192.168.1.3 Backrest — jottacloud via rclone; UNAS at /mnt/pve/unas
CT 111 dev 192.168.1.42 Coder + Gitea
CT 108 zoraxy 192.168.1.4 Reverse proxy + ACME — always confirm before changes

Constraints to remember

  • Zoraxy (CT 108): always get explicit user confirmation before any config change.
  • Infisical (CT 112): LAN-only, no Zoraxy route — must not be internet-exposed.
  • CT 104 has a separate agent reconciling compose files — rename decommissioned files (don't just stop), update /opt/stacks/CLAUDE.md.
  • ComfyUI container limit: 24 G. Do not raise without measuring host impact.
  • Pocket-ID is SQLite-only — no Postgres migration possible.