Open-source project
limbonaut/limboai avatar
limbonaut/limboai

LimboAI: Behavior Trees and State Machines for Godot 4

LimboAI - Behavior Trees and State Machines for Godot 4

3,028 stars145 forksC++MIT

At a glance

What is it?
LimboAI is an MIT-licensed C++ plugin that adds behavior trees and hierarchical state machines to Godot Engine 4, with GDScript support for custom tasks and states. It suits Godot projects that need modular enemy or NPC logic, but it is version-coupled to specific Godot releases and is not a drop-in for other engines.
Who is it for?
Adopt LimboAI if you are building AI-driven characters in Godot 4 and want behavior trees and hierarchical state machines in one plugin, with GDScript support for custom tasks and states. Do not adopt it if you are not on a supported Godot version, need C# task authoring, or want a general-purpose AI framework outside Godot.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 27 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What LimboAI solves for Godot 4 developers

Godot 4 ships with nodes, scripts and signals, but it does not ship with a behavior tree runtime or a hierarchical state machine. Teams building enemy AI, NPC routines or boss phases typically end up writing ad hoc state logic in GDScript, which works until the number of states and transitions grows. LimboAI targets that gap: it is an open-source C++ plugin that provides both behavior trees and state machines, and the README describes them as usable together to create complex AI behaviors. The audience is Godot 4 developers who want a visual editor for behavior trees, a runtime node to execute them, and a state machine class that can be nested. The README also points to a demo project with a tutorial, which matters because behavior trees are easier to understand by editing an existing tree than by reading an API reference.

How the plugin is built: C++ core, GDScript extension points

The repository layout shows the split clearly: bt/, hsm/, blackboard/, editor/, gdextension/ and demo/ sit alongside register_types.cpp and SCsub. The C++ side implements the runtime and the editor tooling, and it is distributed as a GDExtension. That distinction matters for upgrades, because a GDExtension is compiled against a Godot version. The README's compatibility table makes this explicit: 1.8.x releases require Godot 4.6 or higher for the GDExtension and Godot 4.7 for the module build, while 1.7.x maps to Godot 4.6 and 1.6.x covers Godot 4.4, 4.5 and 4.6. The README states that GDScript is fully supported for creating custom tasks and states, so the C++ core is not a barrier to day-to-day work. Custom tasks extend BTAction, BTCondition, BTDecorator or BTComposite, and custom states extend LimboState. Execution is driven by nodes: BTPlayer runs a BehaviorTree resource, and LimboHSM manages LimboState instances and transitions.

Installing LimboAI and running your first behavior tree

The README describes the plugin as available through GDExtension or AssetLib, and the demo project is distributed separately in Releases. The README gives this starting point for the demo: run demo/scenes/showcase.tscn. It also notes the demo lives in the demo folder of the repository. Because the README does not spell out a step-by-step install command on the page itself, treat the AssetLib entry and the Releases page as the distribution channels and check the documentation site for the current procedure. The workflow the README describes is: create and save a BehaviorTree resource in the editor, then execute it with a BTPlayer node. Custom tasks are GDScript classes that extend the core task classes, so a minimal custom action looks like a script attached to a task resource. The demo tutorial is the fastest way to see a tree execute, and the visual debugger lets you inspect a running tree in a live scene.

Blackboard: shared data without global state

The Blackboard is the part of LimboAI that most affects how you structure a project. The README describes it as a way to share data between tasks, with several layers: blackboard plans define variables in the BehaviorTree resource and let the BTPlayer node override their values; the plan editor manages variables, data types and property hints; scopes prevent name conflicts and support sharing data between several agents. There is also a parameter mechanism: a task can export a blackboard parameter that a user either fills in directly or binds to a blackboard variable, and the inspector has a custom editor for exported StringName properties ending with "_var". That last detail is easy to miss and it is the difference between a task that is reusable across trees and one that hardcodes a variable name. If you have written AI where every action reaches into a singleton for target and position data, the blackboard is the alternative the plugin is offering.

Where LimboAI is the wrong tool

The compatibility table is the first limitation, and it is not a small one. If your project is pinned to Godot 4.3 or earlier, the README maps those versions to older plugin releases (1.2.0 through 1.3.x for Godot 4.3, 1.1.x for Godot 4.2), so you would be adopting a plugin line that is not the current one. Upgrading Godot then forces a plugin upgrade, and the table shows that the GDExtension and module targets do not always move together: 1.8.x is Godot 4.6+ for GDExtension but Godot 4.7 for the module build. A second limitation is language: the README states GDScript support for custom tasks and states, and "LimboAI C#" appears among related searches, but nothing in the README confirms C# task authoring, so a C#-first Godot project should verify that before adopting. Third, this is a Godot plugin, not a general AI library. If your agents are not Godot nodes, LimboAI does not apply.

LimboAI compared with Beehave

Beehave is the other behavior tree addon Godot developers commonly weigh against LimboAI, and "LimboAI vs Beehave" is a phrase people search for. The real difference in approach is scope. LimboAI pairs behavior trees with hierarchical state machines and a blackboard, and the README describes combining the two through BTState for reactive AI. That means a project can keep high-level mode switching in a state machine and put moment-to-moment decision making in a tree, sharing data through the blackboard. A behavior-tree-only addon asks you to express the same logic as one tree, which is often fine for a single enemy and less fine when a character has distinct phases with their own transition rules. The trade-off is surface area: LimboAI asks you to learn BTPlayer, LimboHSM, LimboState, Blackboard plans and scopes. If you only need a tree, that is more concepts than the problem requires.

Maintenance, licensing and upgrade cost

The repository is not archived, and the last push was on 2026-09-04. Recent releases are v1.8.1 on 2026-08-20, v1.8.0 on 2026-06-19 and v1.7.1 on 2026-06-04, which indicates a release cadence measured in weeks to a couple of months rather than years. The licence is MIT, with LICENSE.md at the repository root; MIT is permissive and generally compatible with commercial game distribution, but the demo assets are covered separately by demo/LICENSE_ASSETS.md, and LOGO_LICENSE.md covers the logo. If you plan to ship the demo assets or the logo, read those two files rather than assuming the root licence covers everything. Upgrade cost is driven by the version table: moving Godot versions means moving plugin lines, and the table is the document to check before starting that work. This is a description of the licence files present, not legal advice.

Editorial conclusion

Adopt LimboAI if you are building AI-driven characters in Godot 4 and want behavior trees and hierarchical state machines in one plugin, with GDScript support for custom tasks and states. Do not adopt it if you are not on a supported Godot version, need C# task authoring, or want a general-purpose AI framework outside Godot. Before committing, verify your Godot version against the compatibility table in the README, and open the demo project to confirm the BTPlayer and LimboHSM workflow matches how your project structures scenes.

Frequently asked questions

What is LimboAI?

LimboAI is an open-source C++ plugin for Godot Engine 4 that provides behavior trees and hierarchical state machines, which can be used together to create complex AI behaviors. It includes a behavior tree editor, built-in documentation, a visual debugger and a demo project with a tutorial.

Which Godot version does LimboAI support?

The README's compatibility table maps 1.8.x releases to Godot 4.6 or higher for the GDExtension and Godot 4.7 for the module build, 1.7.x to Godot 4.6, and 1.6.x to Godot 4.4, 4.5 and 4.6. Older plugin lines cover Godot 4.3 and 4.2.

Can I write custom LimboAI tasks in GDScript?

Yes. The README states that while LimboAI is implemented in C++, it fully supports GDScript for creating your own tasks and states. Custom tasks extend BTAction, BTCondition, BTDecorator or BTComposite, and custom states extend LimboState.

What is the LimboAI blackboard used for?

The Blackboard shares data between tasks. The README describes blackboard plans that define variables in the BehaviorTree resource and let the BTPlayer node override their values, a plan editor for variables and property hints, and scopes that prevent name conflicts and support sharing data between several agents.

Where do I find the LimboAI demo and tutorial?

The demo project lives in the demo folder and is available separately in Releases. The README says to run demo/scenes/showcase.tscn to get started, and notes the demo includes a tutorial that introduces behavior trees through examples.

Official sources

  1. License: MIT
  2. limbonaut/limboai on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/limbonaut-limboai.svg)](https://hysenlabs.com/projects/limbonaut-limboai)