Open-source project
openthread/openthread avatar
openthread/openthread

OpenThread: A Deep Look at Google's Thread Protocol Stack for Embedded Devices

OpenThread released by Google is an open-source implementation of the Thread networking protocol.

4,029 stars1,215 forksC++BSD-3-Clause

At a glance

What is it?
OpenThread is a BSD-licensed, Thread-certified implementation of the Thread networking protocol, aimed at connected-home device makers. This review covers its architecture, build process, limitations, and alternatives.
Who is it for?
Adopt OpenThread if you are building a Thread-certified device or border router and need a proven, spec-complete stack with a narrow platform abstraction layer. Avoid it if you only need simple point-to-point wireless links without the full Thread mesh and IPv6 stack.
Can I use it commercially?
Yes. BSD-3-Clause 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 1 day 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 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Problem OpenThread Solves and Who It Serves

OpenThread solves the problem of building reliable, interoperable mesh networks for smart-home devices without writing a networking stack from scratch. Thread is a protocol that runs over IEEE 802.15.4 radios and provides IPv6-based communication, mesh routing, and security. OpenThread implements the entire Thread 1.4.0 specification, including all networking layers and device roles, plus border router support. The intended audience is product developers who want to ship connected-home devices such as smart speakers, light bulbs, sensors, and thermostats, and who need a stack that has passed Thread certification. The README notes that Google Nest released OpenThread to make the technology used in Nest products broadly available, which signals a production-proven origin. The project is also useful for researchers and hobbyists who want to experiment with Thread networks on development boards, given its portability across SoC and NCP designs.

Architecture: Narrow Abstraction, SoC and NCP Modes

OpenThread is described as OS and platform agnostic, with a narrow platform abstraction layer and a small memory footprint. This design means the core protocol logic is isolated from the hardware, allowing the same code to run on different microcontrollers and operating systems. The abstraction layer is the key to portability; it defines the interfaces the core needs for timers, radio, and other platform services. OpenThread supports two hardware design patterns. In a system-on-chip (SoC) design, the OpenThread stack runs on the same chip as the application, sharing memory and CPU. In a network co-processor (NCP) design, a separate chip runs OpenThread and communicates with the host application over a serial link. This dual-mode support gives product teams flexibility: they can start with an NCP for faster development and later move to an SoC for cost reduction. The README mentions border router support via the separate ot-br-posix repository, which is essential for connecting a Thread network to the internet. That split means the core repository focuses on the device-side stack, while border routing lives in a companion project.

Getting Started: Documentation, Build, and Porting Paths

The README directs all end-user documentation and guides to openthread.io, not to the repository itself. This is a deliberate choice; the repo is for contributors and developers who need to build, port, or extend the stack. The README lists five activities that point to openthread.io: learning features, using OpenThread in products, building and configuring a Thread network, porting to a new platform, and building applications on top. For contributors, the repo provides a Contributing Guidelines file, a Code of Conduct, and a Coding Conventions and Style Guide. The typical build process, based on the repository layout and common OpenThread practice, involves cloning the repo and using a simulation platform such as posix or a specific hardware platform. The README does not include a build command, so you must consult openthread.io for exact steps. What is clear is that you need a platform abstraction layer implementation for your target hardware; the repo includes several platform examples, but you will need to write one for a custom board. The monthly release cadence, with tags like v2026.08.0, suggests a stable release process, and each release likely includes updated binaries and documentation.

Certification and Spec Compliance: Thread 1.4.0

OpenThread is a Thread Certified Component, meaning it has passed the Thread Group's certification tests for the Thread 1.4.0 specification. This is a major advantage over homegrown stacks. The certification covers all Thread networking layers: IPv6, 6LoWPAN, IEEE 802.15.4 with MAC security, Mesh Link Establishment, and Mesh Routing, as well as device roles. It also includes border router support, which is critical for smart-home products that need internet connectivity. The README links to the Thread Group's specification page, so you can verify the exact requirements. However, certification is not a one-time event; if you modify the stack or integrate it into a custom product, you must ensure your product still passes certification. The README warns about trademark usage, reminding you not to imply endorsement by Nest, Google, or the Thread Group. This is a practical constraint: you can use the code, but you cannot claim certification unless your product passes the official tests.

Limitations and Failure Modes

OpenThread is not the right tool for every wireless project. Its focus is on Thread, a mesh protocol for low-power, low-bandwidth devices. If you need high throughput or long-range communication, Thread is a poor fit; the 802.15.4 radio limits data rates to a few hundred kbps. The README does not mention any non-Thread use cases, so you should not expect OpenThread to act as a generic 802.15.4 stack. Another limitation is the need for a border router to connect to the internet; without one, your Thread network is isolated. The border router is a separate project, ot-br-posix, which adds deployment complexity. The documentation is hosted externally, so the repository itself lacks in-depth guides; this can be a hurdle for developers who prefer self-contained documentation. The platform abstraction layer, while narrow, still requires porting effort for new hardware. The README does not provide a list of supported platforms, so you must check the repository's platform directory or openthread.io to see if your chip is covered. Finally, the project is large; the C++ codebase spans many files, and the learning curve is steep for developers new to Thread.

Alternatives and the Zephyr Difference

The most direct alternative to OpenThread is the Thread implementation built into the Zephyr RTOS, which is listed among the supporting organizations in the README. Zephyr includes native Thread support, meaning you do not need to integrate a separate stack; it is part of the operating system's networking layer. The difference is architectural: OpenThread is a standalone library that you can use with any OS or bare metal, while Zephyr's Thread support is tightly coupled to the Zephyr kernel and its device model. If you are already using Zephyr for your application, you might prefer its built-in stack to avoid the overhead of porting OpenThread's platform abstraction layer. However, OpenThread is more portable across different RTOSes and bare-metal environments, and its certification status is explicitly stated in the README. Zephyr's Thread support also aims for certification, but you must verify the specific version. Another alternative is to use a vendor's proprietary Thread stack, such as those from Silicon Labs or Nordic, which are listed as supporters. Those stacks are often optimized for specific hardware and come with vendor support, but they lock you into a single chip vendor. OpenThread's BSD license gives you more freedom to modify and redistribute the code, as long as you preserve the license and trademark restrictions.

Maintenance, Licensing, and Upgrade Cost

OpenThread shows signs of active maintenance. The repository is not archived, and the last push was on 2026-08-01, with a release on the same day. Releases appear on a monthly schedule, with v2026.06.0, v2026.07.0, and v2026.08.0 each released on the first day of their respective months. This cadence suggests a predictable upgrade path, but it also means you should expect to track new releases regularly if you want bug fixes and spec updates. The project is licensed under BSD-3-Clause, a permissive license that allows commercial use, modification, and redistribution with attribution. The README includes a specific trademark clause: you must not use the OpenThread name or marks in a way that suggests endorsement by Nest, Google, or the Thread Group. This is a legal constraint beyond the software license, so product documentation and marketing materials need care. The upgrade cost depends on how much you customize the stack. If you use the stock implementation, monthly releases are likely backward compatible, but if you modify the platform abstraction layer or core, you will need to merge changes. The README points contributors to a style guide, which indicates that the codebase has strict conventions; this helps maintainability but also means your contributions must follow those rules.

Editorial conclusion

Adopt OpenThread if you are building a Thread-certified device or border router and need a proven, spec-complete stack with a narrow platform abstraction layer. Avoid it if you only need simple point-to-point wireless links without the full Thread mesh and IPv6 stack. Before committing, verify the platform abstraction layer for your target SoC or NCP, confirm the memory footprint fits your device, and review the Thread 1.4.0 certification requirements if you plan to certify. The project's monthly release cadence and large vendor support list suggest active maintenance, but you must still check that your specific hardware is covered.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes