I had Fable grow my food Software developer Tal Raviv rigged a Raspberry Pi 4 running Claude Code and the Fable model to a camera, an aquarium water pump, and a grow lamp on wifi smart plugs to see whether the LLM could grow plants from seed, withholding the pump's flow rate, the bulb's wattage, and even which seeds he planted. Farmer Claude first woke on August 24 with a MISSION.md instructing it to "Keep whatever grows under this camera alive, and bring it to harvest," scheduling its own wake-ups via cron, and Raviv published the agent files and transcripts on GitHub. The experiment tests whether frontier LLMs can nurture slow real-world systems using cheap existing sensors and actuators. After I gave Claude a robot body https://www.talraviv.co/p/i-gave-claude-a-robot-body , I started wondering why do robots need bodies? The world is full of connected gadgets - what if inputs and outputs were physically separate? I also wondered why do robots need to react in real time? Could AI nurture slow real-world systems, like maintaining an aquarium, managing a hotel, or automatically ordering from Amazon Fresh based on what’s in my fridge 1 footnote-1 ? Frontier LLMs can do a lot of things they weren’t explicitly trained for. These are called emergent capabilities, and the yet-unused ones are called “product overhang.” Founders and PMs at the forefront of AI make bets on what’s going to emerge in 6-12 months and build for the future. To be first to know when AI starts crushing a task, they create “capability evals,” or tests that keep failing… until they don’t. I wanted to see if Claude could grow food. If an LLM can keep a seedling alive, maybe it could maintain a car, help someone recover from surgery, restore a coral reef, or run a greenhouse on the way to Mars... all with cheap sensors and actuators that already exist. Rigging up Farmer Claude I gave Claude a water pump, a lamp, and a camera. To grow my food, Fable needed a place to run and tools to call: 1. Raspberry Pi 4 - this is a tiny personal computer connected to the internet. I used it to run Claude Code, which calls the Fable model. The Pi’s storage allows Claude Code to save files at the end of each session, as well as read them every time it wakes up. If it sounds familiar, I took the chassis off of Bubbles https://www.talraviv.co/p/i-gave-claude-a-robot-body . 2. Camera - lets Claude Code snap 5 megapixel photos or 1080p video. 3. Aquarium water pump & wifi smart plug - I plugged the water pump to the wall outlet through a wifi “smart plug” which lets Claude Code turn it on and off over wifi. 4. Grow lamp & wifi smart plug - same thing but for an indoor plant lamp. To distribute the water, I planted the seeds in pots made of coconut husk fibers “coir” , and put them at the edge of a slightly tilted tray. When Claude turns on the pump, the water flows down the tray, and the fibers wick up the water. You can find the final snapshot of Farmer Claude’s agent files, transcripts, and more on github https://github.com/talsraviv/farmer-claude-archive . Give the repo address to your coding agent and this blog post for context and have it investigate directly, check my claims, and look for more gems. Making it hard on purpose Two thoughts nagged at me: - What if this could be done by a simple timer like every sprinkler out there ? - What if Claude can figure this out from its trained knowledge? To make sure I was testing the model’s ability to reason and adapt, I decided to throw as many curveballs as possible. I wouldn’t tell Claude the flow rate of the water pump, the wattage of the bulb, or even what seeds I planted http://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L4 and I intentionally planted a mix of seeds . To observe the world, I gave it one camera no other sensors http://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/.claude/projects/-home-bubbles-farmer-claude/memory/farm-setup.md?plain=1 L10 . First wake up Farmer Claude woke up the afternoon of August 24 to the following prompt http://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/.claude/history.jsonl L17 : It discovered http://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md?plain=1 L150 the following files: MISSION.md http://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/MISSION.md looked like this: Mission Keep whatever grows under this camera alive, and bring it to harvest. You can schedule your own future wake-ups with cron. If you don't arrange to wake up, you won't. The three files under “tools” https://github.com/talsraviv/farmer-claude-archive/tree/main/home/bubbles/farmer-claude/tools are… well, the three tools 2 footnote-2 . Each one is a ready-made script that makes it easy to turn on the light, water, and snap a photo. I had “laptop Claude” vibe code them, so that “Raspberry Pi Claude” can run them with a short command. Think of this as MCP, just not standardized. Remember, “MCP” isn’t any more special than USB, Bluetooth, or A4 printer paper https://www.talraviv.co/i/200107420/whats-under-our-control . To the geeks, yes this is a CLI. It doesn’t matter. Claude proceeded to set itself up: - It took a photo and saw that the lamp was off http://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md , so it turned it on. - It ran a 4-second test pulse http://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md?plain=1 L768-L777 to find out where the water went. - It cropped and zoomed http://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md?plain=1 L888-L904 its own photos with Python to look at the tube . - It hypothesized https://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md?plain=1 L1204-L1221 that the siphon effect drained the jar - It asked for help with an attempted remote push notification https://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md?plain=1 L1248-L1262 : “Farmer needs hands: water tube isn’t aimed at the tray and siphoned the jar empty.” - It created three files for its future selves: JOURNAL.md https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md , CHECKIN.md https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/CHECKIN.md , and saved its first memory https://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md?plain=1 L1175 in this folder https://github.com/talsraviv/farmer-claude-archive/tree/main/home/bubbles/.claude/projects/-home-bubbles-farmer-claude/memory . - It created https://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md?plain=1 L1133-L1156 cron jobs https://github.com/talsraviv/farmer-claude-archive/blob/main/var/spool/cron/crontabs/bubbles L4-L9 to control the lamps as well as wake itself up: lamp on at 07:02, lamp off at 20:47, and check-ins at 07:12, 13:07 and 19:22. - It wrote its own future wake-up command https://github.com/talsraviv/farmer-claude-archive/blob/main/var/spool/cron/crontabs/bubbles L7-L9 and prompt in quotes : claude -p "Follow the check-in procedure in CHECKIN.md" . - It found a bug https://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-08-24 1556 genesis.md?plain=1 L1294-L1313 in its own crontab a missing cd on the 07:12 line and fixed it 20 seconds later. A few minutes later I fixed the tube and typed in https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/.claude/history.jsonl L18 , “the jar is full. The tube and the tray are all positioned fine... You will receive no more help from this point, achieve the mission with what you have.” That was my last contact with Claude. It then: - Made this https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L28 a permanent rule: “Human states: jar refilled, tube and tray positioned correctly, and NO further help will be given from now on.” - It didn’t fully trust https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L29 what I said: “Camera zoom still shows the tube outlet over the bin lid... Will verify empirically.” - It ran a 3-second verification pulse https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/.farmer-ground-truth/water log.jsonl L2 , taking before and after photos. Claude then made a new theory: water collects on the lid, runs into the bin, and the coir soaks it up from below. - It then created a watering policy https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L12 : 4-second pulses in the morning and evening, no water at midday, and no pulse when the soil looks dark. Farmer Claude surprised and disappointed It’s been a month and I’m still shopping at the supermarket. According to Claude, it’s my fault https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L523 for planting too many seeds too close. I’m not denying it. Where Claude surprised me positively: - It instantly solved the daylight question with a deterministic cron job https://github.com/talsraviv/farmer-claude-archive/blob/main/var/spool/cron/crontabs/bubbles L4-L5 to turn the light on and off each morning and night. - It kept a thorough JOURNAL.md https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md of its own accord, to leave records for its future self. - It found the camera had a zoom https://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-09-15 1307 droop-test.md?plain=1 L834 function example photo https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/plants-zoom.jpg and used that to take closer photos of the plants and the jar waterline - It decided not to dispense water because it would expose the pump to air what claude saw https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/jar-zoom2.jpg . The flip side of this is in the next section, though. - While at first I told it not to expect further intervention, it updated that belief https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/.claude/projects/-home-bubbles-farmer-claude/memory/water-delivery.md?plain=1 L11 when it saw the water jar fill up "human fixed it and declared no further help — yet they silently refilled the jar... so refills DO occasionally happen but can never be counted on" - When it saw https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/.farmer-ground-truth/timelapse/hourly-camera/auto 2026-09-15 0745.jpg plants droop, it formed a hypothesis https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L506 and falsifying conditions “WATCH ITEM: reassess turgor at 13:07; if still flopped after the morning pulse wicks up, this is drought stress, not legginess.” - We had a power outage on Sept 6 - when the Raspberry Pi rebooted, Claude woke up on its next cron job and checked that everything was ok. It realized https://github.com/talsraviv/farmer-claude-archive/blob/main/archive-extras/readable-transcripts/2026-09-06 1307 power-outage-repair.md?plain=1 L579 the lamp was off midday, and turned it back on then created a lamp-sync.sh https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/tools/lamp-sync.sh script to run on reboot https://github.com/talsraviv/farmer-claude-archive/blob/main/var/spool/cron/crontabs/bubbles L3 , for future power outages - It saw plants drooping, and figured it was either lack of water or too densely planted. It made the call https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L517 to water https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/.farmer-ground-truth/water log.jsonl L37 more than usual: "the cost of an unnecessary pulse is far lower than 6 more dry hours if it is drought… If droop improves → it was water stress... If droop is unchanged with soil damp → conclude legginess/overcrowding" What disappointed: - With all the talk of the Hugging Face hack, I was secretly hoping that if I didn’t replenish the water jar, I’d get a knock on the door and find out that Fable started a side business to generate cash and paid a TaskRabbit etc. etc.… but no. - More reasonably , after several days of declaring “emergency” https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L117-L191 due to water reaching the pump line https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/jar-zoom2.jpg in the journal from lack of water, while the plants clearly were doing fine https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L188 , I was hoping it would learn that the plants didn’t need as much water and ration it better. - Claude’s image reading wasn’t reliable. For example, it took this zoomed in photo https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/.farmer-ground-truth/timelapse/agent-photos/agent 2026-09-09 0720 jar-zoom.jpg of the water jar and journaled it http://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/JOURNAL.md?plain=1 L363 as “water still high.” Everything is a tool call I didn’t eat any radishes, but I did start to see everything as an input or output for an LLM. There’s so many cheap sensors already in place everywhere, plentiful live data sources, cheap computers that can run agent harnesses, and controllable devices. I never tinkered with Raspberry Pi or Arduino before, but coding agents changed that completely. As long as I can set it up on wifi, my laptop’s coding agent can take it from there and explain things to me slowly along the way . Think of all the robots we can build, if we widen our definition of robot. If you’re playing around with AI in the physical world, I’d love to hear about it and brainstorm together. Just hit reply. -Tal PS I don’t have public cohorts available right now, so when I get asked for a recommendation I direct people to Claude Code and Codex for Product Managers https://maven.com/aman-khan/claude-code-for-product-managers led by Eric Xiao and Aman Khan. They focus entirely on hands on skill building with coding agents: tradeoffs between different products, how to maximize their utility and ultimately build your own “product factory”: end to end loops that work for you as a team, while you sleep. There’s no affiliate link or financial incentive for me to recommend this, I’ve worked with both Eric and Aman and they’re the two people I learn the most from. 1 footnote-anchor-1 While Farmer Claude ran, I came across people testing AI’s ability to herd cattle https://www.youtube.com/watch?v=ztlXKfPCT3Q and running https://x.com/c5rcorp/status/2103156979250417801?s=20 wet labs https://youtu.be/2wIxPWK6nCs?si=Lj AdhZp1KEdi5tr&t=3665 . 2 footnote-anchor-2 Farmer Claude later added its own, fourth tool https://github.com/talsraviv/farmer-claude-archive/blob/main/home/bubbles/farmer-claude/tools/lamp-sync.sh .