Skip to main content

Agent-friendly CLI for OctoPrint 3D printer management

Project description

octoprint-cli

Agent-friendly command-line interface for OctoPrint 3D printer management.

Designed for autonomous AI agent interaction with structured JSON outputs, clear exit codes, and safety guards for unattended operation.

Installation

pip install .

Or in development mode:

pip install -e ".[dev]"

Quick Start

1. Initialize configuration

octoprint-cli init
# Prompts for host URL and API key, saves to ~/.octoprint-cli/config.yaml

2. Or use environment variables

export OCTOPRINT_HOST="http://octopi.local"
export OCTOPRINT_API_KEY="your_api_key_here"

3. Check printer status

octoprint-cli status --json

Commands

Command Description
status Get printer state, temperatures, and job progress
files List available G-code files on the printer
upload <file> Upload a G-code file
print <file> Upload and start printing (requires --confirm)
cancel Cancel current print (requires --confirm)
pause Pause current print
resume Resume paused print
preflight [file] Run pre-flight safety checks
temp Get or set temperatures
gcode <cmds> Send raw G-code commands
connect Connect printer to OctoPrint
disconnect Disconnect printer from OctoPrint
init Create configuration file

Agent-Friendly Design

Structured JSON Output

Every command supports --json for machine-parseable output:

octoprint-cli status --json
{
  "status": "success",
  "data": {
    "state": "Operational",
    "temperature": {
      "tool0": {"actual": 22.5, "target": 0.0},
      "bed": {"actual": 21.8, "target": 0.0}
    },
    "job": {
      "file": null,
      "completion": null,
      "print_time_left": null
    }
  }
}

Exit Codes

Code Meaning
0 Success
1 Printer offline / unreachable
2 File error (not found, invalid format)
3 Printer busy (already printing)
4 Other error (auth, server, validation)

Safety Flags

Destructive operations require explicit confirmation:

# Will fail without --confirm
octoprint-cli print model.gcode --confirm --json

# Cancel with confirmation
octoprint-cli cancel --confirm --json

Idempotent Operations

# Exits 0 if already printing instead of erroring
octoprint-cli print model.gcode --confirm --skip-if-printing --json

Configuration

Configuration is resolved with this precedence (highest first):

  1. CLI flags (--host, --api-key)
  2. Environment variables (OCTOPRINT_HOST, OCTOPRINT_API_KEY)
  3. Config file (~/.octoprint-cli/config.yaml)

Config File Format

host: "http://octopi.local"
api_key: "YOUR_API_KEY_HERE"
timeout: 30
retries: 3

Agent Workflow Example

A typical autonomous print workflow:

# Step 1: Verify printer is ready
octoprint-cli preflight ./model.gcode --json
# Parse JSON, check "ready": true

# Step 2: Upload and print
octoprint-cli print ./model.gcode --confirm --json
# Parse JSON, check "status": "success"

# Step 3: Monitor progress (poll periodically)
octoprint-cli status --json
# Parse JSON, read data.job.completion and data.job.print_time_left

# Step 4: Handle completion or errors based on exit codes
# Exit 0 = success, 1 = offline, 2 = file error, 3 = busy, 4 = other

Error Handling Example

octoprint-cli status --json
echo "Exit code: $?"
{
  "status": "error",
  "data": null,
  "error": {
    "code": "CONNECTION_ERROR",
    "message": "Could not connect to OctoPrint at http://octopi.local"
  }
}

Exit code: 1 (printer offline)

Pre-flight Checks

The preflight command (and automatic checks before print) validates:

  • Printer is connected and operational
  • Printer is not already printing
  • No printer errors detected
  • Temperatures are within safe limits
  • File exists, has valid extension, reasonable size
octoprint-cli preflight ./model.gcode --json

Temperature Control

# View current temperatures
octoprint-cli temp --json

# Set hotend to 200C and bed to 60C
octoprint-cli temp --tool 200 --bed 60 --json

# Turn off all heaters
octoprint-cli temp --off --json

Raw G-code

# Home all axes
octoprint-cli gcode G28 --json

# Multiple commands
octoprint-cli gcode G28 "M104 S200" "M140 S60" --json

Requirements

  • Python 3.8+
  • OctoPrint server with API access enabled
  • Dependencies: click, requests, pyyaml, rich

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kiln3d_octoprint-0.2.0.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kiln3d_octoprint-0.2.0-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

Details for the file kiln3d_octoprint-0.2.0.tar.gz.

File metadata

  • Download URL: kiln3d_octoprint-0.2.0.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kiln3d_octoprint-0.2.0.tar.gz
Algorithm Hash digest
SHA256 68a7937de9c25d1a677774603527cb989b34624e30fdae5e69043ec1f97c33f3
MD5 a95934679fe1e4442034175deec911b2
BLAKE2b-256 4c97aff8b407ee9739c06fc4851746f2ad55bb1534826b74872141b0a8b4eae5

See more details on using hashes here.

Provenance

The following attestation bundles were made for kiln3d_octoprint-0.2.0.tar.gz:

Publisher: publish.yml on codeofaxel/Kiln

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kiln3d_octoprint-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kiln3d_octoprint-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ca4f6295724f1894b55c82ff65859134f8f52ec76538533ca41cd23272f1c9a
MD5 78d375509ebda61be8580a1a83c6b8fe
BLAKE2b-256 5c34256ac648a75fd996ebb47c1d5dfc48307386d65dea470f47e4b00a4c17d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for kiln3d_octoprint-0.2.0-py3-none-any.whl:

Publisher: publish.yml on codeofaxel/Kiln

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page