Spanda’s package ecosystem supports community-contributed frameworks, drivers, adapters, and libraries for robotics, AI, simulation, and safety.
Every package can declare one or more categories:
| Category | Examples |
|---|---|
ai |
LLM providers, inference runtimes |
robotics |
Control, planning, fleet coordination |
vision |
OpenCV, YOLO, depth cameras |
navigation |
SLAM, path planning, localization |
manipulation |
Grasping, arm control |
simulation |
Gazebo, Webots backends |
ros2 |
ROS 2 bridges and adapters |
mqtt |
MQTT pub/sub |
hardware |
Board profiles, HAL |
sensors |
Lidar, camera, IMU drivers |
actuators |
Motor, servo, gripper drivers |
digital-twin |
Twin sync and replay |
safety |
Constraint checkers, monitors |
hri |
Speech, gesture, dialogue |
testing |
Test harnesses, mocks |
categories = ["sensors", "hardware"]
Community sensor and actuator drivers follow the adapter model:
[package]
name = "spanda-lidar-rplidar"
version = "0.1.0"
license = "MIT"
[adapter]
provides = ["LidarAdapter", "Topic<LidarScan>"]
requires = ["serial.port", "lidar.read"]
[capabilities]
uses = ["serial.port", "lidar.read"]
[safety]
level = "hardware_safe"
can_control_actuators = false
In Spanda source:
module spanda_lidar_rplidar;
import sensors.lidar;
import std.sensors;
The provides list declares symbols exported to consumers; requires lists runtime capabilities
the driver needs.
Framework packages wrap external systems (ROS 2, MQTT, Gazebo) and expose Spanda-native import paths:
import robotics.ros2;
import communication.mqtt;
import sim.gazebo;
Add them as dependencies:
[dependencies]
spanda-ros2 = "0.1.0"
spanda-sim-gazebo = "0.1.0"
spanda-openai is included as a reference provider package in this repository.
It exports ai.openai.complete(prompt) and routes through the Python subprocess
bridge (scripts/spanda_python_bridge.py) to call OpenAI when
OPENAI_API_KEY is present.
Without an API key, the bridge returns deterministic mock completions so tests and simulations remain reproducible.
Community packages must declare a safety level. Defaults:
experimental with requires_review = truecan_control_actuators = falsehardware_safe or certifiedApplications gate deployment by allowed safety levels and capability grants.
Declare your package license in [package] and optionally list compatible dependency licenses:
[package]
license = "Apache-2.0"
license_compat = ["Apache-2.0", "MIT"]
Validation warns when dependency licenses may conflict with application policy.
spanda init my-packagesrc/[adapter], [capabilities], and [safety] appropriatelytests/spanda publish to validate locallySee examples/packages/ for reference implementations.