Give an agent $100 and a shutdown switch
A local app where every model call costs the agent money, and hitting zero ends the run
An agent starts with a fictional $100, researches real problems, picks one opportunity, builds the assets and writes a sell plan. Every call it makes is deducted from its balance. At zero it stops. The design move worth studying is not the earning — it is that revenue can only be entered by a human with proof, so the one number that would make the whole thing look successful is the one number the agent physically cannot touch.
Give an agent a budget that actually depletes and the behaviour changes shape: every task has to justify its cost against a balance you can watch fall. That is a far more honest test of usefulness than an agent with unlimited retries. It is also an experiment rather than a business — the money is fictional, the costs are estimates, and nothing here earns anything by itself.
The agent has no tool that spends, buys, opens accounts, sends payments, sends messages or publishes. It writes files into an outputs folder and nothing else. It cannot add revenue either — there is no code path for it. That is the safety model: not a rule in a prompt asking it to behave, but the absence of any mechanism to misbehave. Prompt-level restrictions get argued around; missing functions do not.
Setup — five steps
Python 3.10+ and a model API key. No key yet? The dry-run flag runs the entire app on stub text at zero cost, which is the sensible way to see the loop before paying for it.
The environment file
The two price lines are worth setting properly — they are what every cost estimate is computed from, so leaving them at defaults gives you a believable but wrong balance.
The wallet
Recomputed from the ledger on every refresh rather than stored as a running total — so the number on screen is always derivable from the lines beneath it.
Where each line comes from
Four survival modes
The balance does not just display — it changes what the planner is allowed to propose.
The dashboard
One page, no login, and everything the agent does passes through a single button.
Two steps per task, and a stage it cannot skip
Thirteen tasks across seven stages. It cannot sell before it has chosen.
It picks one task and argues for it
The model sees the balance, the mode, the stage, the chosen opportunity and everything already finished, then selects one permitted task with a two-sentence reason. If the task would need an external action — contacting someone, publishing, spending — it flags that, and even then no tool exists to do it. It writes a draft instead.
Nothing runs until you say so
The task executes with all previous outputs as context, saves a numbered file, harvests every URL into a sources list, books the cost against the ledger, and advances the stage.
The seven stages and what each one leaves behind
Every task produces a numbered file, so the run is legible after the fact rather than living in a chat log.
With live search enabled the research tasks must cite URLs. When the search tool is unavailable, the agent is told it has no live data and instructed to output “research unavailable — paste links and re-run” rather than filling the gap from memory. Every prompt carries the same rule: no invented facts, statistics, customers, competitors or revenue, and anything unverifiable gets marked as needing a source. An agent that says it does not know is worth more than one that produces a confident market analysis from nothing.
Your first session, about fifteen minutes
Simulation mode — fake money, clearly labelled
A demo switch for seeing the survival mechanics without waiting for real events. An amber banner makes the state unmistakable.
Simulated entries carry a tag in the ledger and are listed separately on the revenue card, so fake money is never mistaken for real. That is a small implementation detail doing a lot of work — the moment a demo mode blends into the real numbers, the whole premise of the wallet stops meaning anything.
Project layout
The key never reaches the browser — the dashboard talks to a local API rather than holding credentials itself.
Troubleshooting
Where it would go next
Stop estimating
Pull actual usage from the provider’s usage API and attach real hosting and tool bills, so the ledger stops being an approximation.
Verified import
A test-mode payment webhook or CSV import that logs payouts with a proof link on the ledger line.
With a hard cap
Run several tasks in a row while healthy, stopping the instant the mode drops.
More than one bet
Per-idea stage, sources and cost-to-date, so it can kill a loser and reallocate.
Publishable outputs
One-click export of the landing page and product to a static host — still behind your approval.
This is an experiment about whether an agent’s work could plausibly cover its own costs. The $100 is fictional, the costs are estimates, and no revenue exists unless you earned it and logged it yourself. No income is promised or implied.
The setup steps, environment file, wallet formula, survival thresholds, stage list and troubleshooting follow the source guide. Nothing here had external claims to verify — no repository, version or pricing figures — and the model name in the environment file is left generic, since that is the fastest-moving line in any such setup. The author’s byline and follow prompt are not carried across.