Plugin: CubicJ Brewing — log your coffee brews with a live Bluetooth scale in Obsidian

Hi everyone!

I built an Obsidian plugin that connects to an Acaia Pearl S coffee scale over Bluetooth and turns your vault into a brewing assistant. If you’re into specialty coffee and already live in Obsidian, this might be for you.

Why I built this: I tried several brewing apps and logging tools before — none of them stuck. Too many required fields, workflows that didn’t match mine, and the friction of switching between apps mid-brew. Since I was already keeping bean notes in Obsidian, I figured — why not record the brewing data directly here, automatically, while I pour?

Brewing

Connecting to an Acaia Pearl S and brewing in real time — weight curve drawn as you pour

What it does

  • Real-time scale connection — pairs with Acaia Pearl S via BLE, no companion app needed
  • Dot-matrix display — live weight and timer in the sidebar, styled after the scale’s own screen
  • Guided brew flow — 6-step accordion (method → bean → variables → brew → profile → save)
  • Live profile chart — weight-over-time curve drawn in real time as you pour
  • Auto-fill from last brew — select a bean and your previous grind size, dose, and equipment are pre-loaded
  • Bean inventory — track roast days, remaining weight, status per bean via code blocks
  • Brew history — per-bean records with profile charts, extraction parameters, and equipment used
  • Equipment registry — grinders, drippers, filters, baskets, accessories
  • Vault-native storage — all data as plain JSON files in your vault, Obsidian Sync compatible
  • Global hotkeys — tare, connect, start/stop brew even when Obsidian is not focused
  • Multi-language — English and Korean


Bean inventory — roast days auto-calculated, remaining weight, active/finished status


Per-bean brew history with date, method, grind size, and memo


Brew detail modal — extraction parameters and weight-over-time profile chart

Under the hood

The BLE communication is built on a reverse-engineered binary protocol (the Acaia SDK is closed-source). The plugin uses a native Node.js addon (@stoprocent/noble) running directly in Obsidian’s Electron process — no external server, no bridge app. Weight data streams at ~10Hz with spike filtering and Savitzky-Golay smoothing for a clean curve.

This is also why it can’t be listed in the community plugin directory: the native .node binary doesn’t fit Obsidian’s 3-file distribution format (main.js + manifest.json + styles.css). Installation is via GitHub release zip.

Current limitations (being transparent)

  • Windows only — other platforms depend on noble’s support, not tested yet
  • Acaia Pearl S only — other Acaia models likely work (same protocol family) but unverified
  • Desktop only — BLE native addon requires Electron, no mobile support
  • Manual install — GitHub zip, not community plugins

Installation

  1. Download cubicj-brewing.zip from the latest release
  2. Extract into <your-vault>/.obsidian/plugins/cubicj-brewing/
  3. Restart Obsidian → Settings → Community plugins → Enable “CubicJ Brewing”

The zip includes a noble/ folder with the native BLE addon — don’t omit it.

What’s next

  • Support for other Bluetooth scales
  • Espresso workflow improvements
  • More chart analytics (flow rate, extraction yield)

I’d love any feedback — especially from Acaia owners willing to test. Issues and ideas welcome on GitHub.