bCNC Job Completion Notifier

The open-source bCNC program is used to control a CNC router, both through manual commands and the execution of g-code programs. I use it regularly for guitar peghead and fingerboard inlays. However, one feature that bCNC lacks is the ability to send a notification when a job has completed. Some of the inlay jobs take 10-20 minutes to complete, and I let the router run unattended while I do other workshop tasks. I previously set a timer on my phone to remind me when to check back to see if the job has completed (the software gives an estimate of total job time), but really wanted bCNC to notify me with a “ping” of some sort when it had finished.

Since bCNC is open-source and coded in Python, it’s extensible. I’m not a Python coder (Java, C, C++ are my languages), so I asked Claude if it could create some sort of notification capability. It suggested using the free ntfy phone app. This app allows the phone user to subscribe to a “topic” (a unique text string), and receive notifications that are sent using a write to a URL specifying a message and the “topic”. Claude then created the changes in the bCNC code base to permit bCNC to send a ntfy phone notification to a supplied topic when a job has completed or some error has occurred.

Below are links to a guide for incorporating the software changes and testing and using it, as well as modified software files to replace the stock ones. (There’s also a diff provided if you want to patch the existing files rather than replace them.) These correspond to version 0.9.16 of bCNC, which was the latest version when these were created.

Install and usage guide

Gives instructions on how to install and use the notification chages, including creating a unique ntfy topic. Also explains in detail the changes in the code that enable the notification mechanism.

Modified files

This is the easiest way to incorporate the changes – just replace the corresponding existing files in the 0.9.16 bCNC code base with these. You should create copies of the original files in case you want to reverse the changes.

Diff file

Only use this if you’d prefer to patch the existing files rather than replacing them.

Conversation with Claude used to generate the software

Computing, lutherie, mathematics, finance, and other resources