---
title: "BLAMELESS"
url: "https://aigamehub.app/en/games/blameless-f7966d"
source: "https://github.com/Petyok/blameless"
source_type: "github"
play_url: "https://blameless.petruha.ge"
platform: "desktop"
login_required: false
pricing: "free"
origin: "original"
ai_tools: ["Claude"]
game_languages: ["en"]
author: "Petyok"
author_handle: "Petyok"
category: "Action"
categories: ["action"]
tags: ["browser-game", "devops", "fps", "procedural", "three-js"]
added: "2026-11-11T06:09:48.820Z"
updated: "2026-11-11T06:09:50.412Z"
locale: "en"
content_locale: "en"
---

# BLAMELESS

An on-call shooter: at 03:07 the pager goes off and you enter production to shoot the bugs crashing it across ten incidents, with rate-limited weapons, a rollback rewind and hotfix upgrades.

## Description

A browser first-person shooter built with three.js. You play the on-call engineer at 03:07 with production down: move with WASD and the mouse, fire with the left button, and switch between four weapons (kill -15, kill -9, grep -r, rm -rf) that have no ammo but rate limits that answer 429 when overheated, so swapping holstered weapons to cool is the core skill. Health is an error budget restored by coffee and cleared incidents; SHIFT dashes with brief invulnerability, Q or right click rewinds you three seconds, F gives a charged sudo boost. After each of the ten incidents you deploy one of three untested hotfixes, and dying restarts the current incident with hotfixes kept. Enemies include zombie processes, fork bombs, cron jobs, a SYN flood, race conditions, memory leaks, heisenbugs, the oom_reaper and a shielded legacy monolith. Severity levels set difficulty and finishing the campaign unlocks an endless night shift. A leaderboard and world stats are shown from the title screen (L). Keyboard and mouse on desktop; a phone can only watch the autopilot and read the leaderboard.

## Original post

An on-call shooter: 03:07, the pager goes off, prod is down, and you kill what is crashing it. three.js. All done by Claude Fable 5.2 from one prompt.

Topics: browser-game, claude, devops, first-person-shooter, fps, game, javascript, leaderboard, on-call, procedural-generation, python, sqlite, sre, threejs, webaudio, webgl

# BLAMELESS An on-call shooter. 03:07, the pager goes off, prod is down and nobody else is awake. You `kubectl exec` into production in person and terminate what is crashing it: ten incidents, four hosts, one root cause. It ends with a postmortem written from what you actually did. **Play: https://blameless.petruha.ge** (keyboard and mouse; a phone can watch the autopilot and read the leaderboard). ![four screenshots](screenshots.jpg) All done by Claude Fable 5.2, from this prompt: > Hello fable 5.2! You are 1 day old. I am curious what can you do, so let's do a simple test: > using gpu-serv for builds/test -> build a three.js shooter game. You have only 1 try. This laptop > should handle your game at least 30 fps, 60 fps ideally. What to include to your game decide only > you (story, style, weapons, feel, music, etc.). There is no time limit. You can use other models > only if you RUN THEM LOCALLY on gpu-serv - for instance minimax h3, or etc. Suprise me! Everything after that was the model's call: the story, the look, the weapons, the soundtrack, the tests. The stats server, the deployment and this repository came from a second message ("deploy this, give it a domain, make stats and a leaderboard, make a public repo"). ## How it plays | key | | |-|-| | `WASD`, mouse | move, aim | | `LMB` (hold) | fire | | `1`-`4`, wheel | weapons: `kill -15`, `kill -9`, `grep -r`, `rm -rf` | | `SPACE` | jump | | `SHIFT` | dash (brief invulnerability) | | `Q` / `RMB` | rollback: rewind yourself 3 s, error budget included | | `F` | sudo, when charged: no rate limits, +50% damage | | `ESC` / `P` | pause; `` ` `` toggles the fps line | - There is no ammo. Every weapon has a rate limit: fire too long and it answers `429` until it cools. Holstered weapons cool faster, so switching is the skill. - Health is your error budget. Coffee restores it; each resolved incident gives some back. - After every incident you deploy one of three hotfixes, untested, straight to production. - Dying restarts the current incident with your hotfixes kept. - Severity is the difficulty: SEV3 chill, SEV2 normal, SEV1 hurt me. Finish the campaign to unlock the endless night shift. The enemies are bugs you know: zombie processes, fork bombs (split when killed), cron jobs (fire when the hand reaches twelve), a SYN flood, race conditions (kill both threads within two seconds), memory leaks (grow until OOM), heisenbugs (move when observed), the oom_reaper, and `legacy-billing-monolith.jar`, shielded by its dependencies. ## Leaderboard and world stats `L` on the title screen. One board per severity plus one for the night shift, each player listed once with their best run. Type a handle there, on the death screen or on the postmortem to be listed; without one the run is counted but not shown. The same screen has the world totals: how many engineers were paged, how many resolved it, what share of campaigns got past each incident, what kills people most. Scores are reported by the browser. The serve
