Skip to content
OpenPour

Pour‑over, by the gram.

OpenPour is an open-source automatic pour-over machine. Print the parts, wire up commodity electronics, and flash Rust firmware that pours each stage of your recipe to the gram. Every file you need is in the repo.

Early prototype. The design is still changing. Expect rough edges, and open an issue when you hit one.

  1. Bloomcentre50 g
  2. Restno water35 s
  3. Second pourspiral150 g
  4. Third pourcircle250 g
  5. Final pourspiral320 g
  6. Drawdownno water60 s
arm 40.9°   carriage 90 mm

What’s open

All of it. The CAD, the firmware, the control app and the build guides live together in one repository, so a hardware change and the code that drives it land in the same commit.

The model is parametric, the electronics are off the shelf, and nothing phones home. Fork it, resize it for your dripper, and send your changes back.

Licence: not yet declared.

openpour/
  • hardware/cad/OpenSCAD model; config.scad holds every dimension
  • firmware/ESP32 firmware in Rust, plus a host simulator
  • web/control app, embedded in the firmware at build time
  • docs/bill of materials, wiring, assembly, calibration

Firmware in Rust

A hundred times a second, the firmware turns the pour pattern from dripper-centred coordinates into an arm angle and a carriage radius. Both steppers run in velocity mode, so the nozzle follows a spiral smoothly. The pump runs feed-forward from its calibrated rate, is trimmed by the flow it measures, and is cut just early enough that coast-down lands on the gram target.

pourcore
The brewing logic: recipes, pour patterns, pump control and the stop-on-target maths. No hardware dependencies, so it runs anywhere Rust does.
ESP32 target
Drives the two steppers, the pump and the flow meter, reads the DS18B20, and serves the control app over Wi-Fi.
Simulator
Runs the real pourcore logic against simulated hardware on your PC, so you can work on the firmware without a machine.
# builds the web app and firmware, flashes the ESP32, opens the monitor
cargo run --release

Toolchain setup and simulator instructions are in firmware/. Built on the Rust toolchain for Espressif's ESP32.

How it works

  • Water. You fill an insulated reservoir from your own kettle. A peristaltic pump moves it through a flow meter to the nozzle; 1 mL is 1 g. The machine never heats water.
  • Motion. A two-axis polar arm, with a direct-drive NEMA17 for angle and a belt-driven one for radius, traces centre, circle and spiral patterns over the dripper.
  • Control. The ESP32 serves the app itself. Open a browser on any phone or laptop, on the machine’s own Wi-Fi or yours. Recipes are edited there and stored on the machine.
Exploded concept drawing of the arm, pump and flow meter.
Concept render. This shows where the design is heading. The current prototype doesn’t look like this yet.

Build one

  1. Print

    Set your cup and dripper heights in config.scad, run make to export STLs, and print in PETG or ASA.

  2. Buy

    Parts are estimated at US$170–210, mostly from the 3D-printer aisle. The BOM is in docs/.

  3. Wire

    Two NEMA17 steppers, a peristaltic pump, a flow meter and a DS18B20 probe, per the wiring guide.

  4. Flash

    cargo run --release builds the app and firmware, flashes the ESP32 and opens the serial monitor.

  5. Calibrate

    Join the OpenPour Wi-Fi network, open the app, and calibrate the flow meter against a kitchen scale.

Concept render of a finished OpenPour machine pouring into a V60 dripper.
Concept render. This shows where the design is heading. The current prototype doesn’t look like this yet.

Contribute

OpenPour gets better with every machine built. Report what broke, share your prints and tweaks, or pick up an issue. Pull requests to the CAD, the firmware and the docs are all welcome.