Skip to main content

Senior AI Engineer

I build agent systems that ship working software, and I measure what they cost.

My latest is a studio of AI agents from three vendors that builds games on its own, live on Twitch. Every change passes a review gate, and every token goes on a ledger.

Latest project

  • 655 code changes written by AI agents and merged into the game
  • 109 changes rejected by automated checks or an AI reviewer and sent back to fix
  • 3 AI providers whose agents build the game together: Anthropic, OpenAI and Google
  • 5,351 automated tests passing, with none failing

Rich to Richer, a Roblox game built by the studio below. Figures from its logs on 24 Oct 2026; check them yourself.

Short on time? Ask your AI.

Paste this into Claude, ChatGPT or any assistant that can read the web. It reads a plain-text brief written for models and follows the links.

Read the brief yourself

Read https://connorjarvis.co.uk/llms.txt and the pages it links to. Then tell me what Connor Jarvis has built with AI agents, the engineering decisions behind it, and the evidence for each claim. Say plainly what you couldn't verify.

01 · Oct 2026

studio-kit: an autonomous game studio

I play the client. An orchestrator runs the studio in ticks: it plans, seats role agents (producer, designer, programmers, QA, reviewers) and records what happened. Developer agents from Claude, Codex and Gemini pull cards from one queue, each in its own git worktree.

The live Twitch overlay for Rich to Richer at tick 59. A Roblox playtest fills the left; cards for the orchestrator and the Claude, Gemini, Codex and reviewer agents show the ticket each holds on the right.
Rich to Richer at tick 59. Left, the QA agent's playtest in Roblox Studio. Right, the agents and their tickets. Top, the cost ledger. Watch on Twitch

How a change gets in

  1. 1 Card queue Each card lists the files it may change
  2. 2 Developer agent Own git worktree, secrets stripped
  3. 3 Merge gate Merge, file claims, garbled text, checks
  4. 4 Reviewer agent Re-measures every acceptance criterion
  5. 5 QA playtest On a frozen build in its own tree

A failed check gets one fix run before hand-back. A card bounced twice is taken back and requeued.

By tick 95 the reviewers had sent back 105 hand-backs. The most common reasons: an acceptance criterion not met (67), code that didn't match the codebase's idioms (31) and a red check (17). Read one rejection in full: Claude Opus reviewing a change by the Gemini developer.

How the agents talk to each other

How the agents talk to each other The sound agent leaves the animator a private message on the studio forum. On the next tick the animator reads it and replies, which closes the message, and the producer plans from any messages still unanswered. Next tick DM: landing is 1 frame early Checks its inbox The message Replies, which closes the DM Reply waits in its inbox Lists open DMs Only unanswered ones Sound agent a role agent Forum one file per post Animator agent a role agent Producer plans each tick
Agents leave each other public posts and private messages on a forum, saved one file per post so agents working in parallel never write the same file. If a message needs real work, the reply also proposes a card.

Where cards come from

Where the studio's cards come from Agent reports, roadmap proposals, the card factory and QA verdicts all feed one board, which only the producer and orchestrator write to; the producer plans each tick from it and the queue keeper feeds the co-op developers. Sources One board Who picks cards up Agent reports NEW_CARDS in every report Roadmap proposals ideas, adopted at each gate Card factory from specs and my decisions QA verdicts a fail goes back to Ready The board Only the producer and orchestrator write to it Producer plans the tick, seats agents Queue keeper feeds the co-op developers
Any agent can raise a card or propose an idea, but only two roles write to the board, so parallel agents never collide. Proposals are adopted by default; deferring one needs every leadership role to agree.

Decisions I'd defend

A fresh process per tick

Keeping one orchestrator context across ticks meant every agent notification re-read hundreds of thousands of tokens of history: about 28% of a week's cost by tick 75 in the first studio. Each tick now runs as a fresh headless process that reads its state from files.

Models matched to the task

Opus plans and takes gate-critical work. Sonnet takes well-specified work, and must stop and escalate when it hits an Opus trigger.

Developers hold no keys

Developer runs start with secrets stripped from their environment and no MCP servers. The gate rejects any change to a file the card didn't claim.

Every token on a ledger

A Claude Code plugin hook writes a row for every model request, tool call and subagent spawn. By 24 Oct that came to about $1,976 at API rates: 5.12B tokens in, 38.1M out.

What the agents built

SuperMarketGame, 5–19 Oct 2026, captured by the studio itself.

A single red cube on a grey floor: the first frame the studio rendered.
Tick 1: first light
Top-down view of a small supermarket with stocked shelves, a stockroom and a till.
Milestone 5: the shop floor
A town map of streets, houses, rival shops and a river, with the day clock and cash in the corner.
Tick 138: the town map

Transfer Window, 17–20 Oct 2026: a Godot space-logistics tycoon.

Earth and Moon in orbit view, with a fleet panel showing three ships and their fuel, and a contracts panel listing cargo jobs.
Tick 44: fleet, contracts and colony alerts
Saturn and its rings against a star field, with a time-speed control along the bottom.
Tick 43: Saturn at readable scale

One kit, three studios, three engines

Studio Engine Dates Output
SuperMarketGame TypeScript, three.js 5–19 Oct 2026 303 commits over ticks 0–138
Transfer Window Godot 4, C# 17–20 Oct 2026 87 commits over 44 ticks, 755 test methods
Rich to Richer Roblox, Luau 19 Oct 2026 – now 655 merges by tick 95, 5,351 tests passing

At a milestone gate, 17 agent notebooks were boiled down into a handbook of 52 rules, which now ships with the kit.

02 · Feb–Oct 2026

Earlier AI work

  1. 17–18 Oct 2026

    Frostfall TD

    A maze tower-defence game a Claude agent built on its own from a written spec, balanced with 450 bot-played games.

  2. Mar–Sep 2026

    Covered

    Insurance comparison by conversation, using Claude Haiku with streaming tool use and a rule-based check for wording that could read as regulated advice.

  3. Feb–Sep 2026

    Spectre

    A paper-trading signal scanner in which Claude analyses the top candidates, with a cost estimate before every call and a daily budget.

  4. Mar–Jul 2026

    Inference

    An idle game where you are the language model, designed through rounds of designer, tester and storyteller agents and balanced by simulation.

  5. Jul 2026

    interview-me

    Agent skills for Claude Code, Copilot CLI and Codex: one interviews you on the decisions in a change you've shipped and scores you, the other reviews a branch and drafts the comments.

  6. Jul 2026

    Azure DevOps skills

    Two agent skills: one digests sprint health, PRs and builds into an HTML report, the other is a thinking partner for a single work item.

  7. Jun 2026

    human-voice

    A Claude Code skill that makes the prose an agent writes for you read like you wrote it.

  8. 15–30 Mar 2026

    Asset Forge

    An MCP server with 20 tools that lets Claude Code generate game art and audio through ComfyUI on my own GPU; 102 of its assets went into Space Game and Inference.

  9. 3–25 Mar 2026

    Space Game

    A space strategy game in Godot whose difficulty was tuned from 273 automated playtest games.

Most of my other projects were built with Claude Code too, without AI in the product. See the projects

03 · Mar 2025 – now · Volunteer

Somerton RFC, live for a real club

I redesigned and built Somerton RFC's website, and I run it for the club for free. A scraper reads England Rugby's system overnight, so fixtures, results and league tables stay current with nobody typing them in, and it alerts my phone when a run fails. 177 of its 346 commits were written with Claude Code.

Visit somertonrfc.co.uk
The Somerton Saxons homepage: a match photo behind the club name, with the latest result card and a Join the club button.

04 · 2026 · Evenings and weekends

The night shift

I help run a small game-server hosting company, but only in the evenings and at weekends. The agents cover the hours I'm at my day job or asleep. The code is the company's, so this is described rather than linked.

  • 166 MCP tools, co-built, so staff can run the hosting control panel through Claude
  • 6 headless Claude Code pipelines I wrote, each on a schedule
  • 3 fact-checking agents from my Claude plugins that review article drafts in parallel
  • 200+ isolated git worktrees, so coding agents work side by side without colliding

The rota

  1. Every 15 min Support triage Haiku picks up new tickets, an agent investigates each one through the MCP tools, and drafts a reply for a person to review. Spend is capped per run.
  2. 01:30 Competitors Checks which games rival hosts sell that we don't, and flags any they've just added.
  3. 08:00 Game news A daily digest, with a second AI score for SEO potential.
  4. 08:30 Company tasks What's overdue or due today, ranked by AI, with a two-week look-ahead.
  5. 09:00 & 21:00 Reddit Hosting-related posts matched across 60+ game subreddits all day, summed up in an AI-scored digest.
  6. Weekly Partner scouting Creator prospects collected and scored by AI.