An AI farm manager for one Farming Simulator 25 savegame. It reads your save, remembers your farm across sessions, and — with the mod installed — becomes an always-on companion (it introduces itself as Cyrus) that puts messages on your screen while you play and reads your answers back: a card can carry a yes/no, a choice, or a reply box, and your click comes straight back to the manager.
It is read-only against your game. It never writes to your savegame — not once, not ever.
┌──────┬──────────────────────────────┐
│ sun │ MORNING BRIEFING 07:30 │
│ │ 3 tasks recommended │
├──────┼──────────────────────────────┤
│ silo │ SILO ALERT 09:05 │
│ │ Corn silo 2 is 92% full │
└──────┴──────────────────────────────┘
fs25-farm-manager/
├── README.md this file
├── .claude/skills/
│ ├── fs25-farm-manager/ the manager — your AI's farm knowledge
│ │ ├── SKILL.md what it does and when
│ │ ├── scripts/ readers for your save, the notifier, the reply reader
│ │ │ and the event watcher
│ │ ├── references/ crop timing, time mechanics, workflows
│ │ └── templates/ used once, to set up your farm's memory
│ ├── farm-briefing/ /farm-briefing — start a session
│ ├── farm-closeout/ /farm-closeout — end one
│ └── farm-status/ /farm-status — a quick look, writes nothing
└── mod/
├── FS25_AIFarmManager25.zip the on-screen notification + reply mod
└── source/ the mod's source, if you want to read it
The three small skills are shortcuts into the manager; it does the work.
You need: Claude Code, Python 3, and FS25. No Python packages to install — the skill uses only the standard library.
Copy the .claude folder into the project folder you want to run Claude Code from:
your-farm-folder/
└── .claude/skills/
├── fs25-farm-manager/
├── farm-briefing/
├── farm-closeout/
└── farm-status/
If you already have a .claude folder, copy the four folders inside skills/ into your
.claude/skills/. To use it from any folder instead, copy them to ~/.claude/skills/.
Copy mod/FS25_AIFarmManager25.zip into your FS25 mods folder:
| Windows | Documents\My Games\FarmingSimulator2025\mods\ |
| macOS | ~/Library/Application Support/FarmingSimulator2025/mods/ |
Start FS25 and tick AI Farm Manager 25 in the mod list.
The mod is client-side only and safe in multiplayer. It works inside one folder,
modSettings/FS25_AIFarmManager25/: it reads notify.xml (the card to show), appends your
answers to replies.xml, and keeps the on-screen stack in state.xml so cards survive a
restart. It touches nothing else — never your savegame.
Start Claude Code in your farm folder and say "set up my farm manager" — or type
/fs25-farm-manager:
It will find your savegame, ask you a handful of questions about how you want to play, and
write your farm's memory into a sanctum/ folder. That takes a few minutes and happens once.
Just talk to it — or use a slash command.
| Say | Or type | You get |
|---|---|---|
| "set up / start my farm manager" | /fs25-farm-manager |
Onboards a new farm, or resumes managing an existing one |
| "briefing" | /farm-briefing |
What changed since last time, and what's worth doing today |
| "status" | /farm-status |
A quick look at the save. Writes nothing |
| "close out" | /farm-closeout |
Writes up and saves the session so the next one starts informed |
| "what should I buy?" | Seed/fertilizer timing, gear you don't own, the used market — with prices | |
| "what's oat worth?" | Prices, and when they peak |
Everything else is a conversation. Ask it anything about your farm.
Setup creates a sanctum/ folder next to your .claude folder. That's your farm's memory —
its decisions, its history, its house rules. It's plain Markdown; read it, edit it, keep it in
git if you like.
It's yours and it stays local. Nothing here sends your save anywhere.
Once the mod is installed, your AI can put a card on your screen while you play:
python3 .claude/skills/fs25-farm-manager/scripts/notify_farm_manager.py \
-s warn -t "Silo Alert" -i silo "Corn silo 2 is 92% full"-s sets the colour: ok green · info blue · warn amber · critical red.
-i picks the glyph — --help lists them all (briefing, contract, silo, fleet, finances,
crop, weather, harvest, field, report, equipment, fuel, building, supply, schedule, profit,
worker, dealer, soil, season, plus generic leaf/alert/check, and the interaction glyphs the
mod draws on actionable cards).
Recent cards stack, so a new one arrives with its context rather than replacing it. Times are farm time, not your PC's clock.
Exit codes matter: 0 the mod showed it · 2 nothing read it (mod not installed or game
not running) · 1 couldn't work out where to write. A 2 is never a success.
A card can also ask. Give it a stable --id and one or more affordances, and the manager
gets your answer back:
python3 .claude/skills/fs25-farm-manager/scripts/notify_farm_manager.py \
--id ctr-field18-0812 -s info -t "Contract Ready" \
--action yesno "Field 18 harvest — $24,650. Take it?"--action yesno draws 👍/👎, --action ack a single check, --action text a reply box, and
--choice value:Label (repeatable) a set of options. Every actionable card also carries a
✕ to dismiss. You answer with the mouse whenever the game's shared cursor is up (raised by
AutoDrive's middle-mouse, Courseplay's right-mouse, or any cursor mod — this mod reads that
shared cursor, it doesn't own one). Your click is appended to
modSettings/FS25_AIFarmManager25/replies.xml, and the manager reads it back, deduped so a
double-click can't double-count.
You don't watch for that reply by hand. The manager runs an event-driven loop: at the start of a session it arms a watcher that sits idle at ~zero cost and wakes only when the game writes a reply or writes your save; at closeout it stands the watcher down. (It polls the files — inotify can't see Windows-side writes from WSL — and never touches your save.)
Ctrl+Period toggles the overlay between a persistent always-on panel (the default — cards
stay up until you dismiss or answer them, and survive a restart via state.xml) and the
classic transient pop-up where each card fades after its time. If the interactive layer ever
fails, the mod falls back to a plain one-way card, and then to the game's own notification —
interactive → one-way → native, each less capable but still delivering the message.
Move or restyle the panel without reinstalling — create
modSettings/FS25_AIFarmManager25/settings.xml:
<farmManager25>
<hud anchorX="0.985" anchorY="0.86" widthPx="330" textSizePx="13" bgAlpha="0.92" />
<timing minMs="8000" maxMs="60000" msPerChar="70" />
</farmManager25>This exists because a farm manager that invents numbers is worse than none.
- It reads, it doesn't guess. Cash, land, fleet, prices, crop states, contracts — all come from your save. When something genuinely isn't on disk, it says so and asks.
- It never writes to your savegame. All its own notes go in
sanctum/. - An empty answer is never reported as a fact. "No land found" and "you own no land" are different claims, and the scripts keep them different — a bug that once had it confidently report a farm owned nothing when it owned 18 parcels.
- It tells you when it was wrong. If a plan didn't work, it says so.
"It can't find my savegame." Tell it the path. On WSL, use the /mnt/c/... form.
Notifications return exit 2. The mod isn't installed, isn't enabled, or the game isn't running. The script prints what it actually checked — read that rather than guessing.
The notification is a plain grey box. The panel failed to draw and fell back to the
game's own notification, so you still got the message. Check log.txt for
FarmManager25 — it will say exactly why.
Everything looks wrong after a game update. Ask it to re-verify. The scripts report their own trust status at runtime; that's the signal to read.
