Say what you want done: a healthy greenhouse, a line held in tolerance, a house ready
before anyone is up. Opichy discovers what your hardware can do and does the work
while you are not there. It runs on a Raspberry Pi, on your network, with no vendor
lock‑in and no cloud dependency.
Raspberry Pi 5Local‑firstOpen protocolsRust + WebAssembly
Outcome: keep the greenhouse healthy
What gets done
Real work, while you are somewhere else.
Each example above is a job, not a demo. Here is what happened, when, and what you no
longer had to do.
Greenhouse
Keep the greenhouse healthy through a heatwave.
Fan to 40% as the roof hit 84 °F.
Water valve open six minutes; soil moisture back to 38%.
Grow light held at 100% to finish the day's light budget.
Needs a Raspberry Pi, a temperature and soil sensor, the fan and valve you
have.
You did not drive over at lunch to open a vent.
Production line
Hold every axis in tolerance across the shift.
Spindle load drifting at 71%; feed trimmed before it
chattered.
Safety gate opened: axes held, spindle stopped, resumed on
close.
Y encoder 12 µm off target; offset corrected before the next
part.
Needs a Raspberry Pi, the drives’ Modbus or OPC UA port, an encoder input.
You did not scrap a batch or babysit the HMI.
Room cleaning
Clean the room while it is empty.
No occupancy for twenty minutes; drive left the dock.
Dust fell from 14 to 6 µg/m³; suction eased to 65.
Bin at 92%; back to the dock, mop pump off.
Needs a Raspberry Pi, a robot vacuum that speaks locally, an occupancy
sensor.
You did not trip over it or remember to start it.
Home
Have the house ready before anyone is up.
Thermostat to 70 °F, twenty minutes before the alarm.
Blinds raised at sunrise; porch light off.
Car at 80%; charging stopped, ready for the drive.
Needs a Raspberry Pi, a Matter or Z‑Wave thermostat, the blinds and charger
you have.
You did not touch a switch or a thermostat.
Kitchen
Dinner ready at 6:30, with the appliances you already own.
Sous‑vide bath to 133 °F so the steak is ready at 6:25.
Oven to 350 °F; the probe says the tray is done at 6:27.
Range hood to 70% the moment the pan smoked.
Needs a Raspberry Pi, a Bluetooth meat probe, a smart plug on the sous‑vide
bath.
You did not watch a timer or a thermometer.
Indoor air
Breathe well, on a smoke day.
Outdoor PM2.5 at 62 from wildfire smoke; fresh‑air damper
closed, purifier to high.
Bedroom CO₂ hit 1,100 ppm; ERV boosted with the filter in
line.
CO₂ back to 750 ppm; boost off, purifier eased to 40%.
Needs a Raspberry Pi, an AirGradient or Awair sensor, the thermostat you
have.
You did not check an app or open a window into the smoke.
Lawn
Water only what dried out.
Zone 2 at 22% soil moisture; ran 14 minutes. Zones 1 and 3
skipped.
Flow meter showed 6.1 gal/min, in range, so no valve stuck
open.
0.4 in of rain in the forecast; rain delay set for two days.
Needs a Raspberry Pi, the valves already in the ground, three soil probes.
You did not water the sidewalk or the rain.
How
Say the outcome. Opichy composes the rest.
Every device is described by what it can sense and do. State what you want, and the
intelligence layer works out which capabilities to use, on the controller, on your
network, with the cloud optional.
Opichy talks to devices on your own network, with no account in the loop. Twenty‑nine
products across seven domains so far; here are the ones you will recognise.
A Raspberry Pi 5, an SD card and the Opichy image: about $80 if you own none of it.
The first image covers the first two steps, identity and updates. The three after it
are what the next release is for, and we say so rather than imply otherwise.
Flash
Write the verified image to an SD card or NVMe with Raspberry Pi Imager. On first
boot the controller is its own Wi‑Fi for a minute: join it from your phone and a
page asks which network it should live on.
Boot
First boot generates the controller's identity. It is never baked into the image.
Name next release
Give it a name on its local web UI. It is reachable on your network immediately.
Connect next release
Plug in or pair devices. Edge discovers their capabilities over whatever transport
they speak.
Automate next release
State the outcome. The intelligence layer composes it from what is present.
Automation and safety logic run on the box and keep running offline. Remote access
means joining the controller's private Tailscale network, not opening a port.
Outbound only
The cloud waits to be called
The controller reports a heartbeat and asks for new releases. opichy.com never
connects inward, and every credential in the chain does exactly one job.
Verifiable
Prove the image before you flash it
Images are built by CI from pinned, public tooling and checksummed. Verify a
download in your browser with the same Rust code the controller runs.
Hardware defines what is physically possible.
Opichy defines how those capabilities compose.
AI defines how to reach the outcome you asked for.
One model over every transportGPIOI²CModbusOPC UAMQTTMatterBluetooth LEONVIFWi‑Fi
How it works
Four layers. The controller works without the top two.
Control, logic and safety stay on the box and keep running with the internet
unplugged. The cloud adds identity, updates, telemetry and fleet coordination around
it, never underneath it.
Decides what should happen. AI reasons over the capabilities that are
present and composes the automation, so adding a device expands what is possible
without rewriting anything.
Cloudflare
Coordinates. Workers, D1, R2 and Durable Objects hold identity, device
state, releases and remote access at the edge. Optional.
Opichy Edge
Runs the house or the plant. Discovers devices, abstracts hardware into
capabilities, executes automation locally, and connects out securely when it wants
to.
Local‑first · no internet required
Physical
Anything with a wire or a radio. Raspberry Pi and embedded controllers,
Matter devices, sensors, actuators, motors, cameras, industrial I/O.
The capability model
A model honest enough to automate against.
Every device is described by what it can sense and do, in a vocabulary no manufacturer
owns. The table below is not a diagram: it is rendered in your browser from the same
Rust code the controller runs.
A smart plug reports its own relay. A Bluetooth bulb never does. Both provide
Switch, but every value carries a quality, so an automation can tell
what it knows from what it last asked for.
Declared resolution
Relays are not dimmers.
Each device declares the levels it can reach. Ask a relay for 40% and it answers 0,
the level it will actually be at, the same discipline a servo drive uses when it
reports actual position.
Age
Old data degrades honestly.
A temperature from four minutes ago is a different fact from one taken four seconds
ago. Each capability declares how long a reading stays worth acting on; older ones
become Uncertain.
Loading the model from WebAssembly…
Try it. A relay asked for% reaches…·a dimmer reaches…
Live from the prototype
A real controller, right now.
This is the Raspberry Pi 5 that Opichy is being built on, reporting through a
Cloudflare Tunnel that exposes only its read‑only side. Host health, the capabilities
it advertises, and the sensor nodes it hears from, each reading carrying its age and
quality. Nothing here is a mock‑up. It runs the proof‑of‑concept runtime; packaging
that runtime into the image is the next release.
Contacting the prototype…
Built in the open
Reproducible from source to SD card.
RustOne core, everywhere
The capability model and download verification are Rust, compiled to WebAssembly for
the browser and native for the controller. Same code, same answers.
R2 + D1Releases at the edge
Images and packages are stored on Cloudflare R2 with resumable downloads and no
egress fees. The catalogue lives in D1; each controller's state in a Durable Object.
pi‑genImages built by CI
Every release is built by GitHub Actions from the official Raspberry Pi tooling,
checksummed, and published to the Downloads page automatically.
Start with one controller.
The first image is being hardened on a real controller now. Leave an address and we
will email once, when it ships, with the download and its checksum.