// the find
artisan-roaster-scope/artisan
artisan scope: the world's most trusted roasting software
Artisan is a desktop application for recording, analysing and controlling coffee roasts, usually paired with a thermocouple logger or PID controller and a supported roaster. It suits home roasters who want proper curves and small roasters who need repeatable profiles across machines.
The device layer is the hard part and it is mostly built: Modbus RTU and TCP, Siemens S7, MQTT, WebSockets, Phidgets and Yoctopuce are in the tree, with machine-specific drivers such as hottop.py, santoker.py and aillio_r2.py on top. PID is more than a set-point passthrough, since the v4.0.0 notes describe 2DOF control with interpolated gain scheduling, bumpless transfer and filtering. CI runs pylint, mypy, ruff, pytest and codespell with pre-commit, which is a real sign the project is still being maintained after about sixteen years. Profile import covers Cropster, IKAWA, RoastLog and Stronghold files, so existing roast history does not have to be thrown away.
artisanlib is a flat package of close to a hundred modules, and device drivers like hottop.py and loring.py sit beside GUI code like canvas.py and dialogs.py, so adding a machine means learning most of the codebase first. CI cannot exercise the hardware paths, and the v3.1.4 entry that repairs MODBUS configurations broken by v3.1.2 is the kind of regression that slips through when pytest and coverage numbers say little about serial, BLE, USB and PLC behaviour. The release table also carries legacy builds for macOS 10.13, Windows 8 and Raspbian Stretch, which widens the build and support matrix for a small team. The code is AGPLv3, and the README line about being free in commercial settings holds for running it at a roastery but not for shipping a closed-source product built on it.