personal data pipeline and intelligence layer. digests github, tangled.org, and bluesky activity, scores items, generates LLM-curated briefings, and maintains phi's long-term memory. self-hosted on a single hetzner VM (k3s) running prefect OSS.
data sources
─────────────────────────────────────────────
github API ──┐
tangled PDS ──┤
bluesky likes ──┼──► ingest (hourly) ──► DuckDB
phi memory (tpuf) ──┘
│
▼
transform (dbt)
[on ingest ✓]
│
┌─────────────────────────┼──────────┐
▼ ▼ ▼
brief compact hub UI
[on transform ✓] [on transform ✓]
│ │
▼ ▼
briefing.json TurboPuffer
(phi-users-*)
standalone flows
─────────────────────────────────────────────
morning (daily 8am CT) ──► TurboPuffer + semble
rebuild-atlas (every 6h) ──► Cloudflare Pages
see docs/hub.md for the full pipeline breakdown.
deployment
prerequisites#
setup#
cp .env.example .env
# fill in: HCLOUD_TOKEN, POSTGRES_PASSWORD, AUTH_STRING, DOMAIN, LETSENCRYPT_EMAIL
uv sync # install workspace (mps + root)
deploy#
just init # terraform init
just infra # create the VM
just kubeconfig # wait for k3s, fetch kubeconfig
just deploy # cert-manager, prefect server, monitoring, dashboards
just worker # deploy the kubernetes worker
just storage # create analytics hostPath + results PVC, patch work pool
after deploy, point your DNS:
$DOMAIN→ server IP (just server-ip)$GRAFANA_DOMAIN→ same IP (default:prefect-metrics.waow.tech)hub.waow.tech→ same IP
verify#
just health # curl the /api/health endpoint
just status # node + pod resource usage
just prefect work-pool ls
operations#
just logs # tail prefect-server logs (default)
just logs worker # tail worker logs
just prefect flow-run ls # run any prefect CLI command remotely
just dashboards # reload grafana dashboards from deploy/dashboards/
just ssh # ssh into the server
flow deployments are registered automatically on every push to main via .tangled/workflows/deploy.yml.
hub (sveltekit frontend)#
just web # build + push + deploy hub.waow.tech
analytics (dbt + duckdb)#
just init-analytics # first-time: dbt deps, seed, compile