| name | bambu-cli |
| description | Operate and troubleshoot BambuLab printers with the bambu-cli (status/watch, print start/pause/resume/stop, files, camera, gcode, AMS, calibration, motion, fans, light, config, doctor). Use when a user asks to control or monitor a BambuLab printer, set up profiles or access codes, or translate a task into safe bambu-cli commands with correct flags, output format, and confirmations. |
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-file or --access-code-stdin only.
- Require confirmation for destructive actions (stop print, delete files, gcode send, calibrate, reboot); use
--force/--confirm only when the user explicitly agrees.
- Offer
--dry-run when supported to preview actions.
- Choose output format: human by default,
--json for structured output, --plain for key=value output.
Quick start
- Configure a profile:
bambu-cli config set --printer <name> --ip <ip> --serial <serial> --access-code-file <path> --default
- Status:
bambu-cli status
- Watch:
bambu-cli watch --interval 5
- Start print:
bambu-cli print start <file.3mf|file.gcode> --plate 1
- Pause/resume/stop:
bambu-cli print pause|resume|stop
- Camera snapshot:
bambu-cli camera snapshot --out snapshot.jpg
Task guidance
Setup & config
- Use
config set/list/get/remove to 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
status for a one-off snapshot; use watch for periodic updates (--interval, --refresh).
- Use
--json/--plain for scripting.
Printing
- Use
print start <file> with .3mf or .gcode.
- Use
--plate <n|path> to select a plate number or gcode path inside a 3mf.
- Use
--no-upload only when the file already exists on the printer; do not use it with .gcode input.
- Control AMS:
--no-ams, --ams-mapping "0,1", --skip-objects "1,3".
- Disable flow calibration with
--flow-calibration=false if requested.
Files and camera
- Use
files list [--dir <path>], files upload <local> [--as <remote>].
- Use
files download <remote> --out <path|->; use --force to allow writing binary data to a TTY.
- Use
files delete <remote> only with confirmation.
- Use
camera snapshot --out <path|->; use --force to 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 set with --part/--aux/--chamber values 0-255 or 0-1.
- Use
light on|off|status.
Gcode and calibration
- Use
gcode send <line...> or gcode send --stdin (confirmation required; --no-check skips validation).
- Avoid combining
--access-code-stdin with gcode send --stdin; use an access code file instead.
- Use
calibrate with --no-bed-level, --no-motor-noise, --no-vibration when requested.
Troubleshooting
- Use
doctor to check TCP connectivity to MQTT/FTPS/camera ports; suggest --no-camera if 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.