Control any microcontroller from any language. One protocol, every transport.
Fixed 8-byte header with CRC8. No string parsing on a 16MHz chip.
Device declares its capabilities on connect. Host never hardcodes pin maps.
Serial, BLE, MQTT, WebSocket, TCP. Same packet format. Swap the wire, keep the code.
Servo, NeoPixel, DHT, OLED, Stepper. Firmware opts in. Host discovers automatically.
Same protocol, any language. Pick your SDK.
import { ConduytDevice } from 'conduyt-js'
import { SerialTransport } from 'conduyt-js/transports/serial'
const device = await ConduytDevice.connect(
new SerialTransport({ path: '/dev/ttyUSB0' })
)
await device.pin(13).mode('output')
await device.pin(13).write(1)
const value = await device.pin(0).read('analog')
console.log('sensor:', value)Fixed overhead. CRC8 integrity. COBS framing for serial and BLE. Message-oriented transports (MQTT, WebSocket) skip framing entirely.
No JSON. No text parsing on the MCU. A complete PIN_WRITE command is 10 bytes.
One firmware library. Five host SDKs. Same wire format everywhere.