puda-edge
Puda Edge
Help write Python edge services: thin hardware wrappers that connect to NATS and advertise machine commands.
Build an edge
Use an existing machine SDK/API when suitable. For instruments operated through desktop software, build a GUI edge: the AI uses a manual or screenshots with task instructions to write machine-specific Python workflows, which PUDA exposes over NATS.
For GUI work, read references/gui-edge.md. Clone PUDAP/edge-python-gui-template from GitHub as the scaffold and use PUDAP/opentrons-gui-edge as the worked example. The guide covers translating task instructions into deterministic GUI commands and validating them. Use a vendor PDF manual when available. Without a manual, screenshots showing where to click, what to type, and the expected result are valid context for an atomic command. Supplement either source with live captures when available.
For SDK/API and GUI edges:
- Inspect the selected template's dependencies and SDK contract before scaffolding. The GUI examples use
from puda import EdgeNatsClient, EdgeRunner, command. - Keep machine commands typed, JSON-compatible, and documented with parameters, units, defaults, prerequisites, returned evidence, and failures. Expose intended workflows with
@command. For GUI edges,capture_screenshotis the only low-level remote command; use inherited GUI helpers internally to implement high-level workflows. - Configure machine identity, NATS servers, and connection/window details through settings and
.env.example. Preserve the template's lifecycle and cleanup. Do not copy credentials or a working.envfrom another machine. - Verify commands offline before desktop or hardware validation. Report separately what was implemented, tested with fixtures, observed on the desktop, and exercised on hardware.
Follow Integrating a New Machine for repo layout, main.py config, telemetry, and multi-machine PCs. For SDK/API edges, scaffold from edge-python-template; for GUI edges, use the GUI template above. Name the repo puda-<machine_id>-edge.