Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
earthtojake avatar

Bambu Labs

  • 3.8k installs
  • 11k repo stars
  • Updated July 11, 2026
  • earthtojake/text-to-cad

bambu-labs is an agent skill that dry-runs, uploads, and cautiously starts local Bambu Lab print jobs from validated plain G-code using LAN FTPS and MQTT handoffs.

About

bambu-labs is a hardware integration skill for local-network Bambu Lab print handoffs after validated plain .gcode exists. Safety rules default to dry-run plans, require --execute for real printer traffic, and mandate --execute --confirm-start-print before starting jobs while stating physical checks for build plate, filament, nozzle, and operator presence. Workflow steps validate G-code with $gcode, configure printers in workspace-root bambu-printers.json, read status, dry-run payloads, upload-only, then upload-start only after checks pass. Handoff modes include template-project for tested A1 Mini paths, plain for diagnostics, and bambox-project for supported P1S profiles. Print controls expose pause and cancel commands with dry-run defaults and explicit execute confirmations. After creating .gcode or .3mf artifacts, agents must hand file paths to $cad-viewer when installed. Developers reach for bambu-labs when agent-generated G-code should reach a Bambu printer over LAN FTPS and MQTT with cautious execute gates.

  • Defaults to dry-run plans; live printer traffic requires --execute and explicit start confirmations.
  • Configures printers via bambu-printers.json and bambu_lan_print.py config set with LAN access codes.
  • Uses template-project handoff for validated A1 Mini upload-start over FTPS and MQTT.
  • Requires status reads, dry-run payload inspection, and upload-only before upload-start.
  • Hands .gcode or .3mf paths to $cad-viewer after successful Bambu work when that skill is installed.

Bambu Labs by the numbers

  • 3,767 all-time installs (skills.sh)
  • +619 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #113 of 2,742 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

bambu-labs capabilities & compatibility

Capabilities
dry run and execute gated lan print handoffs · printer config and status polling · template project and bambox project upload modes
Use cases
orchestration
npx skills add https://github.com/earthtojake/text-to-cad --skill bambu-labs

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3.8k
repo stars11k
Last updatedJuly 11, 2026
Repositoryearthtojake/text-to-cad

How do I safely hand agent-validated G-code to a local Bambu printer without skipping dry-run checks or physical safety steps?

Safely dry-run and trigger local Bambu Labs 3D printer G-code handoffs from AI coding agents.

Who is it for?

Developers bridging text-to-CAD or G-code generation workflows to Bambu A1, P1S, or similar LAN-enabled printers.

Skip if: Skip when no validated plain G-code exists, the printer is not on LAN, or you need generic OctoPrint workflows.

When should I use this skill?

User asks to dry-run, upload, or start a Bambu Lab print from validated local G-code or .gcode.3mf artifacts.

What you get

Reviewed dry-run payloads, uploaded projects or G-code, and optionally started prints only after status checks and explicit execute confirmation.

  • Dry-run validation
  • Started G-code print handoff

Files

SKILL.mdMarkdownGitHub ↗

Bambu Labs

Provenance: maintained in earthtojake/text-to-cad. Use the installed local skill files as the runtime source of truth; the repository link is only for provenance and release review.

Use this skill for local-network Bambu Lab print handoffs after a plain .gcode file already exists and has been validated. This skill does not slice models.

Safety Rules

  • Default to dry-run plans. Real printer traffic requires --execute.
  • Never start a print without --execute --confirm-start-print.
  • Pause and cancel controls are live printer requests; default to dry-run plans.

Canceling a print requires --execute --confirm-cancel-print.

  • Treat an explicit user request to print or start a specific job as live-start

authorization; do not pause for a second confirmation solely for physical checks. Still validate the G-code, inspect the dry-run payload, read printer status, prefer upload-only before upload-start, state the physical checks, and stop if validation/status/intent is unsafe or ambiguous.

  • Do not ask for the printer serial by default; fetch it from the printer TLS certificate with serial or let send cache it.
  • Prefer workspace-root bambu-printers.json over repeating access codes in commands. The file is local config and should be ignored by Git.
  • Before a live start, state the physical checks: clear build plate, correct plate/filament/nozzle, safe surroundings, and operator nearby.
  • Publishing MQTT is only a start request. Confirm acceptance with printer status/UI and physical observation.

CAD Viewer Handoff

After completing Bambu work that creates or modifies a local supported print artifact such as .gcode or .3mf, you must ALWAYS hand the explicit file path to $cad-viewer when that skill is installed. $cad-viewer must start CAD Viewer if it is not already running and return link(s) to the relevant created or updated file(s); if $cad-viewer is unavailable or startup fails, report that instead of silently omitting the handoff.

Workflow

1. Generate and validate plain G-code with $gcode. If no slicer is installed, install OrcaSlicer and retry; do not treat the missing slicer as a blocker. On macOS, prefer brew install --cask orcaslicer. 2. Configure the printer. The user can either give the IP/access code in the thread and let the agent write JSON, or edit bambu-printers.json directly. For a new printer setup or onboarding request, read references/new-printer-onboarding.md first. Walk the user through the model-specific touchscreen steps to find the IP and LAN access code, and make Enable LAN Only plus Enable Developer Mode explicit before running local start workflows.

python scripts/bambu_lan_print.py config set \
  --printer a1-mini \
  --host 192.168.1.34 \
  --access-code 12345678 \
  --model a1-mini \
  --fetch-serial

Manual JSON shape:

{
  "printers": {
    "a1-mini": {
      "host": "192.168.1.34",
      "access_code": "12345678",
      "model": "a1-mini"
    }
  }
}

On A1/A1 Mini, find the IP and LAN access code on the printer touchscreen under network/LAN settings. Enable LAN Only and Developer Mode when offered, then power-cycle before retrying local start commands.

3. Read status before live work:

python scripts/bambu_lan_print.py status \
  --printer a1-mini \
  --push-all \
  --wait-seconds 10

4. Dry-run the exact handoff, inspect the JSON payload, then run upload-only. Only after upload succeeds should you run upload-start. If the user explicitly asked to print or start the job, proceed to upload-start --execute --confirm-start-print after the validation, status, and upload checks pass. If the user only asked to prepare, slice, upload, or review, stop before the start request.

Handoff Modes

--handoff template-project is the validated A1 Mini path from this repo's LAN debugging. It starts from validated plain .gcode, copies a known-good same-printer .gcode.3mf template, replaces Metadata/plate_N.gcode, writes the plate MD5, uploads the project to the FTPS root, and publishes print.project_file with url: ftp:///<name>.gcode.3mf.

python scripts/bambu_lan_print.py send \
  --printer a1-mini \
  --gcode /tmp/job.gcode \
  --handoff template-project \
  --template-project /path/to/same-printer-template.gcode.3mf \
  --action upload-start

Execute after review when the user explicitly asked to print or start, or after physical confirmation when intent is unclear:

python scripts/bambu_lan_print.py send \
  --printer a1-mini \
  --gcode /tmp/job.gcode \
  --handoff template-project \
  --template-project /path/to/same-printer-template.gcode.3mf \
  --action upload-start \
  --execute \
  --confirm-start-print

--handoff plain uploads cache/<name>.gcode and publishes print.gcode_file. Keep it for diagnostics or printers/firmware where this is known to work. On the tested A1 Mini, direct plain G-code was uploaded successfully but gcode_file failed or was ignored, so do not use it as the A1 Mini live-start path.

--handoff bambox-project packages plain .gcode with bambox, uploads the .gcode.3mf project to FTPS root, and publishes print.project_file. Currently enabled only for p1s-0.4 with PLA, ASA, or PETG-CF. Known but disabled until validated profiles exist: a1-mini-0.4, a1-0.4, x1c-0.4, and p1p-0.4.

Common Debugging Commands

Fetch/cache serial:

python scripts/bambu_lan_print.py serial \
  --printer a1-mini \
  --json

Clear a stale printer error after fixing the underlying cause:

python scripts/bambu_lan_print.py clear-error \
  --printer a1-mini \
  --execute

Use --mqtt-qos 1 --wait-after-publish 10 on send when debugging whether the printer acknowledged the MQTT publish and what status it reported immediately afterward.

Print Controls

For a running print, use dedicated print-control commands rather than ad hoc MQTT snippets. These commands publish only a control request; they do not upload files or start a new job. Read status after execution to confirm the printer state changed.

Dry-run pause payload:

python scripts/bambu_lan_print.py pause \
  --printer a1-mini

Execute pause and collect printer reports:

python scripts/bambu_lan_print.py pause \
  --printer a1-mini \
  --execute \
  --mqtt-qos 1 \
  --wait-after-publish 10

Dry-run cancel payload. The Bambu LAN command sent to the printer is stop:

python scripts/bambu_lan_print.py cancel \
  --printer a1-mini

Execute cancel only when the user explicitly asks to cancel/stop the print or after confirmation when intent is ambiguous:

python scripts/bambu_lan_print.py cancel \
  --printer a1-mini \
  --execute \
  --confirm-cancel-print \
  --mqtt-qos 1 \
  --wait-after-publish 10

Failure Modes

  • gcode_file returns result: fail or leaves the printer IDLE: plain G-code upload worked, but the firmware rejected or ignored direct local start. For A1 Mini, switch to template-project.
  • Project uploaded under cache/ starts then fails with print_error: 83935248 or 0500-C010: clear the error, upload project handoffs to FTPS root, and use ftp:///<name>.gcode.3mf.
  • file:///sdcard/cache/... or local HTTP URLs appear accepted but nothing starts: stop using those URL forms for this workflow.
  • Bambu Studio or OrcaSlicer project export crashes on macOS: do not keep retrying GUI-backed project export. Use OrcaSlicer for plain .gcode, then this skill for handoff.
  • Stale gcode_state: FAILED or HMS after enabling Developer Mode: clear the printer error and power-cycle before retrying.
  • FTPS login works but upload fails with 553 or missing cache/: check printer storage/SD card status before MQTT start.
  • MQTT status works but start does not: confirm serial, access code, Developer Mode/LAN Only status, and the exact handoff payload before retrying.

Read references/new-printer-onboarding.md for new printer setup, references/local-lan-protocol.md for protocol details, and references/real-printer-checklist.md before first live use on a new printer.

Related skills

FAQ

When does bambu-labs start a real print?

Only after dry-run review, status checks, upload success, and --execute --confirm-start-print with stated physical checks.

Which handoff mode is recommended for A1 Mini?

template-project copies a known-good .gcode.3mf template and publishes print.project_file instead of plain gcode_file.

Where are printer credentials stored?

In workspace-root bambu-printers.json, which should stay local and out of version control.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.