AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Full read/write HTTP API for controlling Timberborn with AI (modified fork of abix-/TimberbornMods)
Developer toolsPython · C#GitHub @impuls42OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Status: gameplay is stable; AI integration and automation features are under active development
Modified fork of abix-/TimberbornMods. Extends the original mod with an expanded read/write HTTP API, automation wiring endpoints, a WebSocket event/state channel, and AI-agent integrations. All credit for the original mod goes to abix-.
Getting Started | API Reference | WebSocket Protocol | Upstream
C# mod + Python client that lets AI agents read and control a running Timberborn game over HTTP, with a parallel WebSocket channel for push-style state and events.
Timberborn (Unity)
|-- Timberbot API mod
|-- HTTP server on :8085 read + write game state
|-- WS server on :8086 /api/ws — state pushes + game events
Python (PyPI: `timberbot`)
|-- `tbot` CLI dashboard, agent launcher, raw API client
|-- `tbot watch` long-running WS connector that drives an agent
|-- `tbot listen` WS event subscriber (CLI + scripts)
|-- `from timberbot import …` typed Pydantic client for scripts
pipx install timberbot # or: pip install timberbot
tbot init # materialize agent prompts into ~/.config/timberbot
# with Timberborn running + mod loaded
tbot summary # colony snapshot
tbot buildings # list all buildings
tbot beavers # beaver wellbeing + critical needs
tbot map --x1=110 --y1=130 --x2=130 --y2=150 # ASCII map with terrain + blockers
tbot place_building --prefab=Path --x=100 --y=130 --z=2 --orientation=south
tbot place_path --x1=110 --y1=130 --x2=130 --y2=150 # A* pathfinding with auto-stairs
tbot set_speed 3 # fast forward (positional)
tbot science # science points + unlockable buildings
tbot distribution # import/export settings per district
tbot link --source-id=42 --target-id=44 --input=a # wire sensor -> building
tbot configure_automation --id=42 --property=threshold --value=50
tbot brain # live colony state + persistent memory
tbot top # live colony dashboard
tbot # list all commands
Auto-launch a save (Linux/Windows) or generate Steam launch args (macOS):
tbot launch --settlement=MyCastle --save=day5
tbot itself is a pure network client and does not read the game's Documents
tree. On Linux/Steam Deck the build-time scripts/deploy.sh autodiscovers the
Proton/Wine Documents/Timberborn/Mods/Timberbot/ folder when copying the
freshly built DLL; set TBOT_DOCUMENTS_DIR for non-steamuser Wine prefixes.
Or use raw HTTP. no Python needed:
curl http://127.0.0.1:8085/api/summary
curl -X POST http://127.0.0.1:8085/api/speed -d '{"speed": 3}'
Live state + game events over the WebSocket:
tbot listen --pretty # subscribe to ws://127.0.0.1:8086/api/ws
tbot watch --backend claude # long-running agent connector
ws://<host>:8086/api/ws as {type, payload} JSON frames. See WebSocket Protocol./api/* calls (read + write) return 409 game_not_ready except /api/agent/*, /api/ready, /api/ping.tbot watch connector. Long-running Python process that connects over WS, heartbeats, and dispatches agent runs (request or autonomous mode).place_path routes around obstacles, water, and ruins with auto-stairs./api/tiles and placement errors.authToken setting; mandatory when listenAddress is non-loopback.127.0.0.1, refuses to start with a non-loopback listenAddress unless authToken is set, caps request body size./api/ws frame envelope, message types, reconnecttbot listen or a custom WS client/api/automation/* designtimberbot, scout, wirer, auditor, connector-mode). Materialize editable copies into your user config dir with tbot init. The development-agent prompt for working on this codebase lives separately at agents/beaver-developer.md.Drop a settings.json in your mod folder (Documents/Timberborn/Mods/Timberbot/):
{
"httpPort": 8085,
"wsPort": 8086,
"wsEnabled": true,
"listenAddress": "127.0.0.1",
"authToken": "",
"debugEndpointEnabled": false,
"maxBodyBytes": 1048576
}
All fields are optional. Missing keys use defaults. The server binds to
127.0.0.1 by default; set listenAddress to + or 0.0.0.0 to accept LAN
connections — but then authToken becomes mandatory (the mod refuses to start
otherwise).
Older settings keys are ignored with a one-line deprecation warning at load:
terminal, pythonCommand, agentBinary, agentModel, agentEffort, agentCommandTemplate, agentAllowlistEnabled, agentAllowedBinaries) — manage agent-side defaults via ~/.config/timberbot/config.toml instead.webhooksEnabled, webhookBatchMs, webhookCircuitBreaker, webhookMaxPendingEvents, webhookValidateUrls) — outbound HTTP webhooks are gone; subscribe to the WS event stream instead (tbot listen or a custom WS client).tbot CLI; install via pipx install timberbot)Forked from:
Learned from these Timberborn modding projects:
BlockObjectPlacerService.Place() for building placement, TemplateInstantiator + MarkAsPreviewAndInitialize + IsValid() for game-native placement validation, BuildingUnlockingService.Unlock() for science, WorkingHoursManager for work schedulesTreeCuttingArea.AddCoordinates() for tree marking, IAlertFragment patterns for building alertsInventories.AllInventories for building inventory, BuildingUnlockingService.Unlocked() for science checksPlantingService.SetPlantingCoordinates() for crop planting, PlantingAreaValidator.CanPlant() for planting validationPreviewFactory + BlockValidator patterns for placement validation