Skip to content

Repository files navigation

Microflow logo

Microflow

Make hardware interactive by drawing a flow. No code needed.

Wire buttons, sensors, LEDs and motors together on a visual canvas, and watch your Arduino respond right away. Microflow runs in your browser and as a desktop app.

Open in browser · Download · Docs · Figma plugin

Latest release License: GPL-3.0 Rust TypeScript

Microflow - Microcontrollers made simple. | Product Hunt

What you can do

  • Build with blocks. About 40 nodes, grouped into Sense, Generate, Shape, Decide and Express. Use them for buttons, potentiometers, motion and distance sensors, LEDs, addressable LED strips, LED matrices, servos, steppers, relays, piezo tones, I²C devices and NFC readers.
  • Edit while it runs. Changes go to the board immediately. You do not compile, upload or restart.
  • Use it anywhere. Open microflow.tech in Chrome or Edge (it uses Web Serial), or install the desktop app for macOS, Windows or Linux. Microflow puts the firmware on your board for you.
  • Take it off the computer. Export a flow as a standalone Arduino sketch for an Uno, Nano or ESP32.
  • Connect your designs. Link Figma or Penpot prototypes to real hardware through MQTT. A real button can change a screen, and a tap in a prototype can turn on a real LED.
  • Go beyond the board. Nodes for MQTT, MIDI, LLMs, keyboard hotkeys and custom JavaScript functions.
  • Ask AI. Describe what you want, and Ask AI adds and wires the nodes for you. Use any OpenAI-compatible provider (OpenAI, OpenRouter, Ollama, LM Studio). In the desktop app, you can also use Claude Code.
  • Build together. Edit a flow with other people in real time, see their cursors, and share by invitation. You can also publish flows to the community and fork flows that other people made.

Quick start

  1. Open microflow.tech or download the desktop app.
  2. Connect an Arduino (Uno, Nano, Mega, Leonardo or Micro) with a USB cable. Microflow detects the board and flashes StandardFirmata onto it.
  3. Put a Button node and an LED node on the canvas and connect them. Press the button, and the LED turns on.

Next, follow the first-flow tutorial or start from one of the built-in templates.

The Microflow family

What it is
Microflow Studio The flow editor, as a web app and a desktop app (Tauri). Start here.
Hardware Bridge for Figma Links Figma variables to your flows through MQTT. Available in the Figma Community.
Microflow for Penpot The same bridge for Penpot, the open-source design tool. Experimental.
Docs Tutorials, how-to guides, a reference for each node and troubleshooting, at docs.microflow.tech.

How it works

The flow runtime is written once, in Rust, and it does no I/O itself (it is "sans-IO"). The desktop app runs it natively. The browser runs the same code compiled to WebAssembly. Each host only does the I/O (serial port, timers, network), so a flow behaves the same on both platforms.

flowchart LR
    canvas["Canvas<br/>(React Flow + Yjs)"] -->|flow updates| core
    subgraph core["microflow-core (Rust, sans-IO)"]
        direction TB
        nodes[Nodes] --> router[FlowRouter] --> effects[Effects]
    end
    core --> desktop["Desktop host<br/>Tauri · native serial"]
    core --> browser["Browser host<br/>WebAssembly · Web Serial"]
    desktop & browser -->|Firmata| board[(Arduino)]
    core -.->|codegen| sketch["Standalone<br/>.ino sketch"]
Loading

To learn more, read ARCHITECTURE.md (a five-minute map), CONTEXT.md (the domain language) and docs/adr/ (the reason behind each design decision).

Built with Rust · WebAssembly · Tauri 2 · React · React Flow · TanStack Router/Query · Tailwind CSS v4 · Yjs · tRPC · Hono · Better Auth · Drizzle (PostgreSQL) · MQTT · Bun · Turborepo.

Development

Prerequisites

Setup

git clone https://github.com/xiduzo/microflow.git
cd microflow
bun install

bun db:start     # start PostgreSQL in Docker
bun db:push      # apply the schema

bun dev          # run all apps

To run one app only, use bun dev:web (Studio in the browser), bun dev:native (the desktop shell) or bun dev:server (the API and collaboration server).

To work on the Figma plugin, run bun dev in apps/figma-plugin. Then, in Figma, go to Plugins → Development → Import plugin from manifest and select apps/figma-plugin/manifest.json.

Repository layout

apps/
├── web/            Studio: React UI (src/) + Tauri desktop shell (src-tauri/)
├── server/         Hono + tRPC API and the Yjs collaboration server
├── figma-plugin/   Microflow Hardware Bridge for Figma
├── penpot-plugin/  Microflow for Penpot
└── fumadocs/       Documentation site (Next.js + Fumadocs)
crates/
├── microflow-core/          The flow runtime and Arduino code generation
├── microflow-runtime-wasm/  The runtime compiled to WebAssembly
├── microflow-firmata-wasm/  Firmata for the browser
└── microflow-codegen-wasm/  Sketch generation for the browser
packages/
└── api · auth · collab · db · env · mqtt · config
All scripts
Script Description
bun dev Start all apps in dev mode
bun dev:web Start Studio in the browser
bun dev:native Start the Tauri desktop shell
bun dev:server Start the API and collaboration server
bun build Build all apps
bun check-types Type-check the whole monorepo
bun check Lint and format with Oxlint and Oxfmt
bun bench Run the benchmarks (docs/benchmarks.md)
bun db:start / db:stop Start or stop PostgreSQL in Docker
bun db:push Push schema changes
bun db:generate / db:migrate Generate or run migrations
bun db:studio Open Drizzle Studio

Tests: bun test in apps/web for TypeScript, and cargo test for Rust.

Contributing

Contributions are welcome. You can report a bug, improve the docs or add a new node.

For security issues, see SECURITY.md.

Support

Microflow is free and open source. If it helps you, you can support its development through GitHub Sponsors or Polar.

License

GPL-3.0

About

Make hardware interactive by drawing a flow. No code needed. Wire buttons, sensors, LEDs and motors on a visual canvas and run them live on an Arduino, in your browser or on desktop. Export standalone sketches, connect Figma and Penpot prototypes, and build flows together in real time.

Topics

Resources

Security policy

Stars

8 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages