Skip to main content

LotusRPC 🌼

Build & Test Code style: clang-format Static analysis: clang-tidy PyPI Python License: MIT Code Smells Coverage Security Rating Code style: Ruff linting: pylint Checked with mypy

Quality gate

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 — lrpcg produces all C++ server code in one command
  • CLI client — lrpcc lets 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:

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)

Source distribution for lotusrpc 1.0.0
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)

Table of built distributions (wheels) for lotusrpc 1.0.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

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