The complete IoT
stack you run yourself
CLI, device runtime, dashboard, and API — one open-source server, one Docker image, running on your own hardware.
Full workflow from the terminal
One tool for the entire lifecycle: scaffold, develop, test, deploy, and flash.
devicesdk initScaffold a new project with TypeScript configdevicesdk devLocal simulator with hot reloaddevicesdk buildBundle your device script with esbuilddevicesdk deployPush to your own server in one commanddevicesdk flashWrite firmware to a connected Pico$ devicesdk login --host http://192.168.1.50:8080
✓ Authenticated with your server
$ devicesdk init sensor-network
✓ Created devicesdk.ts
✓ Created src/devices/device.ts
$ devicesdk deploy
✓ Built device.ts (42ms)
✓ Deployed to 3 devices
$ devicesdk flash
✓ Found RPI-RP2 at /Volumes/RPI-RP2
✓ Firmware flashed successfullyimport { DeviceEntrypoint } from "@devicesdk/core";
export class Thermostat extends DeviceEntrypoint {
// Called when device connects via WebSocket
async onDeviceConnect() {
// Monitor button on GPIO 14
await this.env.DEVICE.configureGpioInputMonitoring(14, true);
}
// Called for every device message
async onMessage(message) {
if (message.type === "gpio_state_changed") {
const pin = message.payload.pin;
await this.env.DEVICE.kv.put("lastPin", pin);
if (message.payload.state === "low") {
await this.env.DEVICE.setGpioState(15, "high");
}
}
}
}DeviceEntrypoint API
Extend DeviceEntrypoint and implement two lifecycle hooks. Your code runs in-process on your own server — the device connects to it over WebSocket on your LAN.
onDeviceConnect()Configure GPIO, I2C, ADC monitoring when the device first connects
onMessage(message)Handle sensor readings, button presses, and all device events
this.env.DEVICE.kvType-safe key-value storage that persists across reboots
this.env.DEVICE.displayFluent API for SSD1306 OLED drawing commands
this.env.DEVICESCall methods on other devices in your project with full type safety
Manage your fleet
Web dashboard served by your own server at http://<server>:8080
Project management
Organize devices into projects with separate settings
Device inventory
See all devices, connection status, and last seen time
Script deployment
Upload and deploy scripts from the browser or API
Version history
Full deployment log with one-click rollback
API tokens
Create and revoke tokens for CLI and programmatic access
Local accounts
Email/password sign-in; the first account becomes admin
Supported devices
| Device | Chip | WiFi | Status |
|---|---|---|---|
| Raspberry Pi Pico W | RP2040 | 2.4 GHz | Supported |
| Raspberry Pi Pico 2 W | RP2350 | 2.4 GHz | Supported |
| ESP32 | ESP32 | 2.4 GHz | Supported |
Ready to build?
Bring up the server and deploy your first script in minutes.