Printer-agent capability matrix
This is a compact lookup for the built-in Moonraker family. It combines
implementation state with recorded evidence. It is not a promise that every
firmware configuration behaves the same way. Python plug-in behavior depends
on the plug-in, not on this matrix.
Use testing and troubleshooting before calling a live-printer
result complete.
For a quicker tour of the controls users actually see, open the
annotated Device-tab view. The annotations
explain the important routing constraints; this matrix remains the compact
cross-agent reference.
Status definitions
- Supported - implemented, with a relevant live-printer result recorded.
- Partial - an important condition, limitation, or defect applies.
- Unsupported - no applicable implementation, or deliberate refusal.
- Not verified - implemented or source-inspected, but without a relevant live
result.
Base means MoonrakerPrinterAgent. Qidi, Creality, and Snapmaker inherit
from it unless a row identifies an override.
Connection and status
| Capability |
Base |
Qidi |
Creality |
Snapmaker |
| Direct LAN connection with API key |
Supported |
Supported |
Not verified |
Not verified |
| WebSocket status updates |
Supported |
Supported |
Not verified |
Not verified |
| Reconnect and fresh status |
Partial |
Partial |
Partial |
Partial |
| Discovery and cloud binding |
Unsupported |
Unsupported |
Unsupported |
Unsupported |
| Device identity with a configured port |
Partial |
Partial |
Partial |
Partial |
- Reconnect completion can leave the Device tab with stale status.
- A bare IP and
host:port can become separate device identities.
- The Base and Qidi Supported grades come from prior hardware sessions. They
were carried into this rewrite and not rerun.
Controls
| Capability |
Base |
Qidi |
Creality |
Snapmaker |
| Home and arbitrary G-code |
Not verified |
Not verified |
Not verified |
Not verified |
| Bed and nozzle temperature |
Not verified |
Not verified |
Not verified |
Not verified |
| Pause, resume, and cancel |
Not verified |
Not verified |
Not verified |
Not verified |
| Configured chamber light |
Partial |
Partial |
Partial |
Partial |
| Jog and manual extrusion |
Partial |
Partial |
Not verified |
Not verified |
| Legacy part-fan speed control |
Partial |
Partial |
Not verified |
Not verified |
| Structured fan, chamber, and AI controls |
Unsupported |
Unsupported |
Unsupported |
Unsupported |
| AMS RFID, calibration, and tray control |
Unsupported |
Unsupported |
Unsupported |
Unsupported |
- Chamber light needs a recognised light object.
- Base and Qidi jog works, but can leave relative positioning active. Do not
use it as a general safe-control test until its G-code state is restored.
- Base and Qidi part-fan control works through legacy
gcode_line while
is_enable_np is false. Adding cfg, fun, aux, and stat flips that
flag and routes fan and extruder controls to unsupported structured commands.
- Creality and Snapmaker inherit the source path but have no separate live
evidence for jog or fan control.
Printing
| Capability |
Base |
Qidi |
Creality |
Snapmaker |
| Upload G-code without starting |
Not verified |
Not verified |
Not verified |
Not verified |
| Upload and start a local print |
Not verified |
Not verified |
Not verified |
Not verified |
| Mapped multi-material print |
Unsupported |
Not verified |
Unsupported |
Unsupported |
| Cloud or SD-card start variants |
Unsupported |
Partial |
Unsupported |
Unsupported |
| Cancel during upload |
Not verified |
Not verified |
Not verified |
Not verified |
| Send with no nozzle identity |
Not applicable |
Not verified |
Not applicable |
Not applicable |
- Qidi applies mapping before it routes the real local print path.
- Some Qidi print variants can reach base success stubs after mapping.
- Qidi tolerates missing nozzle data in source, but that Send preflight is not
hardware-verified.
Filament
| Capability |
Base |
Qidi |
Creality |
Snapmaker |
| Sync mode |
Not verified |
Not verified |
Not verified |
Not verified |
| Read installed material and slots |
Partial |
Not verified |
Not verified |
Not verified |
| Slot, material, and colour refresh |
Unsupported |
Not verified |
Not verified |
Not verified |
| Cleanup after removed material |
Not verified |
Not verified |
Not verified |
Not verified |
| Load, unload, or write a slot |
Unsupported |
Partial |
Unsupported |
Unsupported |
| Auto Refill |
Unsupported |
Unsupported |
Unsupported |
Unsupported |
- All built-in agents use pull-mode sync.
- Base reads Happy Hare or AFC data when present. Qidi has print-time mapping;
Creality has CFS logic; Snapmaker reads printer arrays and NFC data.
- The Base Device-tab slot refresh uses a proprietary AMS command and has no
generic Moonraker translation.
- Generic write-side macros stay unsupported until their printer contract is
known and verified.
Camera
| Capability |
Base |
Qidi |
Creality |
Snapmaker |
| Discover a Moonraker webcam |
Not verified |
Not verified |
Not verified |
Unsupported |
| Provide a camera source |
Not verified |
Not verified |
Not verified |
Not verified |
| Live camera view |
Not verified |
Not verified |
Not verified |
Not verified |
| Snapshot-only camera start |
Unsupported |
Unsupported |
Unsupported |
Not verified |
| Camera start renewal and teardown |
Unsupported |
Unsupported |
Unsupported |
Partial |
| Print thumbnail |
Not verified |
Not verified |
Not verified |
Not verified |
- Snapmaker bypasses webcam discovery with a local snapshot-polling page.
- Its renewal and teardown path has lifetime risks without live evidence.
- Moonraker thumbnail endpoint responses and filename-cache behavior need live
coverage.
Python plug-ins
| Capability |
Python plug-in agent |
| Registration and re-registration |
Not verified - lifecycle tests cover replacement |
| Duplicate agent ID |
Not verified - conflict is rejected and reported |
| Disable or unload |
Not verified - deregistration is tested; session teardown needs coverage |
| Capability surface |
Defined by the plug-in and exposed Python API |
Reading the matrix safely
Partial is not a softer form of Supported. It names a condition that must
be checked before use. Not verified means the code was found, but no
relevant live result is recorded.
- Pair each claim with the evidence grades in the testing guide. This matters
especially for CFS, Snapmaker camera, MMU macros, Qidi Send preflight, and
thumbnail endpoints.
Background - deliberate exclusions
The matrix excludes Bambu-specific cloud binding, RFID, calibration, and
camera-control features from the Moonraker family. They use different protocol
contracts and are deliberately refused when no safe Klipper equivalent exists.