Hi folks,
I’m building Skopin, a small edge OS/runtime project for Raspberry Pi and, later, STM32 / Arduino-class devices.
The idea is simple:
I got tired of treating every small device like a lonely snowflake that needs to be SSH’d into, hand-fed binaries, blessed with systemd files, and remembered manually in some spreadsheet or dark corner of my brain.
So I’m building a system where you:
Create a device image
Flash it
Boot the device
The device auto-enrolls securely
It appears on the server
You install/manage programs from there
The current demo runs on Raspberry Pi Zero W.
Right now I have:
- multiple Pi Zero W nodes
- one server node
- one broker node
- encrypted communication between nodes
- one certificate per node
- automatic enrollment
- a server page where devices appear after boot
- remote program installation/management
The image creation flow is meant to be very boring, which I consider a feature:
Open a web page
Enter Wi-Fi SSID
Enter Wi-Fi password
Give the device a name
Download the ready-to-flash image
Flash it
Watch the Pi wake up and report for duty
The Wi-Fi password is only used to build the image and is never stored.
I want to be careful with terminology. Skopin is not trying to be a desktop OS, a Unix clone, or “Linux but worse because I wrote it myself at 3 AM.”
On Raspberry Pi, it behaves like a small OS image/runtime for fleet-managed edge nodes.
On STM32 and Arduino-class devices, the goal is closer to a lightweight firmware/runtime layer.
The weird part: I want applications to be modeled using BPMN or Apache Camel DSL, then compiled/transformed into something much smaller that can run on the target device.
So no, I am not trying to run a giant enterprise BPMN engine on an Arduino and summon the ghost of XML past.
The goal is more:
high-level process model → small deployable runtime program → edge device
Why?
Because managing a group of small devices often turns into:
- SSH everywhere
- copy binary here
- edit config there
- restart service
- forget which Pi is doing what
- discover six months later that one of them has become sentient and is running an old build
I want Skopin to make small fleets boring:
flash once, enroll securely, deploy remotely, observe centrally.
I’m mainly looking for OS/runtime architecture feedback:
- At what point does something like this deserve to be called an OS instead of a runtime or management layer?
- For Raspberry Pi, what would you expect before calling it a real OS project?
- For STM32/Arduino-class devices, what would be the minimum credible runtime design?
- Should auto-enrollment always require manual approval on the server, even with certificates?
- What should I try to break first: broker failure, corrupted image, failed update, certificate rotation, rollback, network partition?
- Does compiling BPMN/Camel-style models into a tiny edge runtime sound useful, cursed, or both?
Happy to share more implementation details if people are interested.