Skip to content

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.

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.

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.