An Obsidian plugin for coffee brewing — real-time BLE scale integration, guided brew flow, and structured record keeping, all inside your vault.
Currently supports Acaia Pearl S on Windows. Other Acaia models and platforms are planned.
Live brewing session — real-time weight tracking and profile chart via Acaia Pearl S
- Real-time scale connection — Acaia Pearl S via Bluetooth, no companion app required
- Guided brew flow — 5-step accordion UI (method → bean → parameters → brew → save)
- Filter & espresso modes with method-specific parameter sets
- Live brew profile chart — weight-over-time curve recorded during brewing
- Bean inventory — roast days, remaining weight, status tracking
- Brew history — per-bean records with profile charts, equipment used, and inline memo editing
- Equipment registry — grinders, drippers, filters, baskets, accessories
- Vault-native storage — all data as plain files, Obsidian Sync compatible
- Multi-language — English and Korean, community-extensible
isDesktopOnly: false — this is intentional. The plugin provides useful read-only features on mobile.
| Desktop | Mobile | |
|---|---|---|
Bean inventory (beans block) |
Full | Full |
Brew history (brews block) |
Full | Full |
| Brew detail modal | Inline chart | "View Chart" button |
| Data Manager | Full | Full |
| BLE scale connection | Acaia Pearl S | Not available |
| Brewing sidebar | Live brew flow | Not available |
| Live profile chart | Real-time canvas | Not available |
Desktop-only features (BLE, BrewingView, live chart) are loaded conditionally via Platform.isDesktop — they are never imported on mobile.
- Windows with Bluetooth LE support
- Acaia Pearl S scale
macOS/Linux support depends on @stoprocent/noble platform compatibility. Not tested yet.
- Download
cubicj-brewing.zipfrom the latest release - Extract the zip — you should see
main.js,manifest.json,styles.css, and anoble/folder - Copy all contents into
<your-vault>/.obsidian/plugins/cubicj-brewing/ - Restart Obsidian → Settings → Community plugins → Enable "CubicJ Brewing"
The
noble/folder contains the native BLE addon — do not omit it.
Place a beans code block in any note to create a bean inventory hub:
```beans
```
Bean inventory — roast days, remaining weight, and status tracking per bean
- Active / Finished sections — beans grouped by status
- Roast days — automatically calculated from roast date, refreshed daily
- Remaining weight — click to set, add, or subtract (with optional scale auto-read)
- Status toggle — mark as finished or repurchase with new roast date
- New bean button — creates a bean note with frontmatter template and a
brewsblock
The
beansblock is not created automatically — add it manually to a note of your choice (e.g., a "Coffee Dashboard" note). One block per vault is enough.
Each bean is a regular note with type: bean frontmatter:
---
type: bean
roaster: My Roaster
status: active
roast_date: 2026-03-01
weight: 200
---The plugin discovers beans via Obsidian's metadata cache — no special folder structure required.
Each bean note includes a brews code block (auto-inserted on creation) that shows its brew history:
```brews
```
Brew detail — extraction parameters and weight-over-time profile chart
TypeScript · vitest · esbuild CommonJS bundle
| Layer | Key Components |
|---|---|
| BLE | Binary protocol codec, packet buffer (fragmentation handling), typed EventEmitter service |
| Brew State | 6-step finite state machine with step guards and discriminated union records |
| Signal | Median spike filter, Savitzky-Golay smoothing (order 2), EMA trend line |
| Storage | File-adapter abstraction, JSON CRUD with schema validation, corrupt-file backup |
| Views | Accordion manager, stepper component, Canvas 2D chart, code block processors |
npm run dev # watch mode + auto-copy to vault
npm run build # test → typecheck → production build
npm run test # vitest (single run)
npm run test:watch # vitest (watch mode)
npm run check # typecheck only
npm run lint # eslintgit clone https://github.com/cubicj/CubicJ-Brewing.git
cd CubicJ-Brewing
npm install
npm run build
npm run release # generate release zip- Matrix Sans dot-matrix font — SIL Open Font License 1.1
