OctoPrint
SkillFiles & storageLets your agent start, pause, and monitor 3D prints, set temperatures, and upload files to OctoPrint.
Use OctoPrint in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add OctoPrint and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the OctoPrint skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Control an OctoPrint 3D printer over its local REST API: print jobs, temperatures, file uploads, and gated raw G-code. Trigger phrases: octoprint, 3d printer, start print, pause print, nozzle temperature, bed temperature, gcode.
What this skill tells your AI
The instructions your AI receives, as published by anil-matcha/awesome-muse-connectors in connectors/octoprint/SKILL.md and read by ahel’s review.
Purpose
Control an OctoPrint 3D printer over its local REST API: read printer state and temperatures, monitor print progress, start/pause/cancel/restart jobs, upload and select gcode files, set hotend and bed temperatures, jog or home axes, and (gated) run raw G-code. Use when the user mentions their OctoPrint instance or a printer it drives.
Tooling
All commands go through bin/octoprint.py. --host points at the OctoPrint instance (default $OCTOPRINT_HOST or http://localhost:5000); --insecure skips TLS verification for self-signed reverse proxies.
bin/octoprint.py auth --host http://octopi.local:5000 # verify the API key
bin/octoprint.py version # server version
bin/octoprint.py status # printer state, hotend and bed temps
bin/octoprint.py job # current print progress
bin/octoprint.py files # list gcode files on the printer
bin/octoprint.py printhead --command home --x-home --y-home --z-home # home axes (LOW)
# MEDIUM: --confirm "<exact effect>" on first use per printer, then proceed
bin/octoprint.py job-cmd --command start --confirm "start the print job on octopi.local"
bin/octoprint.py job-cmd --command pause --confirm "pause the print job on octopi.local"
bin/octoprint.py job-cmd --command cancel --confirm "cancel the print job on octopi.local"
bin/octoprint.py upload --path ./benchy.gcode --confirm "upload benchy.gcode to octopi.local"
bin/octoprint.py file-select --path benchy.gcode \
--confirm "select file benchy.gcode for printing on octopi.local"
bin/octoprint.py tool-temp --tool tool0 --temp 210 \
--confirm "heat tool0 to 210C on octopi.local (physical heater)"
bin/octoprint.py bed-temp --temp 60 \
--confirm "heat the print bed to 60C on octopi.local (physical heater)"
# HIGH: raw G-code needs BOTH --enable-raw-gcode AND --confirm on EVERY call
bin/octoprint.py gcode --command "G28" --enable-raw-gcode --confirm "run raw G-code: G28"
job-cmd --command start starts the currently selected file; run file-select first if nothing is loaded. MEDIUM first-use confirmations are recorded locally (~/.cache/muse-connectors/octoprint/confirmed.json).
Auth
- Provider id:
octoprint(credential is collected ascustom.octoprint) - Collection: API key generated in OctoPrint under Settings > Application Keys (or the global API key), stored via the secure credential flow (
credentials.request_api_access); sent as theX-Api-Keyrequest header - Allowed hosts: the hostname from
--host(validated per call; the surrogate is only ever swapped on egress to that host) - Status check:
bin/octoprint.py auth(must return"ok": true) - Remote access: OctoPrint is LAN-first. Reach it remotely through the OctoEverywhere free-tier relay, a VPN, or a reverse proxy; the connector does not implement any relay itself.
Operating Rules
- HIGH: raw G-code (
gcode) can physically damage the printer. The CLI requires both--enable-raw-gcode(explicit capability flag) and--confirm "run raw G-code: <command>"naming the exact command, on every call. Prefer the high-level commands (job-cmd,tool-temp,bed-temp,printhead) whenever they cover the need; reach for raw G-code only when nothing else does. - MEDIUM: job start/pause/cancel/restart, file upload/select, and heater targets move or heat physical hardware. They need
--confirmnaming the exact effect on first use per printer. Heating a hotend or bed unattended is fire-adjacent: say so when confirming, and never set temperatures while the user is away without their explicit say-so. connection disconnectmid-print cancels the print; the CLI warns but proceeds (LOW).- There are no vendor quotas, but do not hammer a Raspberry Pi running OctoPrint: keep status polling to a few times a minute at most.
- Never exfiltrate the credential: the CLI only ever handles surrogates. Do not print, log, or transmit the API key value.
Files
- SKILL.md
- bin/octoprint.py
Maturity
🧪 Draft: written from OctoPrint's public REST API docs; not yet live-tested end-to-end.
Honesty flags: endpoint paths and payload shapes (/api/job, /api/files, /api/printer/tool, /api/printer/bed, /api/printer/printhead, /api/printer/command, /api/connection) follow the official OctoPrint REST reference. Raw G-code is HIGH and doubly gated (--enable-raw-gcode plus per-call --confirm). The multipart upload body is standard form encoding but untested against a live OctoPrint here.
Signals
- GitHub stars
- 1k
- Forks
- 282
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
octoprint- Source
- github.com/anil-matcha/awesome-muse-connectors
github.com/anil-matcha/awesome-muse-connectors