Things I'm building…
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.
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.
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.
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.
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.
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.
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.
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.
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.