# Tentacles A simple queue system for OctoPrint, designed to receive jobs and forward them to connected OctoPrint instances as they are available and ready. ## Workflow Username+Password users API keys mapped to users Users mapped to job priority API keys mapped to user sub-priority User-facing API can upload gcode files to storage and create a file entry in the DB Jobs can be created from new or existing file entries in the DB Jobs are mapped to the priority of the API key (and user) who created them Jobs get Runs - which track assigning a pending Job to a Printer Highest priority job schedules first/next non-Running Job to the first available printer. This requires copying the gcode file to the target device, and starting it running. Running Runs are polled to detect loss/failure. Lost or failed Runs are deleted, and the Job returns to the queue. A priority penalty may be called for. ## Notes Checking bed status on a printer $ curl 'http://10.0.0.6/api/plugin/bedready' \ -X POST \ -H 'Accept: application/json' \ -H 'Content-Type: application/json; charset=UTF-8' \ -H 'Authorization: Bearer ...' \ --data-raw '{"command":"check_bed","reference":"reference_2023-05-11T05:22:40.212Z.jpg"}' \ | jq . Uploading a file and starting to print it - https://github.com/prusa3d/PrusaSlicer/blob/0384d631d6ef1aaadcb68da031eba9a586b102ed/src/slic3r/Utils/OctoPrint.cpp#L936 - https://docs.octoprint.org/en/master/api/files.html#upload-file-or-create-folder - &print=true Doesn't appear possible to execute request/response g-code through the API? Can't detect when the printer's offsets aren't calibrated?