rozek/nova-control
control a Creoqode Nova DIY AI Robot from a browser, Node.js, the command line, or an AI assistant — over USB serial
Control a Creoqode Nova DIY AI Robot from a browser, Node.js, the command line, or an AI assistant — over USB serial.
---
This monorepo contains four npm packages and one Arduino sketch:
| package | target | what it does | | --- | --- | --- | | nova-control-browser | browser | Web Serial API — Chrome / Edge 89+ | | nova-control-node | Node.js | serialport package — any OS | | nova-control-command | CLI | one-shot commands, REPL, script files | | nova-control-mcp-server | AI assistant | MCP server for Claude / other LLM clients |
The sketch Nova_SerialController.ino must be uploaded to the robot's Arduino (Creoqode Mini Mega / Arduino Mega-compatible) before using any of the packages.
---
Nova_SerialController.ino — upload this once to the robot.
---
ESM module for controlling Nova from a browser via the Web Serial API (Chrome / Edge 89+).
import { openNova } from 'nova-control-browser'
// must be called from a user gesture (e.g. a button click)
button.addEventListener('click', async () => {
const Nova = await openNova() // shows browser port picker
await Nova.home()
await Nova.rotateBodyTo(120)
console.log(Nova.State) // { s1:90, s2:90, s3:110, s4:120, s5:95 }
Nova.destroy()
})Pass an existing SerialPort object (extends EventTarget) to skip the port picker:
const Nova = await openNova(existingPort)Nova.Loading reviews...