BehaviorTree.CPP
SoftwareC++17 behavior-tree execution framework with XML trees, custom nodes and plugin loading. [1] [2] [3]
Installation & first result →Official websiteGetting started
- Source rights
- Named licenses are documented by part. Review licenses
- Unknowns
- operating system, compute requirements not fully established. Review gaps
Source researched · Not tested by us
Sources checked · Research details
Overview
BehaviorTree.CPP is a C++17 behavior-tree framework for composing actions and conditions, loading XML trees and registering custom nodes or plugins. The reviewed README describes asynchronous actions, dataflow and logging/profiling facilities. It is useful for organizing robot decision logic, but its tree engine does not itself implement a gripper, navigation transport or durable robot action. [1] [3]
Is this for you?
- Known limitations
- Tutorial uses dummy-node plugin callbacks; successful tutorial output is not physical gripper execution.
- User nodes must implement real actions, error/status handling and interruption semantics; no upstream build was run.
Editorial source-scope assessment; no installation, execution or compatibility test.
What you need
Installation & first result
Open the upstream getting-started guide [1] [2] [3]
- Inspect the pinned source instructions and select the documented configuration.
- Install only the dependencies for the chosen route; validate against the selected robot or model before hardware integration.
Editorial source-scope assessment; no installation, execution or compatibility test.
Project notes
Pick a build route before adapting the tutorial
The pinned README labels the project 4.9 and requires a C++17 compiler. It lists ROS2 colcon/ament, Conan and straight CMake routes, with pixi also documented. Conan builds require CMake 3.23 or newer. These routes manage dependencies differently; package-manager versions installed today need not equal the inspected source revision. No build was performed. [1]
For the documented Conan route, run from the repository root: conan install . -s build_type=Release --build=missing, then cmake --preset conan-release and cmake --build --preset conan-release. The straight-CMake alternative expects dependencies such as ZeroMQ and SQLite to be installed separately, then uses cmake -S . -B build_release and cmake --build build_release --parallel. Choose one route rather than combining their assumptions. [1]
The library bundles nlohmann/json. The README says that selecting a system copy with -DUSE_VENDORED_JSON=OFF requires version 3.10 or later, and all code linking the public API must use the same version. That compatibility boundary matters when integrating into an existing application. [1]
Read the first tree as a callback example
The inspected examples/t01_build_your_first_tree.cpp registers nodes through BehaviorTreeFactory, creates a tree from XML text and calls tickWhileRunning(). Its sequence names battery, open-gripper, approach-object and close-gripper nodes. Those names describe tutorial callbacks, not observed device actions. [3]
By default, the source loads ../sample_nodes/bin/libdummy_nodes_dyn.so. A compile-time MANUAL_STATIC_LINKING branch instead registers dummy nodes and callbacks individually. The plugin must actually exist at the expected path for that default tutorial route; the source's expected-output comment is not a successful run from this review. Inspect registration names against XML node names before adapting the example. [3]
For a robot integration, replace tutorial callbacks with actual application actions and define their success, failure, running and interruption behavior. A callback returning success cannot establish physical execution or recovery by itself. Neither the sample's dummy plugin nor a tree tick verifies external IPC, motor feedback or persistence. [1] [3]
The repository is MIT licensed; bundled dependencies and separately linked tools retain their own terms. Groot2 is linked as an optional graphical editor, not established here as part of the library's license grant. No dependency installation, compilation, plugin load, tutorial execution, asynchronous cancellation or robot action was tested. [1] [2]
What we checked
Pinned source research only; selected implementation and setup text inspected. No dependency installation, upstream build, API export, robot simulation, hardware commissioning, timing or performance test performed.
Not yet established
- Requirements: operating system, host computer
- Version-specific hardware compatibility (ecosystem tags alone do not establish it)
Updates
- Upstream last updated
- Not established
- Latest release
- Not established
- Profile updated
- Nov 1, 2026
- Sources last checked
- Nov 1, 2026
- Next review
- Dec 1, 2026
- Reviewed revision
a9d6e56
Source files and licenses
Distinct robotics software implementation with inspectable source, declared license and bounded initial workflow.
| Layer | Availability / license |
|---|---|
| software | available · MIT Repository project notice; bundled/external dependencies and robot/model/CAD/hardware assets retain their separate terms. No whole-tree license audit or hardware rights clearance. [1] [2] [3] |
| documentation | available · MIT Repository project notice; bundled/external dependencies and robot/model/CAD/hardware assets retain their separate terms. No whole-tree license audit or hardware rights clearance. [1] [2] [3] |
Software entry; no separate physical design, firmware distribution, training-weight or dataset claim selected.
References
Each source links to the exact revision we read. “Used for” shows where this page relies on it.
- S001 README.md
Revision, date & where cited
BehaviorTree/BehaviorTree.CPP contributors · github.com · revision
a9d6e56· README.md at · Accessed Nov 1, 2026
Used for: Overview, Is this for you?, What you need, Installation & first result and 3 more - S002 LICENSE
Revision, date & where cited
BehaviorTree/BehaviorTree.CPP contributors · github.com · revision
a9d6e56· LICENSE at · Accessed Nov 1, 2026
Used for: Is this for you?, What you need, Installation & first result, Read the first tree as a callback example and 1 more - S003 examples/t01_build_your_first_tree.cpp
Revision, date & where cited
BehaviorTree/BehaviorTree.CPP contributors · github.com · revision
a9d6e56· examples/t01_build_your_first_tree.cpp at · Accessed Nov 1, 2026
Used for: Overview, Is this for you?, What you need, Installation & first result and 2 more
Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5