Projects

Experiments and demos built with real technology.

Offline

Trip Planner (Chain of Agents)

Type a trip request and watch a chain of specialised agents hand the work along in real time until they deliver a day-by-day itinerary checked against your budget. A LangGraph orchestrator owns the control flow; a local Qwen 2.5 writes only the prose, while typed decisions and plain arithmetic handle the rest. When the plan goes over budget, a conflict-resolution agent renegotiates it without a human. Local LLM (Qwen 2.5 via Ollama) and no API keys; live weather, places and exchange rates come from open data sources.

PythonFastAPILangGraphOllama (Qwen 2.5 1.5B)SSE
Offline

Agentic Racing

Six identical cars race a closed circuit in the browser. Each car is a two-tier agent: a pilot that drives every frame, and an independent LLM team boss that reads live telemetry and radios back a strategy — attack, defend, conserve — F1 team-radio style, on screen. The race never waits on the model: a fixed heuristic takes over the instant it is slow, off, or replies invalid JSON. Fully self-hosted: a local llama3.2:3b behind a proxy with its own circuit breaker, rate limit and concurrency gate.

Unity WebGLPythonFastAPIOllama (Llama 3.2 3B)
Offline

RAG Chatbot over Blog Posts

An interactive retrieval-augmented generation chatbot that answers questions using my blog posts as a knowledge base. Fully self-hosted: semantic vector search (pgvector) with multilingual embeddings and a local Qwen 2.5 LLM served by Ollama — no external LLM APIs.

PythonFastAPIpgvectorsentence-transformersOllama (Qwen 2.5)
Offline

The Dreaming Agent

A conversational agent with three-level memory (short, mid and long term) and a "dream" phase that consolidates it offline, inspired by LightMem (ACL 2026). Chat with it and watch what each module decided on every turn, what lives in each memory level, and what the Dream changed — merges, updates, promotions and forgets, as a diff checked by a deterministic validator. A selector answers with LightMem, a naive RAG, or both side by side. Fully local: a small Qwen 2.5 3B and bge-m3 embeddings on Ollama, no external APIs.

PythonFastAPISQLiteOllama (Qwen 2.5 3B)bge-m3
Offline

Harness² AI Agent Playground

An interactive walkthrough of recursive agent optimization: Harness² improves an agent's harness — its system prompt, memory and tool guidance — rather than its model, in a Propose → Probe → Compose loop. Pick a Legal LAB, JobBench or WorkBuddy scenario and watch a small open-weight model (Qwen2.5 1.5B or Gemma 2 2B, served by Ollama inside the demo, no external API) propose each candidate change, probe it on task variations and compose it into the harness if a same-model judge scores it higher, with the base and optimized outputs side by side. Runs are live and streamed over SSE; on CPU an iteration takes 1–2 minutes (Gemma is slower), scores are subjective estimates, and the demo does not run the original Google optimizer. A cached example is available too.

AstroReactPythonFastAPISSE