Projects

Projects I've worked on, technologies I enjoy using and the things I build and maintain.

k8-one.josh.bot

↗

Personal blog written by my AI agent, k8-one.

Astro / Cloudflare Pages

context-ledger

Context layer for agent systems. Gives agents a durable, governed place to work on business objects instead of leaving conclusions in chat logs.

Python / MCP / AI

Agentica

Six isolated Hermes Agent profiles from one container image, each with its own state, identity, resource limits, and network isolation.

Docker / AI

Pi Triad

Pi extension that pairs an implementation model with Claude Code as an adversarial reviewer and a third model choosing the review focus.

TypeScript / AI

Dream Loop

Knowledge-maintenance system for Obsidian notes: preserve originals, flag stale facts, review corrections, and measure retrieval accuracy.

Python / Obsidian API / AI

cartograph

↗

Code mapping tool with style consistency analysis and diff-aware code review.

Python / AI

repodoc

↗

Documents a repository using a local LLM. The precursor to cartograph.

Python

bookalysis

↗

EPUB analysis pipeline with LLM-powered annotations. Three-column web reader.

Python / Flask / AI

autonotes

↗

FastAPI application for Obsidian vault analysis. Auto-triage, note clustering, LLM integration.

Python / FastAPI

llm-agent

↗

Minimal LLM agent runner written in Go.

Go / AI

idealizer

↗

Textual TUI that generates ideas as Mermaid diagrams.

Python / AI

tmania-replay-viewer

Browser-based TrackMania replay viewer. Parses GBX replay files and renders the run in 3D.

TypeScript / Three.js / Vite

TrackAddict

Local TAS investigation prototype for TrackMania Nations Forever. An AngelScript plugin observes the game while TMInterface plays the inputs.

AngelScript / TMInterface

Elegy Campaign Player

→

Solo vampire TTRPG webapp. 19 TypeScript engine modules, 886 tests, optional LLM narration.

TypeScript / React / OpenRouter

elegy-gen

↗

Generators for the solo tabletop RPG Elegy.

TypeScript

Solution Pitch

Pass-the-device bluffing game built on the 1996 Grim Fandango puzzle document. A single HTML file.

Javascript / CSS

breakerz

↗

Brick breaker game built with Phaser.

Javascript / Phaser

wordle-clone

↗

Wordle clone written in Python.

Python

LiftLog

↗

Full-stack weightlifting tracker. Strong CSV import, exercise library, strength standards, AI insights.

Go / SvelteKit / SwiftUI / PostgreSQL / TypeScript

Strong Stats

↗

Dashboard for Strong app exports: progression, estimated 1RMs, PRs, volume, and consistency.

TypeScript / React / NextJS / Vite

OmniCollect

↗

Schema-driven desktop collection manager. Define any collection type (coins, books, stamps) as a JSON schema, no code changes needed.

Go / Vue / Wails / SQLite

cbr-egui

↗

Native CBR, CBZ, PDF, and DjVu comic and book reader with a content-addressed managed library.

Rust / egui

pb-viewer

↗

Photo parsing tool in Go and TypeScript, built as a Spec Kit experiment.

Go / Javascript / Speckit

Book Sorter

CLI that identifies PDF, EPUB, MOBI, and DjVu files and builds a safe move plan into a Library of Congress Classification hierarchy.

Python

movielog

Media catalog for movies, books, comics, and magazines. TMDB integration for automated metadata.

Python / SQLAlchemy / PostgreSQL

dl-organizer

Sorts ~/Downloads into category folders by file extension, with backups and an ignore file.

Python

cal

↗

Single-page calendar backed by DynamoDB.

Javascript / CSS / Cloudflare Pages

Alien canon timeline

↗

Client-side timeline tracking the increasingly disparate lore of the Alien franchise.

Javascript / CSS / Cloudflare Pages

routinerampage

↗

Habit tracker with a 90s-inspired theme.

TypeScript

stoicisms

↗

macOS app and desktop widget that shows a daily Stoic quote.

Swift

Metrognomic

↗

Metronome app for dance practice. One of my first Swift projects.

Swift

ceefax

↗

Ceefax teletext clone, built for fun.

Python

obsidian-uuidstamper

↗

Obsidian plugin that stamps notes with a UUID and timestamp.

TypeScript / Obsidian API

personal-blog

↗

An earlier version of this blog, built in Astro.

Astro

nextjs-blog

↗

The original version of this blog, in Next.js, before the move to Astro.

Javascript / NextJS

Python
13
AI
10
TypeScript
8
Javascript
6
Go
5
Rust
5
egui
3
PostgreSQL
3
Docker
3
Cloudflare Pages
3
CSS
3
Kubernetes
2
Helm
2
Shell
2
Astro
2
Obsidian API
2
Vite
2
React
2
NextJS
2
Swift
2
DynamoDB
1
Lambda
1
Argo CD
1
Erlang
1
Terraform
1
MCP
1
Flask
1
FastAPI
1
Three.js
1
AngelScript
1
TMInterface
1
OpenRouter
1
Phaser
1
SvelteKit
1
SwiftUI
1
Vue
1
Wails
1
SQLite
1
Speckit
1
SQLAlchemy
1