pamoja

An SDK for IoT, robotics, and drones

pamojaRev 0.2.0MIT licensepamoja.molex.cloud

pamoja#

One memory-safe Rust core with bindings for TypeScript, Python, and C#, for the devices that watch and control the physical world: sensors, gateways, robots, and drones, built to run on cheap hardware with weak or no connectivity.

Every capability is a crate in Rust and a package in each binding, and every guide shows the same task in all four languages. The code in a guide is spliced from a test that runs in CI, so an example that stops working fails the build rather than the reader.

Start here#

Shell
cargo add pamoja                 # Rust
npm install pamoja               # TypeScript and Node
pip install pamoja               # Python
dotnet add package Pamoja        # C# and .NET

That is the whole framework. To take less than all of it, and to see what a narrow build actually costs, read Install.

If you are here with a part in hand rather than a language in mind, Hardware lists what the drivers were written against, the buses and radios the crates implement, and the boards this is built and tested on. With a board on the desk, its page wires a sensor to it, turns the bus on, and runs a first program: Raspberry Pi, ESP32, or RP2040. The Raspberry Pi and ESP32 pages go on to drive a relay from a GPIO line and run a whole node, and the gateway page seats a concentrator card on a Linux host and listens to a whole band at once. Buses and links explains the buses and links themselves, from I2C to LoRa, and names the crate that carries each one's logic.

To see it run before reading anything, Examples lists every complete program and every guide's example in the four languages, all of which run in CI on every change. Profiles is the catalog of nodes written down as data, ready to load, and Community says how to add a profile, an example, a driver, or a board of your own.

What it covers#

Reference#

Every language has a full API reference, generated from its own source and hosted here. The page on this site names each package and links it to its page there.

LanguageInstallReference
Rustcargo add pamojaRust reference, every crate with its API pages, generated by rustdoc
TypeScriptnpm install pamojaTypeScript reference, every package with its API pages, generated by typedoc
Pythonpip install pamojaPython reference, every module with its API pages, generated by pdoc
C#dotnet add package PamojaC# reference, every package with its API pages, generated by DocFX

Edit this page on GitHub