01 / GoRun an agent.
Waffle
A personal AI agent that runs on your own hardware.
A place to bring models, skills, and tools together around the way I work. The terminal in the film represents the agent you use.
Explore WaffleArcade points · unlimited spins · E stops the next reel
Press E or reel in while the marker is in the green zone.
↑←↓→ Move or WASD E Interact X Debug Esc Pause
PLAYER ONE / MATT RILEY
I build backend systems and developer tools.
This is a little world of the things I've made
and the places I've worked.
01 / THE TOOL SHED
Personal tools. Public source.
Built around real uses.
01 / GoRun an agent.
A personal AI agent that runs on your own hardware.
A place to bring models, skills, and tools together around the way I work. The terminal in the film represents the agent you use.
Explore Waffle
02 / ZigKeep the record.
A local record of what coding agents do between Git commits.
Commits tell one part of the story. AgenGit captures the activity between them. The tape recorder represents that running record.
Explore AgenGit
03 / JavaScript / SQLiteRemember context.
Local memory for Copilot CLI and Pi, stored in SQLite.
Context that can carry over to the next session. The card archive represents memory you keep locally.
Explore Lore
The other Waffle.
The cat came first. The agent borrowed the name.
Run the same task with and without a skill, grade the outputs, and measure the difference.
A small measure of UI for Neovim — dashboards, notifications, statuscolumn, indent guides, and reference words.
A self-hosted feature-flag service with REST, gRPC, SSE, PostgreSQL, and Go and TypeScript clients.
02 / THE WORK DISTRICT
I started in analysis and testing, then moved through backend, platform, and product engineering. Same questions each time: does it ship, does it stay up, and is the next change cheaper than the last?
I work on the existing TypeScript suite — React, Remix, and Serverless on AWS SAM. Since joining I've moved several repos from CircleCI to GitHub Actions, put infrastructure in Terraform, and been chipping away at dependency and platform updates so the next change is cheaper.
Web Platform and Activities. I built API layers over the existing databases and simplified the backend so the product teams weren't fighting the architecture to ship.
I helped move the product off Drupal onto TypeScript microservices on GKE, using NestJS. Same product, new backend.
I built the service behind Scan2Recycle: users photograph a product, Cloud Vision identifies it, and they get a reward — store loyalty points, for example — for putting it in an in-store recycle bin.
That service ran on GCP (Pub/Sub, Cloud Functions, Cloud Vision). The main Metrisk promotions platform was AWS — AppSync, Lambda, Serverless.
I joined as an automation tester and moved onto the GraphQL core team. That service fed Sky.com and the MySky app. I also looked after the Varnish cache in front of the backends GraphQL consumed.
Testing gaming content on William Hill — mainly Vegas, plus Games and Live Casino. Fairness testing on an in-house Node.js app, supplier REST APIs, and some Ruby automation with the Innovation team.
03 / MEET THE LOCAL
Senior software engineer in Leeds. Products, APIs, and developer tools that have to keep working.
I've spent nearly twenty years in software, mostly on backend APIs and the systems around them — GraphQL at Sky, product and platform work after that, currently at Lloyds Wealth. I also make tools for my own setup: a personal agent, a way to record what coding agents do between commits, and a pile of Neovim and Homebrew bits.
I'm a Neovim user, which I have to mention at any possible opportunity as per the terms and conditions of using (Neo)Vim, and comfortable using any environment with a terminal — preferably macOS or (almost) any flavour of Linux.
Outside of writing code and tinkering with my dotfiles I enjoy:
FROM THE PAID WORK
05 / THE SOURCE ARCHIVE
Terminal UI for discovering recent Homebrew formula additions, with searchable results, cached fetches, and one-key homepage opening.
Portable agent-skills catalog for Codex, Copilot, Gemini CLI, Pi, and other AI coding agents.
CLI for recording AI-agent coding activity into a local store between Git commits.
Daily web-art playground for weird, one-hour browser experiments.
Local-first memory and continuity extension for AI harnesses
Reusable GitHub Actions workflows for Matt's repositories.
Personal URL shortener with Go, SQLite, a web UI, a TUI, and click analytics.
Personal pi extension collection: /exit alias, read-only /plan mode
A small measure of UI for Neovim
CLI that automates eval-driven iteration for AI skills: run with/without skill, grade with LLM judge, and benchmark results.
Astro starter template for building and deploying sites to Cloudflare Pages.
Find unused files, dependencies and symbols across TypeScript, Go, Rust and Lua
Starter CRUD API template with Elysia, Drizzle ORM, Postgres, and Bun.
Self-hosted feature flag service with REST, gRPC, SSE, and official Go and TypeScript clients. Used as a test to see Agentic coding abilities
GitHub CLI extension for bootstrapping new repositories from my templates.
Minimal Go API template with Chi, Docker, CI, and GHCR publishing.
Personal Homebrew tap for hopt, newbrew, and tui command-line tools.
Unofficial Go/Bubble Tea terminal browser for The Hoptimist online shop, with latest arrivals, category browsing, and product detail views.
Guide to creating a Keybase-backed GPG key and using it with Git and GitHub.
Local plugin marketplace for Codex, Copilot CLI, and Claude Code skills.
Profile README, weekly crates feed, and automation for @matt-riley — plus shared Renovate presets and agentic workflow tooling.
Afterimage personal developer site built with Astro, vanilla TypeScript, and a build-time GitHub dossier.
Astro site for showcasing Homebrew tools and Neovim plugins with synced GitHub metadata.
Template repository for building and releasing Neovim plugins with tests and CI.
Self-hosted photo stream for publishing a simple personal photography site.
A DOM-first Chrome companion for Pi with persistent pairing, policy-controlled browsing, and Jev-guided actions.
Shared Renovate configuration presets for matt-riley repositories.
Neovim plugin for presenting Markdown slides in a full-screen floating window.
Personal Stream Deck automation experiments integrating OBS, MQTT, Twitch, and OSC.
TypeScript package template with dual CJS/ESM builds, testing, linting, and CI.
Neovim plugin for persistent project marks with scoped slots and quick jumping.
Matt Riley / software engineer / Leeds
I build backend systems and developer tools, from first release through the work of keeping them running.
Explore the work