From ccadcecfef4a3e4e936d374689246fc78fbbbd24 Mon Sep 17 00:00:00 2001 From: Mathias Date: Sat, 6 Jun 2026 11:24:23 +0200 Subject: [PATCH] docs(readme): add tapir serve, fix TAPIR_DISCOVERY_INTERVAL reference --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b560216..7c24434 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ model, behavior specs) remain the source of intent. ## Running the Stage-0 demo -Tapir runs on **your own** YouTube account: authorize once, then run the +Tapir runs on your YouTube account(s): authorize once, then run the watch→summarize→deliver loop. All configuration is via `TAPIR_*` environment variables — copy [`.env.example`](.env.example) to `.env` and fill it in (no secrets are committed; at demo time source them from op, e.g. `op run -- ...`). @@ -56,7 +56,7 @@ go build -o bin/tapir ./cmd/tapir ./bin/tapir auth # 3. run: detect new videos across your subscriptions, summarize, deliver to the -# store. Unset TAPIR_POLL_INTERVAL = single pass; set it (e.g. 15m) to loop. +# store. Single pass; set TAPIR_DISCOVERY_INTERVAL (e.g. 2h) for the serve loop. ./bin/tapir run ``` @@ -68,6 +68,16 @@ URI matches `TAPIR_OAUTH_REDIRECT_ADDR`. The summarizer model (`TAPIR_SUMMARIZER_MODEL`, default `koala/phi4-mini`) is overridable; pick the final alias when the gateway is reachable (see `docs/homelab-integration.md`). +### Web surface (`tapir serve`) + +`tapir serve` starts the HTMX+Templ web UI on `:8080`. Users log in via Dex OIDC (local +password or Google); a new Dex subject is routed to `/register` to create a Tapir account. +Stage 1 is multi-user: each user connects their own YouTube account from the browser and +manages their own summaries under DB-enforced RLS isolation. When `TAPIR_DISCOVERY_INTERVAL` +is set (e.g. `2h`), the serve process runs a scheduled discovery pass for every registered +user automatically — no CronJob required. See `docs/homelab-integration.md` for the full +config reference. + ### Headless on koala koala has no browser and no interactive `op` session, so the two interactive