Pigweed#
Sustained, robust, and rapid embedded product development for large teams
Get started#
Understand the core components of Pigweed and determine whether Pigweed is a good fit for your project.
Explore key Pigweed features, such as hermetic building, full C++ code intelligence in VS Code, communicating with devices over RPC, host-side and on-device unit tests, and lots more in a guided walkthrough.
Fork our minimal, Bazel-based starter project to create a new Pigweed project from scratch. The project includes a basic blinky LED program that runs on Raspberry Pi Picos and can be simulated on your development host.
Set up a C++-based Zephyr project, set up GitHub Actions, integrate Pigweed into an existing Bazel project, and more.
What’s new in Pigweed?#
Highlights:
Asynchronous C++ client and server in pw_rpc2 - Invoke and serve unary and streaming RPCs asynchronously over stateful
pw_transportconnections withpw::rpc2::Clientandpw::rpc2::Server.Custom status types in pw_status, pw_result, and pw_enum - Define zero-cost custom status types and return them from fallible functions with
pw::StatusBase,PW_ENUM_STATUS, andpw::Result<T, StatusType>.Low-overhead packet framing with pw_cobs - Frame binary packets over byte streams with predictable overhead in C++ and Python using
pw_cobs.Test case filtering in pw_unit_test - Run individual test cases with
SuiteName.TestNamewildcard filters across C++, RPC, and Python inpw_unit_test.
And more! See What’s new in Pigweed: October 2026.
Platform overview#
Pigweed modules are building blocks and infrastructure that enable faster and more reliable embedded development.
Remote procedure calls (RPC), channels, and communication streams
Structured logging, tokenization, metrics, crash handling, and tracing
Cooperative multitasking, futures, and asynchronous primitives
Protocol Buffers, JSON, Varint, Base64, and wire format serialization
Synchronization, threading, and portable RTOS abstractions
Embedded kernels, preemptive scheduling, and userspace isolation
Memory allocators, buffers, persistent flash storage, and key-value stores
Hardware abstraction layer interfaces for timers, I2C, SPI, UART, and GPIO
Board support, hardware drivers, and SDK integrations for target platforms
Embedded-safe collections, spans, strings, status, and error handling
Unit testing frameworks, mocking, compilation tests, and fuzzing
Bazel, GN, and CMake integrations and rules
And more! See Platform.
Who’s using Pigweed?#
Pigweed has shipped in millions of devices, including Google’s suite of Pixel devices, Nest thermostats, satellites, and autonomous aerial drones.
Showcase: pw_console#
pw_console is our multi-purpose, pluggable REPL and log viewer. It’s designed to be a complete development and manufacturing solution for interacting with hardware devices via pw_rpc over a pw_hdlc transport. Gone are the days of hacking together a REPL and log viewer for each new project!
Using pw_console to interact with a device#
Talk to us#
For real-time discussion with the Pigweed team, head over to our Discord.
Our next Pigweed Live is Mon Nov 16, 2026 1PM (PST). Please join us to discuss what’s new in Pigweed and anything else Pigweed-related that’s on your mind. Join our mailing list to receive an invite to the next meeting.
Found a bug? Got a feature request? Please create a new issue in our tracker.