Pinned Tweet
built this in july 2025 and it's in daily use on a warehouse floor. scan a barcode and it builds a label for every box in one pdf, 118 in this demo. 144k labels since tracking started this august, about 2,400 on a working day.
the ai wrote that one hit would finish this fight. it never got to throw it. every move gets logged with the reason, so when an agent is wrong you can see exactly where.
the first time rook fought this butterfree, leafy entered at 7/81 hp. astra had planned the trip with a healthy team, but the code kept going as earlier fights wore it down.
in this run, astra chooses objectives like where to travel and when to heal. rook handles movement, menus and battles between those decisions. the failure was letting a travel objective keep running without asking for a new plan as the team got weaker.
the rematch below started with a healed team. leafy and voltie still fainted, and a level 5 weedle landed the finishing hit. the engineering question this raised for me is when the code should hand control back to the model, before a loss forces it to reconsider.
back for the rematch. leafy fainted. voltie fainted. the level 5 weedle finished the fight and evolved.
a level 20 butterfree wiped the team after two gym badges, so i went back through the logs. in this run, astra chooses objectives like where to travel, when to heal and what to train. rook's code handles movement, menus and battles between those decisions. the route started with a healthy team, but earlier fights wore it down and rook kept going without asking for a new plan. leafy entered the butterfree fight at 7 out of 81 hp.
after the loss, astra asked to train voltie before trying again. voltie went from level 8 to 10, and the party healed before the model resumed the trip. this time leafy entered at full health. leafy and voltie still fainted, but butterfree was down to 2 hp when the battle code sent in mothra. one poison sting finished it, and the level 5 weedle jumped to level 9 and evolved into kakuna.
the engineering lesson is deciding when the code should hand control back to the model. a travel objective can stay active while the team becomes too weak to safely finish it. the system needs to notice that change and reconsider the plan before the next fight. that's the part of building an agent that this little pokemon run makes very visible.
i tried meta's muse as the brain for rook, my pokemon red harness. episode 1 cost about $0.44 in api calls. $0.22 went to 21 replies rook couldn't use. our integration was describing the action format in text. we moved to native tool calls while keeping validation strict.
muse chose to train leafy for vine whip before brock. rook handled the battles and menus. that split matters for cost. the model picks goals, so it doesn't need a paid call for every button press.
i later switched to astra after a small comparison favored its recovery planning. that uses my paid subscription's quota, so it isn't free either. what i'm watching is the cost of useful progress, including rejected calls and the attempts spent getting unstuck.

