Projects

Side projects

Things built outside of work hours — mostly AI tooling, creative coding, and experiments that got out of hand.

Thalos

ActiveFeatured

Agentic application platform

thalos.ai

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.

PythonDjangoLangChainLangGraphNext.jsPostgreSQLRedis

Also

MidnightEngine

Active

Interactive 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.

PythonFastAPINext.jsPostgreSQLGrok APIWebSockets

Driftwall

Active

AI wallpaper curator for GNOME

github

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.

PythonOllamaChromaDBSQLiteGNOME

PhotoAtlas

Active

Personal 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.

PythonDjangoOllamaHTMXpgvectorSQLite

jam_friend

Active

Real-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.

PythonSwiftPygameCore AudioFFT

querysaurus

Archived

RAG starter kit

github

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.

PythonLangChainLLaMA 2FAISSOllamaJupyter

More on GitHub.