The main page has the six projects I'd defend in a design review. This page has everything else: the bots that actually run every day, the games, the Linux distro, the learning labs, and the two or three things I built properly and then walked away from. Nothing here is hidden — it's just not the headline.
These are up right now, doing real work for real users — mostly on my own hardware.
Three bots in daily use. Jefebot runs 30+ AI personalities, a film club, and 25+ Twitch commands. VibeBot4000 is a live DJ and hype bot with shoutout queues and raid detection, running on someone else's stream. GygaxBot handles tabletop RPG campaign management with a five-stage AI session archival pipeline. All AI routing goes through local inference with a fallback chain.
15+ HTML5 browser games, three satirical idle games, and an MMO prototype in MonoGame (C#, .NET 8) with a Final Fantasy Tactics-style job system and a 101-test suite. Thirteen of the prototypes were built in a single session by running AI agents in parallel — a genuinely useful stress test of that workflow.
The scheduler behind the agent fleet. Runs CLI-driven coding agents with shared lifecycle management, cost tracking, and task scheduling, so long-running work can be handed off and picked back up. Recursive orchestration — agents spawning and supervising sub-agents — is the current line of work.
One screen for the whole ecosystem: repo status, backlog and epics, security findings from Sentinel, CI/CD state, service health, and in-flight agent sessions. Built because tracking forty repos across two machines in my head stopped working.
A custom Prometheus exporter plus Prometheus, Grafana, Blackbox Exporter, and AlertManager, covering both a Windows workstation and a Linux server. Alerts route to Discord and email. It has caught real outages, including a boot-order race that took down half the service fleet after a power cut.
An AI-autonomous Twitch streaming pipeline. Chat-driven AI art generation, 22 visual themes, fair round-robin queueing, content safety filtering, follower alerts, and a creator dashboard — all wired to OBS over WebSocket. The "vibe" is a single creative knob that steers text personality, overlay theme, and visuals together.
Home automation with air-quality sensor integration, push notifications, OAuth2, Google Smart Home fulfillment, and Prometheus metrics. Gigi is the voice layer: wake-word detection, faster-whisper speech-to-text, and local text-to-speech, with a tablet PWA client.
A standalone CPU-only text-to-speech service, factored out so the bots, the voice assistant, and the tabletop RPG narration pipeline could all share one implementation instead of three.
Committed to in the last few months. Real, unfinished, moving.
A hardened Alpine-based distribution with six-layer defense-in-depth, four build variants, and automated security auditing. Reproducible ISO builds land in under eight minutes through a Jenkins pipeline. The design rationale is written up in full — why each hardening layer exists and what it actually costs.
A privacy-first therapy and wellness assistant. Conversational support backed by a local model with 44 curated therapy documents indexed for retrieval, and encrypted local session storage. Nothing leaves the machine — no cloud calls, no telemetry. That constraint is the whole point of the project.
A portable microkernel targeting ARM64, bootable from USB, sharing crypto primitives with the main x86_64 kernel. Small footprint by design — a testbed for how much of JefeOS survives an architecture change.
Personal wellness and habit tracking. Python API, TypeScript frontend, local storage only.
An internal translation service pairing NLLB-200 with a dedicated language-detection library. Built after discovering that bolting per-language dictionary patches onto a translation layer is an infinite game of whack-a-mole — better to run a real model.
Built to learn something specific rather than to ship. Useful anyway.
A DevStack deployment on a Hyper-V VM, stood up to learn private-cloud operations end to end rather than from documentation. Horizon is up and the next step is graduating it off NAT-only networking.
A small web app and CLI for watching local language models talk to each other round-robin. A playground for comparing model behaviour side by side, entirely on local inference.
A local-only flashcard and quiz app with SM2-lite spaced repetition, written to drill infrastructure and DevOps interview material. Unglamorous and effective.
A scratch repo for Terraform practice — provider behaviour, state handling, and the failure modes you only find by breaking things deliberately.
A 2D platformer, caught mid-migration to Godot and deliberately deprioritized. Left in the drawer honestly rather than quietly deleted.
Every portfolio quietly drops the projects that stalled. These two didn't fail technically — they lost a priority argument to something else, which is the more common way work actually stops. Listing them costs me nothing and saves you from finding them yourself and wondering what I was hiding.
Voice, video, and screen sharing for FreeChat, built on a LiveKit SFU. It works. It got parked when hardening FreeChat's core encryption and shipping its Android client mattered more than adding a second real-time surface to maintain.
A social platform on Express/TypeScript and React with Prisma and Postgres, including a five-layer XSS defense I still think is good work. The deploy pipeline was written correctly and then never pointed at a CI runner — so it has never actually gone live. An honest case of building the thing and not finishing the last mile.
The remaining repos are plumbing rather than projects: Jenkins and Forgejo Actions pipeline definitions, database and reverse-proxy container stacks, identity infrastructure, API collections, the planning and roadmap docs, and an archive repo for material that has been migrated or retired. Necessary, well-kept, and not interesting to read about.