A Janus Device Is a Pure Rust Alternative to the Cloud
A Janus device is a pure Rust alternative to the cloud for an ESP32 at home: identity you hold, a local mesh, and no vendor server in the path.

Is a Janus device a pure Rust alternative to the cloud?
For the path a camera or microphone takes, yes. A Janus device is a pure Rust alternative to the cloud: it holds its own identity, meshes on the LAN with iroh, and does not upload the stream to a vendor. Our crates have no C. ESP-IDF and the radio blob underneath are still Espressif's. Remote access off the LAN is written and not yet measured.
Related reading
Builder field note
Smart Home Without the Cloud: Why ESP Devices Should Stay HomeAPIs, composition, and home deployment for Smart Home Without the Cloud: Why ESP Devices Should Stay Home live on the field note.
A Janus device is a pure Rust alternative to the cloud for a camera, a microphone, or a presence sensor that should answer to the household. The market standard is a vendor server: the device uploads, the app downloads, and a policy you did not write decides who else can see the hallway. This page is the comparison. The builder field note on a smart home without the cloud is the argument in full. It belongs to In Your Home and the Own vision.
What the cloud path actually buys
The usual path runs every reading through someone else's computer. Espressif ships good tools for it: RainMaker, device SDKs for the big providers, and MQTT to a broker. The Janus plan lists them under one word: replace. On a Janus device the mesh is the cloud, an iroh endpoint dialed by public key. That mesh is rusty_esp_iroh, the pure Rust alternative to MQTT.
What you stop sending
A picture of the hallway, a recording of the kitchen, the fact that someone walked through at 2 a.m. A pure Rust alternative to the cloud is a decision about those bytes. They stay on the LAN. The browser page for a camera is rusty_esp_video. Presence without a picture is rusty_esp_sense.
What "pure Rust" does not mean
There is no C in our crates. There is C underneath. Track A firmware runs on Espressif's ESP-IDF, and every Wi-Fi radio runs Espressif's binary blob. A pure Rust alternative to the cloud that claimed a C-free radio would be false while the radio is up. The esp-rs book is the toolchain that builds Track A.
How ownership works when there is no account
The device mints a P-256 key and a did:mata, and an owner adopts it. That is rusty_esp_mid, the pure Rust alternative to a vendor account. No vendor account claims the device, and no cloud certificate has to be renewed.
The price of the trade
Janus does not target Matter, RainMaker, or Home Assistant core. You will not get a voice-assistant skill or a vendor app. Remote access is a real question: the PSRAM tier can use a relay so a short ticket works from anywhere, but that path is written and not yet measured on a board. The no-PSRAM tier is LAN-direct. Boards with 4 MB of flash, such as the ESP32-CAM, never run iroh and reach the mesh through a bridge. Choosing an ESP32 board is where those limits come from.
Two defects, written down
An adopted device can still advertise itself as free to claim, because that record is composed once at boot. The home computer's media controller is not yet wired to receive a Janus stream. A pure Rust alternative to the cloud does not get to bury either sentence.
Where the cloud still wins
Keep the vendor app when you want their remote access, their voice assistant, and their warranty. A local device will not grow those by being patient.
Honest limits
- Off-LAN reach is not a measured row.
- Current dev firmware stores the identity key in a plaintext partition. The field note on identity says so.
- The first afternoon is still a toolchain: Rust,
espup, and espino. Deploy an ESP32 at home in an afternoon is that sequence.
Try the unplugged test before you argue about architecture. Turn off the WAN, leave the LAN up, and see whether the page still opens and the owner is still the owner. A pure Rust alternative to the cloud has to pass that afternoon. If it only works when a vendor DNS name resolves, it is the cloud with a local sticker. The measured pieces today are the ones the other pages time: a flash, a microphone soak, a camera packet count, an adoption refusal. A pure Rust alternative to the cloud is the sum of those rows, not a third row that erases their gaps. A pure Rust alternative to the cloud still owes you a measured relay, a hardware-wrapped key, and a media controller that is actually wired. Until those exist, the claim is the LAN, and the LAN is already a lot. A pure Rust alternative to the cloud that promised the missing rows would be the vendor brochure again. The brochure is the thing this page is here to refuse, including when the missing row would make the title sound larger.
Where to start
Start with the afternoon guide, then the Learn index for how far each package is proven. The Flash vision is the tool end of the same path.
The household computer this device is for lives at MATA. The crates are Remade With Rust. When a policy note or a datasheet needs to become a retrieval corpus, the same house runs RAG Converter.
FAQ
Quick answers for builders evaluating this technology.
What cloud products does this pure Rust alternative to the cloud refuse?
Vendor apps, voice-assistant skills, and ecosystem badges such as Matter, RainMaker, and Home Assistant core. Those are listed non-goals. Reaching a device from outside the house is written for the PSRAM tier and not measured on a board.
Is the firmware free of C?
There is no C in our crates. Track A runs on ESP-IDF, which is Espressif's C, and every Wi-Fi radio runs Espressif's binary blob. Janus says so rather than claiming a C-free device while a radio is up.
Who owns the device if the company stops?
The household. The device key and the owner pin live on the device, not in an account we can shut off. That claim is only as strong as the identity crate, which still uses a plaintext partition on current dev firmware.
Does local mean anyone on the Wi-Fi can watch?
No. The camera page can sit behind the device's token, and adoption refuses a stranger. One open defect: after adoption the device can still advertise itself as free to claim, because that record is composed once at boot.
When is the cloud still the right choice?
When you want a vendor app, a voice assistant, Matter, or a company to run remote access for you. A local mesh does not include those, and pretending it does is how people get stranded.