Not a game-maker app. An actual coding agent, running on Android, writing real code.
I want to be precise about what happened, because the summary sounds like something it isn’t. I did not use an “AI game maker” that stamps out games from templates. I didn’t open a laptop, or SSH into anything, or push to a cloud IDE. I opened an app on my Android phone, described a game, and the app wrote the code, ran a local server, killed a port conflict when it hit one, restarted, found my device’s IP, and told me to open my browser. Tetris took one prompt.
Gotcha is an open-source (AGPLv3) AI copilot for Android. The core idea is that it acts instead of just answering: it runs on an agentic loop — plan, execute, observe, adapt — and it has real hands. It drives your phone’s UI through Android’s Accessibility Services, and, more importantly for what I was doing, it executes commands in Termux. Bash, Python, git, curl. It reads the output and decides what to do next. You can point it at cloud models or at a local LLM server, so nothing has to leave your device.
That combination — a model that can write code and a terminal to run it in and the judgment to loop between them — is what makes this different from every “describe a game and we’ll generate one” app I’ve seen. Those give you a game. Gotcha gives you a development environment where the developer happens to be the AI, and the machine happens to be your phone. As far as I know, it’s the first app that can actually build games and tools on the phone itself, end to end.
Tetris, in a single prompt
I asked for a mobile Tetris game. That was the whole input. What came back:
- A neon-styled board with a proper 10-wide well
- Score, Lines, and Level counters
- A NEXT piece preview panel
- A ghost-piece outline showing where the current piece will land
- On-screen touch controls — move left, rotate, hard drop, soft drop, move right
- Served locally at
127.0.0.1:7777/tetris.html
The ghost piece is the detail that got me. Nobody asks for a ghost piece. It’s the kind of thing you only include if you’ve actually thought about how Tetris plays on a small screen with imprecise thumbs. I didn’t specify it. It just decided that was part of the job. Along the way it hit a port conflict — 7777 was already in use — noticed it, killed the existing process, restarted the server, confirmed it was returning a 200, then pulled my device’s local IP so I could reach it. None of that was me. I watched it happen in the transcript.
One prompt. Playable game.
Angry Birds took a conversation
The second build was more ambitious: a 3D Angry Birds clone. This one took several prompts, but the interesting thing is what happened between them. Gotcha didn’t just start typing. It planned. It broke the work into a todo list, tracked tasks as done, read its own files back before editing them, and ran multi-step agent sequences — one stretch ran 43 steps on its own before checking back in with me. I’d send one instruction and then watch it work through a dozen decisions I never had to make.
What it produced was a single-file game built on Three.js: an actual 3D scene with a green hillside, stacked structures, level progression, a score display, touch-based slingshot mechanics, and sound effects. Served at localhost:7777, played in the landscape in my phone’s browser.
The first version looked right and felt dead. Two things were wrong, and it took me a while to even put words to them. Every shot flew the same distance no matter how far back I dragged — a gentle tug and a full stretch produced identical arcs. And the birds hit the towers like they were hitting a wall. Impact, stop, nothing. No wobble, no collapse, no chain reaction.
Both of those are the game. A slingshot where pull distance doesn’t affect power isn’t a slingshot; it’s a button — every shot identical, zero skill expression. And a tower that absorbs a hit instead of coming apart removes the entire payoff. What’s left looks like Angry Birds in a screenshot and plays like nothing at all.
So I gave it the least technical bug report imaginable:
“good. now fix the game logic. it looks like the physics is incorrect”
No stack trace. No line numbers. No reproduction steps. Just vibes. It read the current file, analyzed it, and came back with a diagnosis:
- Launch velocity was always maxed — it wasn’t scaling with how far you pulled the slingshot back.
- No momentum transfer between objects — collisions weren’t passing energy along.
Then it fixed both.
What actually stands out
It’s real programming, on a phone. Files, a server, ports, local IPs, a terminal. Not a sandbox that hands you a finished toy — an environment where things go wrong and get fixed. When port 7777 was occupied, that wasn’t a failure; it was Tuesday. It handled it.
The autonomy is the feature. I gave instructions at the level of intent, and it filled in everything below that: the plan, the task list, the file structure, the physics model, the control scheme, the ghost piece. My job collapsed down to playing the thing and saying what felt bad.
“It feels wrong” is now a usable bug report. That gap — between noticing a problem and describing it precisely enough for someone to fix — is exactly where most non-programmers give up on their own ideas. It just got a lot narrower.
The loop is short because everything is local. No deploy step, no cloud project, no account, no waiting. Change, reload, play. Iteration only happens when the loop is short enough that you don’t lose interest, and this one is seconds.
Fair caveats
These are clones, and small ones. No original art, no asset pipeline, no multiplayer, no save system. Nobody’s shipping them. And I never read the code — which means I can’t tell you if it’s clean or held together with hope. If something broke in a way I couldn’t describe out loud, I’d be stuck.
Agentic tools with terminal access and screen-reading permissions also deserve genuine thought before you install them. Gotcha being open source and local-capable is a real part of why I was comfortable with it. Read the permissions. Know what you’re granting.
The part I keep thinking about
It was 5:25 in the morning. I was holding a phone with 22% battery. I said “Tetris,” and a few minutes later I was playing Tetris that had not existed when I started the sentence. Five years ago, that was a weekend with a game engine and Stack Overflow. A few months ago, it was an afternoon on a laptop with an AI assistant. This time it was a phone, and the phone did the work. Gotcha is open source under AGPLv3 and available on GitHub. Games built with vanilla JS and Three.js, served from Termux, played on the same phone that built them.