Skip to content

Proposal: URML (substrate-neutral robot intent) capability-manifest mapping for CircuitPython — Python-on-MCU substrate #11035

@idoco2003

Description

@idoco2003

Hi @adafruit team,

Proposing a URML v0.1 capability-manifest mapping for CircuitPython over adafruit/CircuitPython. URML (Universal Robot Language, Apache-2.0) is an open spec for substrate-neutral robot intent.

CircuitPython runs on 400+ board variants spanning RP2040, SAMD21/51, nRF52, STM32, and ESP32. URML's microbit_edu manifest pattern (RFC-0018) implicitly covers CircuitPython-class boards, but the Python-on-MCU substrate is its own layer URML's manifest should declare explicitly. The natural URML integration shape is host-side: a Mu / Thonny / Code-with-Mu IDE-side bridge that emits validated URML primitives, with CircuitPython on the device dispatching them.

This is proposal-only, posted as part of URML's Move #13 outreach (15 engageable RFCs in this wave).

Full RFC: https://github.com/URML-MARS/URML/blob/main/docs/rfcs/0174-adafruit-circuitpython-outreach.md

Questions worth adafruit/CircuitPython maintainer input on:

  1. Python-on-MCU substrate manifest fields. Spec RFC queued (shared with MicroPython-on-MCU declarations). Manifest field expectations from the CircuitPython perspective?
  2. 400+ board-variant identifier scheme. Should URML's manifest use CircuitPython's existing board-id convention, or a separate URML identifier mapped to it?
  3. Drag-drop deploy-model declaration. Useful manifest field for educational deployments?
  4. Library-ecosystem declaration. Should URML's manifest declare which Adafruit_CircuitPython_* libraries are loaded?
  5. Adapter home. URML repo (reference/edu-runtime/CircuitPythonAdapter), Adafruit-maintained adafruit/circuitpython-urml-bridge, or both?
  6. Conformance listing. Would Adafruit consider a README link to URML's compatible-runtimes registry once a working adapter ships?
  7. Anything else.

Ido Yahalomi (URML maintainer, urml.dev, greenvh@gmail.com)


AI-assisted prose, maintainer-reviewed before posting (see VIBE.md). Human-only correspondence available on request.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions