BehaviorTree.CPP
- Software
- Middleware
- Library
A C++17 library for building behavior trees, mainly for robotics but also usable for game AI or replacing finite state machines. Trees are defined in an XML-based scripting language.
Made by BehaviorTree.
Source on GitHub: github.com/BehaviorTree/BehaviorTree.CPP (opens in a new tab). Facts read at commit 03ec870 (opens in a new tab).
Licenses
- Code
- MIT (opens in a new tab)
Read by Robotheca from LICENSE (opens in a new tab) (MIT) at commit 03ec870 (opens in a new tab), on 16 Oct 2026.
- Commercial use
- Yes
What it does
- Makes asynchronous, non-blocking Actions a first-class feature.
- Supports reactive behaviors that run multiple Actions concurrently.
- Trees are loaded at run-time from an XML-based scripting language rather than hard-coded in C++.
- Custom TreeNodes can be statically linked or loaded at run-time as plugins.
- Provides a type-safe mechanism for dataflow between Nodes of a tree.
- Includes logging and profiling to visualize, record, replay, and analyze state transitions.
Written by Robotheca from the project's README (opens in a new tab) at commit 03ec870.
Getting started
- Difficulty
- Intermediate
- Hardware it needs, as the project states it
- A compiler that supports C++17. Builds are supported with colcon (ament) for ROS2, conan (Linux/Windows), or straight cmake.
- How to start
- The project's website (opens in a new tab)
Maintenance
- Status
- Active: a commit in the last 90 days
- Newest commit
- 10 Oct 2026 on master
- Latest release
- [4.9.0]: 60 issues fixed, new TryCatch node and MUCH MORE (11 Feb 2026)
Checked on GitHub on 16 Oct 2026.
Links
Robots on Robotheca that use it
No robot on Robotheca is linked to it yet. Links come from a robot's robot.yaml, from its dependency files read as text, or from Robotheca's editors.
Robotheca lists software as a reference: nothing is hosted or run here, and every fact links to where it was read.