blumeops/docs/reference/services
Erich Blume a2f1e06224 Add hephaestus sync hub to indri (launchagent, PWA, device-code OIDC) (#369)
Makes indri the canonical **heph** hub for the hub-and-spoke task/context system, deployed as a self-updating LaunchAgent managed by Ansible. Other devices (gilbert) attach as offline-capable spokes.

## What's here
- **`ansible/roles/heph`** (tag `heph`) — bootstrap `cargo install hephd` (only if absent; `--self-update` keeps it current after), version-pinned `heph-pwa` checkout served via `--web-root`, launchagent `mcquack.eblume.heph`:
  ```
  hephd --mode server --http-addr 0.0.0.0:8787 --db … --web-root …
        --oidc-issuer …/o/heph/ --oidc-audience heph
        --self-update --self-update-interval-secs 600
  ```
  `~/.cargo/bin` is on the agent `PATH` so self-update's `cargo install` works.
- **Caddy** — `heph.ops.eblu.me → localhost:8787` (TLS for the PWA secure context).
- **Authentik** — new `heph` **public device-code** OIDC app + `default-device-code-flow` bound to the default brand's `flow_device_code` (verified live: brand `authentik-default`, field currently unset → additive).
- **Docs** — `services/hephaestus.md` (Path-A seeding runbook + spoke caveat), `indri.md`, changelog fragment.

## Three features requested
- **Autoupdate** — 10-min interval (`--self-update-interval-secs 600`).
- **PWA** — `--web-root` (confirmed shipped in v1.2.0).
- **Spoke** — gilbert reconfig documented (post-merge step).

## Deploy plan (not done yet — awaiting review)
1. Seed from gilbert (Path A): `heph daemon stop` → copy `heph.db` → `DELETE FROM meta WHERE key='origin'`.
2. Sync Authentik `apps`/blueprint; verify blueprint status via API (not just logs).
3. `provision-indri --tags heph,caddy` from this branch.
4. Point gilbert at the hub + `heph auth login`.

## Known follow-ups (heph-side, tracked in the Hephaestus project)
- `heph daemon` can't bake hub/spoke config or pass `--self-update-interval-secs` → worked around by the ansible plist.
- Path-A seeding lacks a clean `hephd --owner-id`/seed command → manual `meta.origin` reset for now.
- Self-update moves hephd ahead of the ansible-pinned PWA shell over time (drift; tolerated by the SW cache, revisit on next release).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #369
2026-06-05 06:46:58 -07:00
..
1password.md C0: review 1password reference card 2026-05-22 21:29:11 -07:00
alloy.md Recurring review sweep: 4 doc cards + nvidia-device-plugin v0.19.2 (#366) 2026-06-04 13:37:02 -07:00
argocd.md Fix stale docs and shell quoting in devpi start script 2026-03-15 19:25:27 -07:00
authentik.md Fix stale docs and shell quoting in devpi start script 2026-03-15 19:25:27 -07:00
automounter.md Review jellyfin and automounter services 2026-03-17 13:06:23 -07:00
borgmatic.md C0: retire Todoist blumeops-tasks; point task discovery at heph 2026-06-03 21:32:10 -07:00
caddy.md Update docs for Caddy routing and direct WireGuard peering 2026-04-18 09:57:30 -07:00
cv.md C1: migrate cv + docs from minikube to indri-native (#342) 2026-04-29 14:55:11 -07:00
devpi.md Migrate devpi from minikube to indri (launchd) (#341) 2026-04-29 13:38:36 -07:00
docs.md C1: migrate cv + docs from minikube to indri-native (#342) 2026-04-29 14:55:11 -07:00
flyio-proxy.md Update docs for Caddy routing and direct WireGuard peering 2026-04-18 09:57:30 -07:00
forgejo-runner.md Upgrade forgejo-runner to v12.8, adopt server.connections, and clean up docs (#338) 2026-04-20 09:03:54 -07:00
forgejo.md Upgrade forgejo-runner to v12.8, adopt server.connections, and clean up docs (#338) 2026-04-20 09:03:54 -07:00
frigate.md Upgrade nvidia-device-plugin v0.18.2 → v0.19.0 and add reference card 2026-03-27 07:19:24 -07:00
grafana.md Restructure docs: consolidate, recategorize, and extract 2026-03-15 19:55:59 -07:00
hephaestus.md Add hephaestus sync hub to indri (launchagent, PWA, device-code OIDC) (#369) 2026-06-05 06:46:58 -07:00
immich.md Migrate Immich from Helm chart to kustomize manifests (v2.5.6 → v2.6.3) 2026-04-04 09:42:25 -07:00
jellyfin.md Review 12 reference docs: fix stale image refs, expand stubs, add cross-refs 2026-03-23 09:51:57 -07:00
kingfisher.md Build custom Kingfisher container from sporked deploy branch (#318) 2026-03-30 06:34:49 -07:00
kiwix.md C0: kiwix — doc review, fix Adding Archives source path 2026-05-04 17:46:16 -07:00
loki.md Review 12 reference docs: fix stale image refs, expand stubs, add cross-refs 2026-03-23 09:51:57 -07:00
mealie.md C0: docs — add mealie borg restore how-to 2026-04-24 19:04:28 -07:00
miniflux.md Review 12 reference docs: fix stale image refs, expand stubs, add cross-refs 2026-03-23 09:51:57 -07:00
navidrome.md C0: review navidrome reference doc 2026-04-18 20:25:19 -07:00
ntfy.md Recurring review sweep: 4 doc cards + nvidia-device-plugin v0.19.2 (#366) 2026-06-04 13:37:02 -07:00
nvidia-device-plugin.md Upgrade nvidia-device-plugin v0.18.2 → v0.19.0 and add reference card 2026-03-27 07:19:24 -07:00
ollama.md C0: review ollama doc — refresh image, models, last-reviewed 2026-05-01 10:42:33 -07:00
paperless.md Deploy Paperless-ngx document management (#328) 2026-04-08 17:54:12 -07:00
postgresql.md Remove superuser from teslamate PG role, transfer extension ownership 2026-04-07 15:36:39 -07:00
prometheus.md Review 12 reference docs: fix stale image refs, expand stubs, add cross-refs 2026-03-23 09:51:57 -07:00
prowler.md Add Prowler IaC scanning of blumeops repo (Saturday 2am) 2026-03-24 16:49:38 -07:00
shower-app.md C1: deploy adelaide-baby-shower-app to ringtail k3s (#349) 2026-05-11 13:47:18 -07:00
snowflake-proxy.md Deploy Tor Snowflake proxy on ringtail (#311) 2026-03-24 20:51:40 -07:00
tempo.md Recurring review sweep: 4 doc cards + nvidia-device-plugin v0.19.2 (#366) 2026-06-04 13:37:02 -07:00
teslamate.md Remove superuser from teslamate PG role, transfer extension ownership 2026-04-07 15:36:39 -07:00
transmission.md C0: transmission doc — review and correct storage/monitoring details 2026-04-29 11:00:01 -07:00
zot.md C0: fix op item edit syntax in zot key rotation 2026-05-22 21:50:43 -07:00