<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thoughtbot="https://thoughtbot.com/feeds/">
  <title>Giant Robots Smashing Into Other Giant Robots</title>
  <subtitle>Written by thoughtbot, your expert partner for design and development.
</subtitle>
  <id>https://robots.thoughtbot.com/</id>
  <link href="https://thoughtbot.com/blog"/>
  <link href="https://feed.thoughtbot.com" rel="self"/>
  <updated>2026-05-04T00:00:00+00:00</updated>
  <author>
    <name>thoughtbot</name>
  </author>
<entry>
  <title>Simple, affordable unsupervised agentic coding from my phone with Claude Code in Github Actions</title>
  <link rel="alternate" href="https://thoughtbot.com/blog/creating-software-while-afk-with-github-workflows"/>
  <author>
    <name>Fritz Meissner</name>
  </author>
  <id>https://thoughtbot.com/blog/creating-software-while-afk-with-github-workflows</id>
  <published>2026-05-04T00:00:00+00:00</published>
  <updated>2026-05-01T15:47:03Z</updated>
  <content type="html">&lt;p&gt;If you’re following the AI hype train, you’ll have heard serious software people talk about building software (without needing to code) while they take their kids to the park. This is obviously appealing, but it’s often discussed in ways that imply serious barriers to entry: the interviewee from Anthropic mentions that they get to use all the tokens they want for free, the AI-coding consultancy says that if you’re not spending $1,000 per day per developer you’re doing it wrong, discussions of a new agentic coding paradigm refer to people who switch between multiple top-end Claude Code Max plans.&lt;/p&gt;

&lt;p&gt;Although these conversations are frequently intertwined, building software away from a desk doesn’t have to come with a 4-digit daily bill. I don’t have that sort of cash, but I’ve still been able to get in on the fun.&lt;/p&gt;
&lt;h3 id="the-20-30month-workflow"&gt;
  
    The $20-$30/month workflow
  
&lt;/h3&gt;

&lt;p&gt;Here’s a workflow that I’ve been using for unsupervised AI coding on a side project which will never justify serious focus or budget:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I type one or two lines into a new issue on the project Github repo (usually from my phone)&lt;/li&gt;
&lt;li&gt;I add a label, &lt;code&gt;needs-elaboration&lt;/code&gt; to the issue&lt;/li&gt;
&lt;li&gt;Github starts up an &lt;a href="https://docs.github.com/en/actions/get-started/understand-github-actions#workflows"&gt;actions workflow&lt;/a&gt; that invokes Claude Code in the cloud to review the pre-existing code and write a plan for how to turn my few sentences into a reality&lt;/li&gt;
&lt;li&gt;I review the plan and if I’m happy I add a &lt;code&gt;ready-for-dev&lt;/code&gt; label&lt;/li&gt;
&lt;li&gt;Github starts Claude Code to implement the issue and raise a pull request&lt;/li&gt;
&lt;li&gt;I click on preview links that Vercel (this is a NextJS app) adds to the PR and inspect the results&lt;/li&gt;
&lt;li&gt;If I’m happy I merge the PR and Vercel deploys to production&lt;/li&gt;
&lt;li&gt;If I’m not happy I add a comment and an &lt;code&gt;agent-review&lt;/code&gt; label and GOTO 5&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The total cost is $20 for my Claude Code Pro plan and $10 for a Github Pro Plan (educators and open source contributors can often get this for free). There are usage limits to both plans&lt;sup id="fnref1"&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt; but I mostly run out of ideas before I run out of limits. I’m not focused on making an agent work 24/7 while I’m doing other things; my only concern is that there is something new ready for me each time I have spare attention for this project.&lt;/p&gt;

&lt;p&gt;In case it wasn’t clear, I’m not writing or even reading any of the code as part of this loop&lt;sup id="fnref2"&gt;&lt;a href="#fn2"&gt;2&lt;/a&gt;&lt;/sup&gt;. That would take focus that I can’t dedicate on a per-feature basis to this project.&lt;/p&gt;
&lt;h3 id="minimal-time-and-money-for-decent-results"&gt;
  
    Minimal time and money for decent results
  
&lt;/h3&gt;

&lt;p&gt;This project wasn’t always an experiment in agentic coding. It was originally an exploration of JS web development with NextJS that I pursued during Friday &lt;a href="https://thoughtbot.com/blog/investment-time"&gt;investment time&lt;/a&gt; over a seven month period a few years back. This allows me to compare before and after, with striking results.&lt;/p&gt;

&lt;p&gt;In the past month, with 10 minutes here and there on my phone, I’ve far exceeded what I did in the original seven months of Fridays:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;features that have never existed in any previous equivalent software (from myself and others in this niche hobby space)&lt;/li&gt;
&lt;li&gt;huge improvements to UI including working mobile portrait mode and desktop modes&lt;/li&gt;
&lt;li&gt;500+ tests and 77% coverage versus 0 tests and 0% coverage&lt;/li&gt;
&lt;li&gt;optimisations that allowed me to downgrade my Vercel account to a free plan&lt;/li&gt;
&lt;li&gt;GDPR-compliant analytics and error tracking&lt;/li&gt;
&lt;li&gt;extending my integration with Google auth from test-mode (allow-listed users only) to production (anyone can sign up)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not bad for effort spent while out for a walk or on the London underground&lt;sup id="fnref3"&gt;&lt;a href="#fn3"&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;h3 id="how-it-works-github-workflows-for-cloud-hosted-agentic-coding"&gt;
  
    How it works: Github workflows for cloud-hosted agentic coding
  
&lt;/h3&gt;

&lt;p&gt;When I say “Github starts Claude Code in the cloud” it may not be clear exactly what I mean. Here’s an example of a workflow file from my project’s &lt;code&gt;.github/workflows&lt;/code&gt; folder:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Claude Issue Triage

on:
  issues:
    types: [labeled]

jobs:
  claude-triage:
    if: github.event.label.name == 'needs-elaboration'
    ...
    steps:
      - name: Checkout repository
      ...
      - name: Run Claude Code
        uses: anthropics/claude-code-action@v1.0.70
        with:
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
          prompt: |
            GitHub issue #${{ github.event.issue.number }} ("${{ github.event.issue.title }}")
            requires your analysis...
        claude_args: "--max-turns 20 --dangerously-skip-permissions"
        show_full_output: "true"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Think of it like running a CI workflow in Github actions, except that instead of running against a branch or pull request, this workflow runs when an issue is labelled &lt;code&gt;needs-elaboration&lt;/code&gt;. First it checks out the code, then it runs &lt;a href="https://code.claude.com/docs/en/github-actions"&gt;Anthropic’s Claude Code action&lt;/a&gt;. The action passes a fixed prompt to Claude Code plus metadata from the Github workflow (like the contents of the labelled issue).&lt;/p&gt;

&lt;p&gt;It doesn’t have to be Claude Code, I could go with &lt;a href="https://opencode.ai"&gt;Opencode&lt;/a&gt; or the Copilot agent instead.&lt;/p&gt;
&lt;h3 id="notes-for-people-unfamiliar-with-unsupervised-agentic-coding"&gt;
  
    Notes for people unfamiliar with unsupervised agentic coding
  
&lt;/h3&gt;

&lt;p&gt;If AI-coding terms like &lt;a href="https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16dd04"&gt;gastown&lt;/a&gt;, &lt;a href="https://www.task-master.dev"&gt;taskmaster&lt;/a&gt;, &lt;a href="https://ghuntley.com/ralph/"&gt;ralph loops&lt;/a&gt;, or &lt;a href="https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents"&gt;minions&lt;/a&gt; mean nothing to you, these notes about what becomes different when we stop intervening in agentic code may be helpful.&lt;/p&gt;

&lt;p&gt;First of all, the &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; option on Claude Code may look scary, but it’s standard practice for folks who want to run Claude Code without any human intervention. I am less worried about doing this in a random github actions runner in the cloud than I am running it on my local machine. My laptop remains safe for my day job.&lt;/p&gt;

&lt;p&gt;In unsupervised agentic coding, there’s a &lt;a href="https://github.com/ghuntley/how-to-ralph-wiggum?tab=readme-ov-file#-move-outside-the-loop"&gt;transition from “human in the loop” (approval of individual code changes that the agent makes) to “human on the loop”&lt;/a&gt; where the agent’s output over time is assessed and its standard instructions are improved. I’m not telling Claude which code to modify or how. Instead, it decides and I have to live with the results until I can give it what is needed to solve a problem in a better way the next time. This is a lot like being a manager of human coders (at least one who does not want to be a bottleneck to team output).&lt;/p&gt;

&lt;p&gt;Some of the code in this project is really bad, for example a 1500-line JSX file. I only noticed this because of how Claude was struggling to implement changes to this code. Ideally I would have noticed this earlier, but the path to recovery is fairly straightforward. I’ll tell Claude to identify pieces of the component that can be split into separate components and files and have it create new github issues that the agents themselves can plan and implement. This is just how I would work as a developer myself (my threshold for breaking the code down would be somewhat earlier than 1500 lines though).&lt;/p&gt;

&lt;p&gt;I wouldn’t trade the progress I’ve made in this month for perfect code. There’s a lightbulb moment for every developer when they work on software that they themselves want to use: suddenly the choice to pursue higher quality code has to fight for development priority with wanting to use a new shiny feature. The delicate balance is in knowing that with too much tech debt (e.g. 1500 line components), the shiny features will take longer and longer to build until eventually “improve quality then build new feature” takes less time than just “build new feature”.&lt;/p&gt;

&lt;p&gt;A crucial factor is that the number of lines of code is no longer linked to the time it took to produce them. I often start by asking for options to address a problem. Out of five options, three may be easily rejected. When there are two or more realistic options, I don’t need to reason about them in the abstract: I can have Claude build both and see how each of them feels. There is no opportunity cost choice between one option and another.&lt;/p&gt;
&lt;h3 id="validation-from-y-combinator"&gt;
  
    Validation from Y-Combinator
  
&lt;/h3&gt;

&lt;p&gt;The AI coding scene moves fast. As I was writing the first draft of this post I was puzzled that I hadn’t seen anyone else discussing a workflow like this. Between then and now &lt;a href="https://docs.twill.ai/overview"&gt;Twill.AI&lt;/a&gt; announced a real product which seems like the same idea but with some professional features like more advanced sandboxing and integration with Slack, Whatsapp etc. that they’re betting are worth paying for.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;
  
    Conclusion
  
&lt;/h3&gt;

&lt;p&gt;Mine is a very low-stakes project which gives me freedom to experiment. There are serious gaps that I would need to close before applying this workflow to professional work, but I don’t think they’re insurmountable (certainly Twill.AI and many others are trying their best). I expect that over time I’ll be able to extend the agents’ work to close more and more gaps without breaking the bank. In the meantime, you can find me at the park with my daughter.&lt;/p&gt;

&lt;aside class="related-articles"&gt;&lt;h2&gt;If you enjoyed this post, you might also like:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://thoughtbot.com/blog/how-to-use-chatgpt-to-find-custom-software-consultants"&gt;How to Use ChatGPT to Find Custom Software Consultants&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thoughtbot.com/blog/debugging-why-your-specs-have-slowed-down"&gt;Debugging Why Your Specs Have Slowed Down&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thoughtbot.com/blog/from-idea-to-impact-the-role-of-rapid-prototyping-in-agetech"&gt;From idea to impact: The role of rapid prototyping in AgeTech&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/aside&gt;

&lt;div class="footnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Your actions will just stop running if either Claude or Github plans run out. There are time-based limits that refresh over different periods. Claude is based on tokens and I use their cheaper tier of models (Sonnet) to make the limit go further. Github Pro Plans include an actions-based limit of 3000 minutes per month. I use much less than 3000 minutes per month on my side project. Github has recently changed their pricing model, but it is mostly with regards to AI token pricing, and in this case I’m getting my tokens directly from Anthropic. &lt;a href="#fnref1"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;Before you worry about the safety of running code without reading: there is no backend, no personal information tracked, and all data is stored in a user’s browser or in their own Google Drive. Also note that I don’t read code per-feature &lt;em&gt;during&lt;/em&gt; the loop, but I do get to look at the code as a whole over time. &lt;a href="#fnref2"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;A few weeks back I was watching people play a game that made me think of a new feature. I took out my phone to write an issue, then carried on watching. By the time I was home, the feature was ready in production. &lt;a href="#fnref3"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
</content>
  <summary>Podcasts and the blogosphere are awash with people talking about building software while away from their desks, but often burning serious cash in the process. Here's a simple and cheap way to try this out for yourself.</summary>
  <thoughtbot:auto_social_share>true</thoughtbot:auto_social_share>
</entry>
</feed>
