Projects
Side projects
Things built outside of work hours — mostly AI tooling, creative coding, and experiments that got out of hand.
Thalos
ActiveFeaturedAgentic application platform
Python/Django/LangGraph platform for building and running complex agentic applications. It is my personal side-project platform and shared runtime for tools, memory, multi-agent orchestration, and safety guardrails. It powers this site, the thalos.ai site, Delicio.ai (coming soon), and a Discord bot that can run both structured and more improvisational RPG sessions, such as a party investigating a haunted mining town while the bot tracks NPCs, inventory, and branching story state.
Also
MidnightEngine
ActiveInteractive fiction engine
A dual-surface interactive fiction engine: a CLI with Rich and prompt_toolkit, and a full web platform on FastAPI and Next.js. Supports five session modes — chat, adventure, terminal, freeform (reasoning-model-generated sandbox), and Chronicle, a structured narrative RPG with d20 resolution, XP progression, anomaly events, and persistent engine state. Uses a split-model architecture: a fast streaming model for real-time narration and a deeper reasoning model for adventure and scenario generation.
Driftwall
ActiveAI wallpaper curator for GNOME
Classifies your photo library once using a local Ollama vision model, then rotates wallpapers intelligently by time of day, season, mood, and orientation — no manual tagging. The headline feature: point it at a folder of books, quotes, or your own writing, and Driftwall embeds everything into a local ChromaDB vector store. When a new wallpaper appears, it queries the store using the image's AI-generated description and surfaces semantically relevant passages as fading text overlays. A mountain landscape might pull up Muir. A storm at sea might pull up Conrad. None of it is hardcoded.
PhotoAtlas
ActivePersonal AI photo catalog
Django application that ingests local photos and runs them through a local Ollama vision model (qwen3-vl:32b) to generate structured JSON metadata: scene summaries, transcriptions, object classifications, mood, and more. Stores embeddings for hybrid semantic + text-filter search. Designed to work entirely on your own hardware — no cloud, no API keys, no data leaving your machine. Think Google Photos, but your GPU does the work.
jam_friend
ActiveReal-time music visualizer
Captures system audio or microphone input on macOS using a Swift helper built on Apple's Core Audio Taps API, then passes the stream to a Python/Pygame renderer for FFT analysis and beat detection. Produces reactive waveform and frequency visualizations that respond to whatever is playing. Built out of the same restlessness that led to SoundViz — this time with actual beat detection and Swift bridging.
querysaurus
ArchivedRAG starter kit
A Jupyter-based starter kit for RAG (Retrieval-Augmented Generation) written during the initial LLaMA 2 wave in 2023. Built as the example project for a bootcamp talk on building AI software — covering vector storage with FAISS, retrieval chains with LangChain, and local model hosting via Ollama. Now a snapshot of where the field was before every framework had a tutorial.
More on GitHub.