Bambu CLI
Overview
Use bambu-cli to configure, monitor, and control BambuLab printers over MQTT/FTPS/camera, producing exact commands and safe defaults.
Defaults and safety
Confirm the target printer (profile or IP/serial) and resolve precedence: flags > env > project config > user config.
Avoid access codes in flags; use
--access-code-fileor--access-code-stdinonly.Require confirmation for destructive actions (stop print, delete files, gcode send, calibrate, reboot); use
--force/--confirmonly when the user explicitly agrees.Offer
--dry-runwhen supported to preview actions.Choose output format: human by default,
--jsonfor structured output,--plainfor key=value output.
Quick start
Configure a profile:
bambu-cli config set --printer <name> --ip <ip> --serial <serial> --access-code-file <path> --defaultStatus:
bambu-cli statusWatch:
bambu-cli watch --interval 5Start print:
bambu-cli print start <file.3mf|file.gcode> --plate 1Pause/resume/stop:
bambu-cli print pause|resume|stopCamera snapshot:
bambu-cli camera snapshot --out snapshot.jpg
Task guidance
Setup & config
Use
config set/list/get/removeto manage profiles.Use env vars to avoid flags in scripts:
BAMBU_PROFILE,BAMBU_IP,BAMBU_SERIAL,BAMBU_ACCESS_CODE_FILE,BAMBU_TIMEOUT,BAMBU_NO_CAMERA,BAMBU_MQTT_PORT,BAMBU_FTP_PORT,BAMBU_CAMERA_PORT.Note config locations: user
~/.config/bambu/config.json, project./.bambu.json.
Monitoring
Use
statusfor a one-off snapshot; usewatchfor periodic updates (--interval,--refresh).Use
--json/--plainfor scripting.
Printing
Use
print start <file>with.3mfor.gcode.Use
--plate <n|path>to select a plate number or gcode path inside a 3mf.Use
--no-uploadonly when the file already exists on the printer; do not use it with.gcodeinput.Control AMS:
--no-ams,--ams-mapping "0,1",--skip-objects "1,3".Disable flow calibration with
--flow-calibration=falseif requested.
Files and camera
Use
files list [--dir <path>],files upload <local> [--as <remote>].Use
files download <remote> --out <path|->; use--forceto allow writing binary data to a TTY.Use
files delete <remote>only with confirmation.Use
camera snapshot --out <path|->; use--forceto allow stdout to a TTY.
Motion, temps, fans, light
Use
home,move z --height <0-256>.Use
temps get|set(--bed,--nozzle,--chamber; require at least one).Use
fans setwith--part/--aux/--chambervalues0-255or0-1.Use
light on|off|status.
Gcode and calibration
Use
gcode send <line...>orgcode send --stdin(confirmation required;--no-checkskips validation).Avoid combining
--access-code-stdinwithgcode send --stdin; use an access code file instead.Use
calibratewith--no-bed-level,--no-motor-noise,--no-vibrationwhen requested.
Troubleshooting
Use
doctorto check TCP connectivity to MQTT/FTPS/camera ports; suggest--no-cameraif the camera port is unreachable.Assume default ports: MQTT 8883, FTPS 990, camera 6000 unless configured.
Reference
Read references/commands.md for the full command and flag reference.