skills$openclaw/snapmaker
odrobnik9.2k

by odrobnik

snapmaker – OpenClaw Skill

snapmaker is an OpenClaw Skills integration for coding workflows. Control and monitor Snapmaker 2.0 3D printers via their HTTP API. Status, job management, progress watching, and event monitoring.

9.2k stars8.3k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namesnapmaker
descriptionControl and monitor Snapmaker 2.0 3D printers via their HTTP API. Status, job management, progress watching, and event monitoring. OpenClaw Skills integration.
ownerodrobnik
repositoryodrobnik/snapmaker-2
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @odrobnik/snapmaker-2
last updatedFeb 7, 2026

Maintainer

odrobnik

odrobnik

Maintains snapmaker in the OpenClaw Skills directory.

View GitHub profile
File Explorer
5 files
.
scripts
monitor.py
5.3 KB
snapmaker.py
12.9 KB
_meta.json
278 B
SKILL.md
5.1 KB
SKILL.md

name: snapmaker description: "Control and monitor Snapmaker 2.0 3D printers via their HTTP API. Status, job management, progress watching, and event monitoring." summary: "Snapmaker 2.0 3D printer control: status, jobs, monitoring." version: 1.0.0 homepage: https://github.com/odrobnik/snapmaker-skill metadata: { "openclaw": { "emoji": "🖨️", "requires": { "bins": ["python3"] }, }, }

Snapmaker 2.0 Skill

Control and monitor Snapmaker 2.0 3D printers via their HTTP API.

Features

  • Status monitoring - Real-time printer status (temperatures, progress, position)
  • Job management - Send, start, pause, resume, and stop print jobs
  • Safety features - Prevents interfering with active prints without confirmation
  • Progress watching - Live monitoring of print progress
  • Notification support - Detect print completion, filament issues, errors

Configuration

Config stored in ~/clawd/snapmaker/config.json:

{
  "ip": "192.168.0.32",
  "token": "your-token-here",
  "port": 8080
}

Finding your token:

  • macOS: ~/Library/Application Support/snapmaker-luban/machine.json
  • Windows: %appdata%\snapmaker-luban\machine.json
  • Linux: ~/.config/snapmaker-luban/machine.json

Look for the server.token field (second "token" in the file).

Usage

Basic Commands

# Get current printer status
python3 scripts/snapmaker.py status

# Watch print progress (updates every 5 seconds)
python3 scripts/snapmaker.py watch

# Get status as JSON
python3 scripts/snapmaker.py status --json

Job Control

# Send a file (prepares but doesn't start)
python3 scripts/snapmaker.py send ~/prints/model.gcode

# Send and start immediately
python3 scripts/snapmaker.py send ~/prints/model.gcode --start --yes

# Pause current print
python3 scripts/snapmaker.py pause --yes

# Resume paused print
python3 scripts/snapmaker.py resume --yes

# Stop/cancel print (requires confirmation)
python3 scripts/snapmaker.py stop

Safety Flags

  • --yes - Skip confirmation prompts (use with caution!)
  • --force - Override safety checks (NOT RECOMMENDED)

All commands that modify state require confirmation unless --yes is provided.

API Endpoints

The skill uses these Snapmaker HTTP API v1 endpoints:

  • POST /api/v1/connect - Establish connection
  • GET /api/v1/status - Get printer status
  • POST /api/v1/prepare_print - Upload file
  • POST /api/v1/start_print - Start printing
  • POST /api/v1/pause - Pause print
  • POST /api/v1/resume - Resume print
  • POST /api/v1/stop - Stop/cancel print
  • GET /api/v1/print_file - Download last file

Status Fields

The status command returns:

  • status - Overall state (IDLE, RUNNING, PAUSED)
  • printStatus - Printing / Idle
  • progress - 0.0 to 1.0
  • fileName - Current/last file
  • currentLine / totalLines - G-code progress
  • elapsedTime / remainingTime - In seconds
  • nozzleTemperature1 / nozzleTargetTemperature1
  • heatedBedTemperature / heatedBedTargetTemperature
  • x / y / z - Current position
  • isFilamentOut - Filament runout detection
  • isEnclosureDoorOpen - Door state

Notifications

To detect events:

# Watch for completion
python3 scripts/snapmaker.py watch

# Or poll status in a loop
while true; do
  python3 scripts/snapmaker.py status --json | jq -r '.printStatus'
  sleep 10
done

Event detection:

  • Print complete - status == "IDLE" && progress >= 0.99
  • Filament out - isFilamentOut == true
  • Door opened - isEnclosureDoorOpen == true
  • Error - Check status field for errors

Safety Features

  1. Active print protection - Cannot send files while printing
  2. Confirmation prompts - All destructive actions require confirmation
  3. State validation - Commands check printer state before executing
  4. Clear warnings - Stop command shows prominent warning

Examples

Check if printer is busy

python3 scripts/snapmaker.py status | grep -q "RUNNING" && echo "Busy" || echo "Available"

Get remaining time

python3 scripts/snapmaker.py status --json | jq -r '.remainingTime'

Monitor temperatures

python3 scripts/snapmaker.py status --json | jq '{nozzle: .nozzleTemperature1, bed: .heatedBedTemperature}'

Troubleshooting

Connection refused:

  • Verify printer IP: ping 192.168.0.32
  • Check printer is powered on
  • Ensure you're on the same network

Invalid token:

  • Reconnect Luban to the printer (accept on touchscreen)
  • Extract new token from machine.json
  • Update ~/clawd/snapmaker/config.json

Can't send file:

  • Check if printer is busy: python3 scripts/snapmaker.py status
  • Wait for current print to finish
  • Use --force only if absolutely necessary

References

Dependencies

  • Python 3.6+
  • requests library (install: pip3 install requests)

License

Part of OpenClaw skills collection.

README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

- Python 3.6+ - `requests` library (install: `pip3 install requests`)

Configuration

Config stored in `~/clawd/snapmaker/config.json`: ```json { "ip": "192.168.0.32", "token": "your-token-here", "port": 8080 } ``` **Finding your token:** - macOS: `~/Library/Application Support/snapmaker-luban/machine.json` - Windows: `%appdata%\snapmaker-luban\machine.json` - Linux: `~/.config/snapmaker-luban/machine.json` Look for the `server.token` field (second "token" in the file).

FAQ

How do I install snapmaker?

Run openclaw add @odrobnik/snapmaker-2 in your terminal. This installs snapmaker into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/odrobnik/snapmaker-2. Review commits and README documentation before installing.