Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

alt text

Embedded Proto is a product of Embedded AMS B.V. For more information about Embedded Proto please visit EmbeddedProto.com.

Copyright (C) 2020-2026 Embedded AMS B.V. - All Rights Reserved, www.EmbeddedAMS.nl, info@EmbeddedAMS.nl

Introduction

Embedded Proto is a C++ implementation of Google Protocol Buffers dedicated to microcontrollers. The implementation focuses on a small footprint and low memory usage. No dynamic memory allocation is used to make the code predictable. Unit tests and static code analysis are used to improve the reliability of the code.

Natively, protocol buffers are not suitable for microcontrollers. The C++ code protoc generates is written for server and desktop processors. Embedded Proto is a plugin for protoc generating C++ code suitable for microcontrollers. In this way, Embedded Proto provides an easy-to-use interface to exchange data between embedded devices and the outside world. Specify the data format between your IoT device and other devices, servers, apps, or desktop applications in a standardized way!

Requirements

To generate the code for your messages:

  • Python 3.11 or newer, and pip.

The protobuf compiler comes with Embedded Proto, you do not have to install protoc yourself.

To build the generated code for your target:

  • A C++ compiler supporting C++17.
  • No dynamic memory, no exceptions and no RTTI are required. The library is header only.

Optional, for the alternative ways to install described on the installation page:

  • uv, a much faster replacement for pip and venv.
  • Git, when you use Embedded Proto as a submodule in your project.

Optional, for developing Embedded Proto itself:

  • CMake 3.28 or newer, to build and run the unit tests. See CONTRIBUTING.md.

Getting started

New to Embedded Proto? Follow the quick start. In about ten minutes you install Embedded Proto, define a message, generate the code for it and serialize the message in a small program on your PC. The same code moves to your microcontroller without changes.

In short, Embedded Proto is installed with pip:

pip install EmbeddedProto

Generate the C++ code for the messages in your *.proto file:

embeddedproto -I proto --eams_out=generated proto/reading.proto

Build your project with C++17, the generated folder and the header only library of Embedded Proto as include paths. The command embeddedproto --cpp-src-location prints where the library is. When linking with a C compiler, do not forget to pass -lstdc++ to the linker. This prevents errors like undefined reference to.

Other ways to install, with uv or as a git submodule, are described on the installation page.

Documentation

The manual lives on EmbeddedProto.com:

Our website also hosts an array of examples detailing possible use cases and tutorials on toolchain integrations.

What is new

Version 4.0.0 is the largest release of Embedded Proto so far. It changes how the library is installed, adds maps, Any and streaming, and supports the new protobuf editions. See what is new in 4.0 for what you gain, and migrating from 3.x for what to change in your project.

To stay up to date, signup for our User Update.

License

Embedded Proto is dual licensed. See LICENSE for the full notice.

Open source

Embedded Proto is free of charge under the GNU General Public License v3.0. The combined work you distribute must comply with the GPLv3; your own source code may use the GPLv3 or any license compatible with it. The code Embedded Proto generates is produced from templates in this repository and embeds code from them, so the template code in it is covered by the same license. The GPL version comes without support.

Commercial

Building a closed source product? Then you need a commercial license. It removes the obligation to publish your source code, and depending on the tier includes:

  • An unlimited number of MCUs
  • Professional support
  • A code quality report

See embeddedproto.com/pricing. Setting your license token is described on the installation page.

Evaluation

Internal evaluation and testing of Embedded Proto before purchase are free and do not require either license, as long as no product containing Embedded Proto or its generated code is distributed.

Third-party software

For compliance reviews, this is every piece of software Embedded Proto relies on, split by whether it ends up in your product or is only used while generating code.

In your product

Only code from Embedded Proto itself ends up in your firmware. It contains no third-party code. It does use the C++ standard library, which comes from your own toolchain and is licensed by its vendor, not by Embedded Proto.

Component Copyright License
Embedded Proto header-only library Embedded AMS B.V. GPL-3.0-only OR commercial
Generated message code Embedded AMS B.V. for the template code, you for your .proto definitions GPL-3.0-only OR commercial
C++ standard library The vendor of your toolchain Whatever your toolchain uses, for example GCC's libstdc++ is GPL-3.0 with the runtime library exception

During code generation

These run on your development machine and are not linked into your product. Python comes from your own installation, the packages are installed from PyPI. None of them are redistributed by Embedded Proto.

Component Use License
Python 3.11 or newer Runs the generator PSF License
protobuf Parses .proto files, descriptor.proto is imported by the options file BSD-3-Clause
grpcio-tools Bundles the protoc compiler Apache-2.0, bundled protoc is BSD-3-Clause
Jinja2 Renders the code templates BSD-3-Clause
MarkupSafe Dependency of Jinja2 BSD-3-Clause
toposort Orders message definitions Apache-2.0

Development only

GoogleTest (BSD-3-Clause) is a git submodule used for the unit tests of the library. It is not part of the generator package or of your product.

Development

If you consider helping with the development of Embedded Proto please read CONTRIBUTING.md and the developer section of the installation page. They detail how you can build the unit tests included in this repo.

Metadata

Release files for EmbeddedProto 4.0.0b1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for EmbeddedProto 4.0.0b1
File Size Uploaded
embeddedproto-4.0.0b1.tar.gz 134.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for EmbeddedProto 4.0.0b1
File Interpreter ABI Platform
embeddedproto-4.0.0b1-py3-none-any.whl Python 3 none any Details

Total release size: 315.3 kB

Release files / embeddedproto-4.0.0b1.tar.gz

Download URL embeddedproto-4.0.0b1.tar.gz
Size 134.3 kB
Tags Source
SHA-256 checksum
How to use checksums
eb00f593dab54eecd5aa2da575cb2a000376d9598f35d896dc3fd8216a25cdd0
BLAKE2b-256 checksum
How to use checksums
14963a087ad81c77979e17d0170cde8b14a71195ab358e0a9a4582d50b32ef59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / embeddedproto-4.0.0b1-py3-none-any.whl

Download URL embeddedproto-4.0.0b1-py3-none-any.whl
Size 181.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a9b238a50dbcbcd6da8699a006d87998ec5707738907778df3101fb1dd42fa40
BLAKE2b-256 checksum
How to use checksums
c097b20572e20fdd2995558a8836f2eaf94a3a1af763e615f14a11f64542b4e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page