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 WaffleMatt Riley / software engineer / Leeds
I build backend systems and developer tools, from first release through the work of keeping them running.
Explore the workSelected work
Tools I use, things I publish, and the work I do with teams.
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.
Things I publish.
A way to evaluate agent skills, a quieter Neovim interface, and feature flags you can host yourself. Built around problems I keep running into.
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.
A record of the work.
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?
Read the plain-text work recordI 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.
A little context
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
Public code
Fetching repository details. Browse all repositories on GitHub.