The hard problem first, then what I did about it.
Filter by area or search for anything: a language, a library, a word.
RobOS
Browser Operating System
A complete desktop operating system that runs inside a browser tab: windowing, a file system and real applications, with Python itself executing client-side through a Pyodide runtime.
- Python runs in the browser through Pyodide — an actual CPython runtime, not a transpiler
- Window manager, virtual file system and application launcher written from scratch
- Applications load as independent modules, each over its own WebSocket channel
727,128 lines · 645 commits · FastAPI, Flask, Uvicorn, PyQt
Agent Orchestrator
Self-Correcting LLM Pipeline
A desktop orchestrator that splits one local language model into a team of specialists — planner, generator, critic, repairer, enhancer — which pass typed JSON between them and are structurally able to reject each other's work.
- Five named stages with typed contracts, not one prompt pretending to be a team
- Rejection is structural: the critic emits a report the repair stage must act on
- Recursive self-correction and enhancement cycles rather than a single pass
342,517 lines · Flask, PyQt, Pydantic, Next.js
AerobizX
Airline Strategy Simulation
A full airline-management strategy game — route networks, fleet economics, demand and rival carriers that react to your moves — simulated entirely in the browser, behind a small server that only serves files and stores saves.
- The entire economic model runs client-side — the server only serves files and saves
- Competing carriers respond to player decisions rather than following a script
- Up to four players in local hot-seat
292,114 lines · 1,341 commits · Flask, Express
VoxelBlox
Open-World Voxel Sandbox
An open-world voxel sandbox in Python — dig, build, drive, fly to space — where every texture, model, sound and note of music comes from code, and whose racing game made the jump to the browser with its physics proven identical.
- every texture, model, sound and piece of music generated in code
- Voxel Racers carried into the browser and proved against the Python game: all 7,200 physics ticks identical
- WebRTC multiplayer with a signed handshake; 13-18 ms round trips measured between two machines
291,760 lines · 1,984 commits · NumPy, Pillow, Pygame, ModernGL
VoxelStrike
Destructible Combat Engine in Python
Land, air and sea combat over terrain you can actually blow holes in, written in Python and kept at frame rate by Numba-compiled kernels and a per-pixel GPU raymarch.
- two renderers over one height field: the Comanche-style column raycaster in Numba and a per-pixel GPU raymarch
- craters carved into the live terrain, rims slumped so a machine can always drive back out
- every gate shown to fail on a deliberate revert; A/B benchmarks interleaved against HEAD
286,276 lines · 2,484 commits · NumPy, Pillow, Pygame, ModernGL
D-Docs
Document Publishing Pipeline
Turns a markdown file into a polished, self-contained HTML site or PDF in one command, generating hierarchy, table of contents, breadcrumbs, anchors and zoomable diagrams automatically.
- One command from markdown to a shareable HTML site or PDF
- Automatic heading hierarchy, breadcrumbs, anchors and zoomable SVG
- Four content-flow models rendered from a single source document
272,152 lines · 1,162 commits · PyQt, NumPy, ONNX Runtime, Pillow
Whisper Portal
Transcription & Agentic Code Editor
A bulk transcription platform with speaker diarization that grew into an agentic code editor: the model is handed real search, read and edit tools and investigates a codebase itself instead of guessing from a pasted file.
- A real tool-calling loop — search, read, edit — not a single-shot prompt
- Meetings record until stopped; fleet meetings get speakers by diarizing first, then transcribing each speaker's span
- An on-demand analysis tab: eleven meeting analyses and questions answered from the transcript
202,168 lines · 561 commits · FastAPI, Uvicorn, PyQt, PyTorch
CodeContext
LLM Context Workbench
A desktop workbench for assembling exactly the right context to hand a language model: select individual functions and classes out of a codebase rather than dumping whole files, and keep reusable libraries of system messages and prompt templates.
- Entity-level selection — individual functions and classes, not whole files
- Reusable libraries of system messages and prompt templates
- A full desktop application for a task most people do ad hoc in a text editor
155,048 lines · PyQt, NumPy
Growth Quest
Family Responsibility RPG
A React and FastAPI role-playing game that turns household responsibilities into quests, with every line of spoken dialogue generated ahead of time from a content database so the game never calls a speech service at runtime.
- All voice content pre-generated from a database — no runtime speech calls
- Idempotent generation: adding content produces only the new audio
- Shared type package keeps backend and front end in step
111,390 lines · 4 tests · 6 commits · FastAPI, Uvicorn, Pillow, Pydantic
CodeAtlas
Codebase Inventory & Portfolio Engine
Keeps an inventory of a personal software estate across four drives and refreshes it every night behind its own test suite: a reuse index, measured dependency graphs, a security worklist, and a resume and portfolio whose every figure can show its working.
- four-bucket line accounting — source, ingested, generated, duplicate — with the subtraction always shown
- one walk feeds three analyses, so they cannot disagree about which files exist
- a vulnerability sweep across every environment, ranked by what runs, each fix proved against the old environment
97,438 lines · 61 tests · 256 commits
Project Cockpit
Control Plane for a Home AI Fleet
Started as a terminal for keeping an eye on dozens of AI coding agents and grew into the control plane for a home fleet of machines: one OpenAI-compatible endpoint for chat, vision, embeddings, speech and images, jobs farmed out to idle machines, graphics cards scheduled, and every machine's vitals recorded every 30 seconds.
- one OpenAI-compatible endpoint for chat, vision, embeddings, speech and images across the fleet
- routing on measured speed, warm models and the local network before the tunnel (4.5 ms against 574)
- a ten-minute recording transcribed in 18.8 s across six machines, against 138 s and 14% of the text on one
91,027 lines · 130 tests · 428 commits · PySide6 / Qt, pywinpty
Ports of Call (Ship Voyage)
Edge-Hosted Age-of-Sail RPG
Ports of Call, an Age-of-Exploration trading and naval RPG on Cloudflare's edge: no game server and no runtime AI, because every line of voice and text is generated at build time and shipped as static assets.
- No game server and no runtime AI — every line of voice and text pre-generated at build time
- Local-first saves with optional cloud sync
- Live on Cloudflare Pages; audio from R2, saves and a leaderboard in D1
80,882 lines · 584 commits · FastAPI, Uvicorn, NumPy, Playwright
Whisper Dictation
Server & Global Hotkey Client
Speech-to-text that works in every application at once: a background client captures a global hotkey no matter which window has focus, and the transcription lands on the clipboard from either a local or a remote model.
- Global hotkey capture works regardless of which window has focus
- Retries microphone acquisition when the device is busy or mismatched
- Local or remote model behind the same interface
66,859 lines · 1 commits · FastAPI, Flask, Gradio, PyQt
Unwritain Studio
A writing-and-voice studio: a versioned FastAPI service with real auth middleware, a SQLAlchemy content model, a TTS pipeline, and an LLM dungeon-master mode with turn-based combat.
- Rules enforced server-side, so a client cannot act twice at once
- Automated suite plays whole battles to prove rules hold under concurrency
- Four middleware layers: logging, rate limiting, auth and API keys
25,564 lines · 47 tests · 133 commits · FastAPI, Uvicorn, PyTorch, NumPy
Grocer
Household Consumption Model
Turns supermarket order pages — saved by hand or fetched from the household's own browser — into a household consumption model, then has a local LLM propose the next shop, grounded in arithmetic rather than guesswork.
- Every parse reconciled against the total the source document itself states
- Consumption maths is deterministic Python; the model only reasons over it
- Backtest gate blocks changes that reduce accuracy before they land
21,600 lines · 165 tests · FastAPI, Uvicorn, PyTorch, Pillow
NBLidar
New Brunswick as a Walkable Block World
Turns New Brunswick's open LiDAR surveys into a 1-metre block world you can orbit, fly over or walk through in a browser — built tile by tile across a fleet of machines and served from Cloudflare's edge, in English and French.
- 5,139 km² and 263 of the province's 2,057 named communities built from open LiDAR
- one 1 km tile per fleet job: each machine downloads, builds and deletes its own data
- mesher and browser-export scheme reused from VoxelBlox; bilingual, phone-friendly WebGL2 viewer on nine Pages sites
7,383 lines · 4 tests · 35 commits · NumPy, Pillow, ModernGL, Numba
FlowForge
Static Marketing Site
A marketing site for a business-automation consultancy: hand-written HTML, CSS and JavaScript with no framework and no build step, served locally by a small Python script.
- No build step — the source and the deployed artefact are the same files
- CSS is nearly as large as the markup, carrying the whole visual design
- A 68-line Python server is the entire tooling requirement
415 lines · 26 commits
Energy Equity Research Platform
A Flask research platform for TSX energy equities and beyond: a stacking ensemble and signal gates run overnight in an off-hours window, every pipeline stage is logged and alerted, and a daily research shortlist is tracked against a benchmark.
- Nightly research candidates with a point-in-time track record against a benchmark
- Off-hours compute window; the daytime site serves a static snapshot
- A run ledger with de-duplicated alerts on every pipeline stage
188,392 lines · 693 commits · Flask, PyQt, PyTorch, scikit-learn
Ownword (WhisperKeyboard)
Voice-First Android Keyboard
An Android keyboard, shipped as Ownword, built around speech: on-device dictation, swipe typing, word prediction, autocorrect and a sentence check, plus read-aloud and Ask Ownword from any app — reconstructed from its own APK after the original project was lost.
- Rebuilt from a shipped APK; parity checks and an APK diff verify the reconstruction
- Dictation on the phone since 1.0.310; the server route closed in 1.0.362
- Swipe typing, with key lighting measured (93% right) before it was built
130,073 lines · 441 commits · Pillow
Qwen3-TTS Studio
Local Speech Studio and API
A local text-to-speech studio and OpenAI-compatible API for Qwen3-TTS, patched to run its CUDA-Graph serving engine on an RTX 3090 under WSL2 — nine voices, plus voices cloned from a recording or designed from a description.
- CUDA-Graph serving engine patched to run under WSL2
- one model resident at a time; a single command returns the GPU
- tests run against fake engines, so the suite needs no GPU
83,786 lines · 139 commits · FastAPI, PyTorch, Transformers, Diffusers
Ironvale
Serverless Real-Time Strategy
A complete real-time strategy game in a single HTML file that links two players directly over WebRTC and runs the same battle on both machines in lockstep — no server of its own anywhere.
- deterministic lockstep simulation — only commands cross the network
- peer-to-peer over WebRTC, no server of its own
- an AI opponent that gets no bonus resources and differs only in skill
64,145 lines · 99 commits · Whisper
Nutrition & Meal Tracker
A FastAPI nutrition application built on the Open Food Facts dataset, with a logging model that tracks nutrients per entry, saved meals composed of items, and versioned schema migrations.
- Per-nutrient log rows rather than a single collapsed calorie figure
- Saved meals composed from individual items, not duplicated entries
- Versioned schema migrations so the database evolves in place
61,534 lines · 64 commits · FastAPI, Uvicorn, PyTorch, pandas
Code Runner
Side-by-Side Diffing Editor
A desktop code editor and runner built around comparison: two panes, real-time diff highlighting between them, and a model that explains what actually changed rather than just marking the lines.
- Real-time diff highlighting between two live editor panes
- Model-written explanation of what a difference actually does
- Push changes between panes to reconcile two versions in place
52,657 lines · PyQt
ChatterBox
Scripted Voice Studio
A FastAPI service and desktop front end for scripted, multi-clip voice generation, with saved voice templates and four separately-tuned API variants benchmarked against each other.
- Named, reusable voice templates instead of per-clip settings
- Four parallel API implementations kept side by side and benchmarked
- Generation metrics recorded per run, aggregated for comparison
52,533 lines · 19 commits · FastAPI, Uvicorn, PyQt, PyTorch
Equity Screener & Research Desk
A desktop stock screener that collects market data with a real browser, stores it in a local database, ranks candidates, and records research experiments and detected events so a screen can be replayed later.
- Browser-driven collection rather than reliance on an undocumented API
- Incremental refresh: fetch only missing metadata, only stale prices
- Research experiments and detected events stored for later replay
50,334 lines · 7 tests · 12 commits · PyQt, pandas, NumPy, Playwright
Movie Night
Living-Room Media Catalogue
A poster catalogue of your films and shows, built to be driven from about three metres away — with an optional voice layer that can click anywhere on screen, drive VLC exactly, and learn the titles speech-to-text keeps mangling.
- Voice is optional by construction: the catalogue is fully usable with a mouse alone
- A closed grid vocabulary recognised locally, so the common case never waits on the network
- Recursive voice mouse-grid — any pixel on screen reachable without a cursor
48,477 lines · 60 tests · 174 commits · PySide6 / Qt, Tkinter
Ask Code
Portable Codebase Q&A
Point it at any repository and ask questions in plain language: retrieval over the source feeds a local model that answers, edits and runs an agent loop, with nothing leaving the machine.
- Retrieval index tracks chunk health so stale context is detected, not served
- Token budget exposed before a query runs, not discovered afterwards
- Local inference — the codebase never leaves the device
41,539 lines · 136 tests · 95 commits · FastAPI, Uvicorn, PyTorch, NumPy
File Organizer
Indexed Search and Journalled Tidying
Finds anything in a large folder tree, and — only if you ask — tidies one folder up under a safety suite that must pass before a single file is allowed to move.
- One safety module every mutation passes through — no second path to the filesystem
- `apply` refuses to run unless the safety suite passed against the tree as it is now
- Journalled execution with undo, which re-checks safety before acting on a stale plan
36,785 lines · 760 tests · 25 commits · PyQt, NumPy
Document Pipeline Orchestrator
A browser-based orchestration platform for document-processing workflows that replaced two legacy desktop applications with one interface, running pipelines with real-time progress instead of blocking dialogs.
- Replaced two legacy desktop applications with one browser interface
- Pipelines run as tracked jobs with real-time progress and cancellation
- Per-stage statistics captured, so a bad run is diagnosable after the fact
34,275 lines · 55 commits · FastAPI, Uvicorn, PyQt, Tkinter
Knowledge-Base RAG Chatbot
A local retrieval-augmented chatbot that answers from a markdown knowledge base using hybrid search — keyword and vector results fused by reciprocal rank — with citations back to the source document.
- Hybrid retrieval: keyword and vector results fused by reciprocal rank
- Citations resolve back to the source markdown document
- Chat and embeddings both served locally
32,607 lines · 63 commits · FastAPI, Uvicorn, PyQt, NumPy
Quest of the Number Dragon
Maths Adventure for Kids
A maths adventure for children — counting to fractions and early algebra, with voice coaching, music and RPG battles — in one self-contained HTML file that works offline, published at number-dragon.pages.dev with the file as a download.
- the whole app, voices and music included, in one offline HTML file
- rebuilt from a patch chain and checked byte-identical to what ships
- teaches the method and never gives the answer, from a graded evidence review
19,922 lines · 64 commits
AutoDoc
Codebase Documentation Generator
Reads a codebase and writes its documentation: analyses functions, classes, imports and the call graph, then generates prose from the structure with enterprise authentication and token estimation built in.
- Builds a call graph and import model before writing any prose
- Filters to referenced files instead of documenting everything
- Token estimation before the run, not a surprise afterwards
18,889 lines · PyQt
Simple Voice Navigator
Hands-Free Browsing
Say "back", "new tab" or "read this" while browsing and it happens — recognised offline in about 50 ms, and listening only while a browser is in front and actually being used.
- listens only while a browser is in front and in use
- offline recognition, about 50 ms per phrase
- an installer that repairs itself on re-run
16,048 lines · 229 tests · 28 commits · NumPy
Describe & Walk
Narrated Walkthroughs and 3D Scenes
Walk through a space narrating it on video and get back a written verbal map; the same recordings can be turned into Gaussian-splat 3D scenes — all on local models and graphics cards.
- Narration and frames lined up by timestamp
- A staged summary into one written map rather than isolated captions
- Gaussian-splat 3D scenes from phone video
15,580 lines · 31 commits · FastAPI, Uvicorn, PyTorch, NumPy
LAN Music & Photo Server
A desktop-controlled local web server that streams music with matched artwork to any device on the network, started and stopped from a small control window rather than a terminal.
- Serves to any device on the LAN with no client install
- Start, stop and status from a desktop control window, not a terminal
- Pairs audio with matching artwork and plays continuously
13,923 lines · Flask, PyQt
MusicAPI
Library Service & Web Player
A FastAPI music service with a Svelte single-page front end, WebSocket updates, database migrations, and AI annotations stored against artists and tracks.
- API, WebSocket and built SPA served from one application
- Catch-all routing so client-side routes survive a refresh
- Versioned database migrations rather than a recreated schema
13,658 lines · 22 tests · 59 commits · FastAPI, Uvicorn, yt-dlp, SQLAlchemy
ACE
Context-Budgeted LLM Workbench
A workbench that treats context as a budget: it keeps engineered context under a model-aware cap with explicit headroom reserved, and ingests documents in overlapping batches that preserve salience instead of truncating.
- Model-aware context cap with headroom explicitly reserved
- Overlapping batch ingestion with salience-preserving tail quotes
- Adaptive configuration and playbooks make a good setup reproducible
12,407 lines · PyQt, Transformers
Long-Form Story Generator
Generates multi-part stories through a local model from named, reusable prompt templates, with batching, live logs and the ability to stop a run mid-flight.
- Named, managed prompt templates instead of retyped prompts
- Batched queue with live logs and a working stop control
- Runs entirely against a local Ollama model
12,117 lines · PyQt
AI Project Scaffolder
Generates new project skeletons from templates, and converts an existing tree into a structured context bundle — with gitignore-aware scanning and typed parse results rather than string handling.
- Scaffolds from templates and reverses the process into a context bundle
- Gitignore-aware scanning keeps vendored and generated trees out
- Typed parse results, so malformed input is reported not mangled
11,886 lines · 1 commits · PyQt
Script Launcher
A single front door for a large collection of standalone scripts — registered, described, themed and launched from one window instead of remembered as file paths.
- Registry of scripts with names and descriptions, not remembered paths
- Edit and launch in place from one window
- Customisable appearance so groups of tools stay visually distinct
11,106 lines · PyQt
PCB Design Tooling (.NET)
A C# application for printed-circuit-board work — the only .NET codebase in the estate, and the counterweight to a portfolio that would otherwise read as Python-only.
- The estate's only .NET codebase, kept visible rather than hidden
- Domain work in electronics design rather than general application code
9,742 lines · 24 commits
Function Extractor
Extracts individual functions and classes out of source with the surrounding context they need to make sense, so a single entity can be moved between projects or handed to a model without dragging the whole file along.
- Entity-level extraction with the surrounding context that makes it valid
- Detected functions and classes presented as a browsable list
- Extracted versions saved and reloadable rather than overwritten
9,392 lines · PyQt, Tkinter
Graph HTML
Flowchart Renderer
A self-contained interactive flowchart renderer: open one HTML file and get a pannable, clickable node graph with no server, no build step and no install.
- Zero-dependency delivery: one HTML file, no server and no install
- Nine versions kept side by side, each titled with the problem it addressed — a visible record of the approach evolving
- Path-following through the graph is the problem the last four versions exist to solve
8,906 lines
Local STT
Offline Speech-to-Text in One File
Push-to-talk speech-to-text that runs entirely inside one self-contained HTML file — the model, ONNX Runtime in WebAssembly and the interface all embedded, with no install, server or network.
- the whole model and runtime embedded in one HTML file
- a runtime network guard — privacy enforced, not promised
- end-to-end tests with the network offline and a scripted microphone
8,816 lines
Pennies
Incremental Game
An incremental game built around social and psychological pressure as mechanics: achievements, notifications and modelled social expectations, with detailed statistics tracked behind them.
- Social expectation and notification pressure modelled as game state
- Detailed statistics tracked as first-class records
- Achievements and configuration typed rather than hard-coded
8,245 lines · 31 commits · Pygame
Patch Merger
Class-Aware Code Applier
Applies multiple code patches at once with class-targeted method insertion, strict validation before anything is written, and a side-by-side review pane listing every function and class the patch would replace or add.
- Patches resolved against the parse tree, not by text position
- Whole plan validated before anything is written to disk
- Ambiguous anchors reported as errors rather than silently guessed
8,241 lines · PyQt
MusicBoard
Structural Audio Soundboard
A soundboard that analyses music structurally rather than just triggering clips: select a region of the waveform, find where that motif repeats across the track, and group the results into families.
- Motif search - select a region, find where it recurs across the track
- Multi-scale self-similarity scanning, from notes and riffs up to whole sections
- A texture gate that drops background grooves and keeps real sections
7,040 lines · 53 tests · 77 commits · Tkinter, NumPy
QwenTTS
Voice Cloning API
A REST service wrapping a Qwen speech backend, supporting preset voices, zero-shot cloning from a short reference clip, and multi-format audio output behind a versioned API.
- Zero-shot voice cloning from a short reference recording
- Versioned API with typed request models and saved voice profiles
- Explicit model load and unload control rather than permanent residency
6,828 lines · 18 tests · FastAPI, Uvicorn, PyQt, PyTorch
Flowchart Pages
The same flowchart-rendering idea as Graph HTML, carried through fifteen versions, with d3 added alongside vis-network for layout control.
- Fifteen iterations of one renderer, kept as separate documents
- d3 introduced at v10 alongside vis-network, for layout the library would not do on its own
- Shares its lineage with Graph HTML — the same problem approached twice
5,969 lines
Pyodide Desktop-in-Browser Sandbox
An experiment in building a desktop-style application interface that runs Python in the browser through Pyodide, iterated across several successive attempts kept side by side.
- Groundwork for the Pyodide runtime approach later used in RobOS
- Successive attempts kept side by side rather than tidied away
- File load and save API behind a browser-resident Python runtime
5,863 lines · Flask, Three.js
Conversation Generator
Multi-Voice Dialogue Audio
Writes conversations of any length — thirty seconds to four hours — with a local language model, then performs them in chosen voices through Qwen3-TTS Studio, from a browser page or one command.
- conversations up to four hours, written in continuing blocks
- resumable, with overload protection for the speech engine
- one settings file shared by the web page and the command line
4,873 lines · 31 tests · 19 commits · FastAPI, Uvicorn, Pydantic
Block Battle
Multiplayer Puzzle Game
A competitive block puzzle game with a server-side engine, socket play, accounts and purchasable skills — the rules live on the server rather than in the browser.
- Game engine and rules enforced server-side, not in the client
- Socket-based play with accounts and persistent progression
- Purchasable skills handled through the same authenticated API
4,362 lines · Flask
CodeThink
A Thinking-Budget Dial for Local Models
Steer how long a local reasoning model thinks while it is still thinking — with the mouse wheel — and a bandit that learns the right budget per kind of prompt instead of guessing it.
- The thinking budget is a live control, not a parameter fixed before generation starts
- A dial in the browser reaching a streaming request over SSE, read before each reasoning step
- Abortable streaming, so turning the budget down stops work already in flight
4,303 lines · 34 tests · Flask
HS600 Drone Studio
Control and telemetry tooling for an HS600 drone, built by capturing and decoding its packet protocol rather than from a published specification.
- Packet protocol reverse-engineered from captures, with no published spec
- Captured packets and connection checks modelled as typed records
- Takeoff, land and telemetry driven over the decoded link
3,983 lines · PyQt, NumPy, OpenCV, Tesseract
MistrelTTS
Speech Synthesis Service
A compact FastAPI speech service exposing generation, voice listing and health behind a typed API, with custom voices and generation history persisted.
- Typed request and response models over a minimal surface
- Custom voices and generation history persisted rather than transient
3,737 lines · FastAPI, Uvicorn, PyTorch, Pydantic
Personal Memory Database
A personal database that captures screenshots with their metadata and stores entries for retrieval by similarity rather than by remembering what you filed them under.
- Screenshot capture with metadata attached at the moment of capture
- Similarity-based retrieval instead of exact recall of a label
3,183 lines · PyQt, Pillow
Speaker Identifier & Quote Attributor
Finds every quoted passage in a document and attributes it to a speaker, turning unlabelled dialogue into an attributed transcript.
- Extracts and attributes every quoted span in a document
- Emits a rewritten, attributed file rather than a separate report
3,038 lines · PyQt
3D Graph Visualiser
Renders three-dimensional data visualisations in the browser, driven from Python-computed geometry.
- Computation in Python, interactive rendering in the browser
2,973 lines · NumPy
Unlimited OCR
Long-Document Platform
A local OCR platform built on a 3B-parameter vision-language model specialised for long documents, with a job queue, evaluation harness, and a training-data pipeline that feeds corrections back into the model.
- Reinforcement loop: corrections archived and rebuilt into fine-tuning data
- Command surface covers the whole loop — ocr, serve, eval, archive, build-sft
- Runs a 3B vision-language model locally, so private documents stay put
2,674 lines · 9 tests · 7 commits · FastAPI, Uvicorn, PyTorch, Transformers
Project Context Maker
Scans a project and assembles a context file for an AI assistant from its structure and key files, with the output strategy — structured JSON or direct artifact — selectable rather than fixed.
- Analysis, prompting and output separated into distinct layers
- Pluggable output strategies — structured JSON or direct artifact
- Entry file nominated so the context is anchored to a real starting point
2,633 lines · PyQt
VidDownload
Video Archiver for Awkward Players
A desktop tool that saves the video embedded in a web page as an MP4, trying yt-dlp, a real browser and, as a last resort, recording playback in parallel parts.
- four strategies in order, from yt-dlp to recording playback
- parallel recording: tabs seek to their own slice and ffmpeg splices the parts
- a per-job report naming every candidate URL and why each attempt failed
2,524 lines · 22 tests · Tkinter, Playwright, yt-dlp
WhisperTyper
Desktop Dictation
A desktop dictation window that monitors for speech, transcribes locally, keeps a searchable history of what was said, and stays on top so it works alongside whatever you are writing in.
- Transcription history stored and searchable rather than transient
- Always-on-top window so it works alongside the target application
- Local Whisper inference — no audio leaves the machine
2,430 lines · PyQt, PyTorch, Transformers, NumPy
CSV Analyzer
A desktop CSV explorer with stacked filters and regex matching, reporting distinct counts and confirmed totals as the filters change.
- Stacked filters that add and clear independently
- Regex matching alongside plain filtering
- Distinct and confirmed counts recomputed live as filters change
2,260 lines · PyQt
Video Joiner & Audio Combiner
Joins video files in a chosen order and combines them with audio tracks or generated speech, with natural-order sorting so files sequence the way a human expects.
- Natural-order sorting so clip 2 precedes clip 10
- Manual reordering or automatic sort before joining
- Background music and imported speech layered over the result
2,167 lines · PyQt, NumPy, Pillow
VoiceGrid
Voice-Driven Grid Control
A spoken-command grid interface with an offline recogniser, built so its core logic — grid parsing, recognition and the application state machine — can be tested without any of the heavy dependencies installed.
- Core logic tested with the speech, UI and audio libraries absent
- Lazy imports keep the state machine independent of the hardware layer
- Offline recognition — no cloud speech service involved
2,035 lines · 19 tests · 4 commits · PySide6 / Qt
Local LLM Inference Server
Serves a local transformer model behind an OpenAI-compatible chat completions endpoint, so existing clients can point at it without code changes, with model loading driven from a desktop window.
- OpenAI-compatible endpoint, so existing clients need no changes
- Explicit model load control from a desktop window
- Generation settings exposed rather than fixed at startup
1,906 lines · FastAPI, Uvicorn, PyQt, PyTorch
Stock Analyzer
A focused desktop tool for analysing equities from downloaded market data, with manual row entry for figures that are not in the export.
- Works from a downloaded CSV with no API dependency
- Manual row entry for figures missing from the export
1,782 lines · PyQt, pandas, NumPy
Cloudflare Deployment Manager
A desktop control panel for Cloudflare infrastructure: scaffold and deploy Workers, create and redeploy Pages projects, and set up tunnels with their DNS records from one window.
- Pages, Workers, tunnels and DNS managed from one window
- Worker scaffolding writes its routes into the configuration
- Tunnel plus DNS record creation in one step
1,766 lines · PyQt