Skip to content

Infrastructure Overview

High-level map of the Liflode technical infrastructure. For connection strings and local service ports, see .claude/rules/ops-facts.md (internal crew reference).


Code & Deployment

Service Role
GitHub (github.com/Curious-Owl11) Source control, CI/CD via GitHub Actions
Cloudflare Pages Static hosting for site-base and proposals repos — auto-deploys on push to main
Cloudflare Workers Serverless functions: email routing (liflode-email-workflows), webhooks, intake
Modal Serverless burst compute for AI workloads (embeddings, proposal generator, context API)

Data

Service Role
Neon Canonical cloud Postgres — production data, accessed by Windmill / Modal / Cloudflare Workers
Local Postgres Staging and ETL database (Docker, localhost:5432). Data is cleaned here before promotion to Neon
Neo4j Graph database for relationships, knowledge graph, and Canon entity projections
Cloudflare R2 Object storage for files, archives, backups, and unstructured data

Data flow: local staging → dedup → standardise → enrich → push to Neon → project to Neo4j where relational.


Automation

Service Role
Windmill Scheduled cron jobs and ETL pipelines (app.windmill.dev, workspace: liflode)
n8n Event-driven webhooks and human-in-the-loop workflows (local Docker, optional profile)
GitHub Actions CI/CD on push to main across all Curious-Owl11 repos
Windows Task Scheduler Local daily jobs: Seek scraper, transcript indexer, Neon sync, Docker volume backup

n8n vs Windmill: n8n handles reactive events (webhooks, Linear triggers). Windmill handles scheduled/code-first pipelines. Non-overlapping. See ADR-044.


Operations

Service Role
Infisical Secrets management (eu.infisical.com). All API keys stored here — never in code
Cloudflare Access Zero-trust auth for internal tools and dashboards
Restic + R2 Backup system for local Docker volumes and Postgres
ntfy Push notification alerts for monitoring events and cron job results

Local Development Stack

Core services start with:

docker compose up -d

Add --profile optional for n8n, Grafana, Moodle, PlantUML, and other non-core services.

Live service status: http://tools.localhost (sourced from the Neon tools table).

Core local services

Service Purpose Port / URL
PostgreSQL Local staging database localhost:5432
Neo4j Graph database bolt://localhost:7687
LiteLLM LLM gateway / proxy litellm:4000
Traefik Reverse proxy + .localhost routing
Adminer DB browser localhost:8181
Prometheus / Grafana Metrics and dashboards grafana.localhost
Loki Log aggregation
ntfy Push notifications ntfy.localhost

Dashboard verticals (optional profile)

All verticals are independently deployable PWAs. Ports 8100–8120+.

Vertical Port Purpose
Dashboard Shell 8090 Main frame + directory
Transcripts 8092 100K+ indexed session turns
Dashboards v2 8095 Modular PWA frame
Atlas 8180 System map / workflow viewer
Routines 8113 Daily routine agent monitor
Innovation Portfolio 8120 IP module discovery + filter
Coaching API 8122 FastAPI coaching backend

Email Routing

All automated email is processed by the liflode-email-workflows Cloudflare Worker — not Gmail.

Address Workflow
it@liflode.com CI failure → Linear IT issue → auto-fix
bill@liflode.com Bill/receipt → Xero draft invoice
quinn@liflode.com Newsletter ingestion
iris@liflode.com Inbound info (F5Bot, feeds, alerts)

GitHub org notifications (Curious-Owl11) route to it@liflode.com. See ADR-129.