LotusRPC 🌼
RPC framework for embedded systems based on ETL. Define your interface once in YAML; LotusRPC generates all C++ server code and a Python client. No dynamic memory allocations, no exceptions, no RTTI.
graph LR
C["Client\nPC · Python"] <-->|"function call / return"| T["Transport\nserial · BT · TCP · …"]
T <-->|bytes| S["Server\nMCU · C++"]
Features
- No dynamic memory — stack-only, no heap, no exceptions, no RTTI
- Transport agnostic — any byte-oriented channel (serial, Bluetooth, TCP, …)
- YAML definitions — schema-validated, editor-friendly, easy to parse or extend
- Code generation —
lrpcgproduces all C++ server code in one command - CLI client —
lrpcclets any team member call remote functions without writing code - Streams — client-to-server and server-to-client data streams, finite or infinite
- C++11 compatible — works on any platform with a modern C++ compiler
Quick start
Install:
pip install lotusrpc
Define your interface (math.lrpc.yaml):
name: math
settings:
namespace: ex
services:
- name: calc
functions:
- name: add
params:
- { name: a, type: int32_t }
- { name: b, type: int32_t }
returns:
- { name: result, type: int32_t }
Generate C++ server code:
lrpcg cpp -d math.lrpc.yaml -o generated/
Implement the server — derive from the generated shim and implement the pure virtual function:
#include "math/math.hpp"
class CalcService : public ex::calc_shim
{
protected:
int32_t add(int32_t a, int32_t b) override
{
return a + b;
}
};
Subclass the generated server to provide a transport, register your service, and feed incoming bytes:
class MathServer : public ex::math
{
void lrpcTransmit(lrpc::span<const uint8_t> bytes) override
{
uart_write(bytes.data(), bytes.size()); // your hardware here
}
};
CalcService calc;
MathServer server;
server.registerService(calc);
// In your receive loop:
server.lrpcReceive(incoming_byte);
Call from the command line:
lrpcc calc add 3 7 # result = 10
Documentation
Full documentation is at tzijnge.github.io/LotusRpc, including:
- Getting started — complete walkthrough
- Interface definition reference — all YAML options
- C++ API reference — generated server and shim classes
- Python API — client library and definition model
- Examples — math service and STM32 example
Metadata
Release files for lotusrpc 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lotusrpc-1.0.0.tar.gz | 1.7 MB | With provenance | Details for lotusrpc-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lotusrpc-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for lotusrpc-1.0.0-py3-none-any.whl |
Total release size: 1.8 MB
Release files / lotusrpc-1.0.0.tar.gz
| Download URL | lotusrpc-1.0.0.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84ad150f752a52b7a7d3666570c9badafc6fd3213f2139d1393a75df2adc697e
|
|
BLAKE2b-256 checksum How to use checksums |
3e0545edef88e304484580af2dcb7273070517e12426aa95538e04edc8bcff52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 15, 2026.
Transparency logRelease files / lotusrpc-1.0.0-py3-none-any.whl
| Download URL | lotusrpc-1.0.0-py3-none-any.whl |
|---|---|
| Size | 76.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
39d0a1263860b7511da973254c39929b428c05a4db8be6e3b95879ed4868d1ea
|
|
BLAKE2b-256 checksum How to use checksums |
e54f3383e4bb38531d2c9d4b33a519fc1a413c1d225b63c976aafb794ee9c209
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 15, 2026.
Transparency logSecurity for lotusrpc 1.0.0
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for lotusrpc-1.0.0.tar.gz
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 Jun 15, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.