Things I'm building…

Platform

Winnie

Self-hosted homelab: a Windows 10 workstation (Threadripper 1920X, 96GB RAM, RTX 5060 Ti) running 30 independent projects through Docker Desktop/WSL2, with Postgres per-project, n8n and Cronicle for scheduling, Cloudflare Tunnel + Access for edge/SSO, and CLAW — a from-scratch multi-agent Slack assistant — coordinating it all.

  • Docker/WSL2
  • Postgres
  • Cloudflare Tunnel + Access
  • n8n
  • Cronicle
  • LM Studio (local LLM)

The whole thing runs under a self-authored governance system (project passports, machine-readable inventories, reconcile records) that treats documentation drift as a bug to fix, not a fact of life.

Agents

CLAW v2

Multi-agent orchestration stack: 6+ named Slack agents (Idris, Larry, Deepna, Boise, Round Table, Sentinel, Forge) on a shared runtime, Postgres-backed memory, LM Studio-routed local inference, Cronicle-scheduled jobs, Gmail/Calendar ingestion via Courier.

  • Python (Starlette + slack-bolt)
  • Postgres 16 + pgvector
  • Docker Compose
  • Cronicle
  • LM Studio
  • Loki/Tempo

Highest-criticality project in the fleet — runs daily briefings and email/calendar triage, and is the network backbone every other project attaches to.

BEACON

Multi-tenant spin-off of CLAW's companion-agent persona, packaging isolated per-person instances: own Postgres, sops-encrypted secrets, brain directory, and chat surface, stamped from one compose template.

  • Python
  • Postgres 16
  • Docker Compose
  • sops+age

Proving ground for extending CLAW-style daily support beyond a single user.

Web

AppApply

Autonomous job-application agent: scores and tailors a résumé per posting, fills ATS forms via a shared LLM, records every Q&A in an append-only, hash-chained encrypted audit trail.

  • Python (FastAPI + HTMX)
  • Postgres 16
  • Playwright
  • LM Studio
  • Cloudflare Tunnel/Access

Automates the mechanical part of a job search at volume while keeping a cryptographically verifiable record of what was told to every employer.

Steward

Local web-intelligence harness: pluggable modules declare what to watch (event listings, job postings); a privilege-separated runtime handles search, fetch, extraction, confidence scoring, and human approval gates.

  • Python (FastAPI)
  • Postgres 16 + pgvector
  • SearXNG
  • changedetection.io
  • LM Studio

Structurally incapable of spending money, logging in, or submitting a form on its own — modules are pure functions with no I/O handles.

Galaxy

Live health dashboard rendering every Winnie service as a body in orbit: dependency depth as radius, compute activity as speed, blast radius as size, live health as color.

  • Python (FastAPI, SSE)
  • Prometheus
  • Cloudflare Access

One at-a-glance answer to "is everything healthy right now" across 30 independent projects, with a hard rule that absent data never renders as healthy.

East End PC Intranet Launcher

Tile-grid front door to every self-hosted app, and the de facto edge-publishing mechanism three sibling projects depend on instead of maintaining their own Cloudflare automation.

  • nginx
  • Cloudflare Tunnel + Access

Delivers one weekly single sign-on across eleven independently-hosted apps built entirely from stock Cloudflare Access primitives.

ATS Screener

Scores a résumé the way six real applicant-tracking systems parse it (Workday, Taleo, iCIMS, Greenhouse, Lever, SuccessFactors), client-side with an LLM assist.

  • SvelteKit
  • LM Studio (via a custom Ollama-compatible shim)
  • Docker

Ported a Vercel-targeted open-source app to run fully offline via a one-file adapter swap and a ~300-line protocol shim — no résumé text leaves the machine.

Resume Matcher

Tailors a résumé to a job description: LLM-scored match, keyword-gap analysis, rewritten export.

  • Next.js + FastAPI
  • LM Studio
  • Docker

Fully local tailoring pipeline — parsing, scoring, rewriting, PDF export all in one container, zero cloud keys.

Markdown Resume

Browser-only résumé editor: Markdown in, paginated ATS-friendly preview out, export to PDF/DOCX/HTML.

  • Nuxt (static build)
  • nginx

Zero backend, zero secrets — the container can be destroyed and rebuilt anytime without losing anything.

MFTP 2026

Disposable-by-design event page with a public RSVP headcount, isolated with its own Postgres and dedicated Cloudflare Tunnel.

  • Node.js
  • Postgres
  • Cloudflare Tunnel

Self-hosted so it survives independent of any other device, and small enough to tear down entirely after the event.

Automation

n8n

Self-hosted workflow automation, now down to two production workflows (a daily unsubscribe digest and its execute webhook) after CLAW absorbed the Gmail/Calendar data plane.

  • n8n
  • Postgres 16
  • Cloudflare Tunnel

The workflows matter little; the project matters because it owns the shared Cloudflare tunnel serving 14 hostnames across 9 other projects.

Data

Anytype self-host

Private sync backend replacing Anytype's cloud with a self-hosted any-sync network (tree nodes, coordinator, filenode, consensus).

  • any-sync
  • MongoDB
  • Redis
  • MinIO
  • Docker Compose

A complete, self-contained replacement for a cloud note-sync service holding irreplaceable notes.

RociPass

Read-only Airtable-style grid over every Postgres database in the stack, plus an Expanse-style animated map of real historical system activity.

  • FastAPI
  • vanilla JS + Tabulator
  • SQLite
  • Cloudflare Access

Read-only enforced at the database role level, not just the UI — genuine cross-system observability built from data that already existed.

Lab / ML

Image Gen

Local text-to-image pipeline: an LLM prompt enhancer feeds ComfyUI on the host GPU, served through a Streamlit UI.

  • ComfyUI
  • Streamlit
  • LM Studio
  • native Windows

Fully local, GPU-resident generation behind a UI a non-technical user can drive directly.

speaches

Self-hosted, OpenAI-API-compatible speech-to-text server running faster-whisper large-v3 on GPU.

  • faster-whisper
  • Docker
  • NVIDIA CUDA

Transcription engine behind CLAW's voice intake — any OpenAI-audio-API client works against it with zero code changes.

Media

Immich

Self-hosted photo/video library (~1.8TB) with GPU-accelerated semantic search and face clustering.

  • Immich
  • Postgres + pgvector
  • CUDA ML worker
  • Valkey

Irreplaceable personal media with zero cloud dependency — GPU drives both transcoding and search.

Development

pgAdmin

Browser UI onto the homelab's two main Postgres servers, pre-registered for zero-setup access.

  • pgAdmin 4
  • Docker

Fastest path to hand-inspecting production databases; loopback-only since it holds real credentials.

Observability

Winnie Observability

A from-scratch monitoring fleet: Prometheus + Grafana as the front door, Windows/Alloy/Postgres exporters as the senses, GPU telemetry, offline packet-capture network visibility (Zeek/Suricata), and dual-layer uptime checking (blackbox probes + Uptime Kuma origin checks).

  • Prometheus
  • Grafana
  • Grafana Alloy
  • Zeek/Suricata
  • Uptime Kuma
  • blackbox_exporter
  • nvidia_gpu_exporter

Every other project's health ultimately surfaces here, built around one rule: absence of data is never treated as healthy.