| name | 3dprint |
| description | Turn natural language into 3D prints on a Bambu Lab printer. ONLY activate when the user EXPLICITLY asks to 3D print, make, or fabricate a physical object. Do NOT activate for general questions, design discussions, or unrelated requests. |
| homepage | https://github.com/phoenixjyb/openclaw-3dprint |
| metadata | {"openclaw":{"emoji":"๐จ","os":["darwin","linux"],"requires":{"bins":["3dprint"]},"install":[{"id":"pip","kind":"pip","package":"openclaw-3dprint","bins":["3dprint"],"label":"Install openclaw-3dprint (pip)"}]}} |
3dprint โ Text-to-3D-Print Pipeline
Turn a chat message like "print me a small vase" into a physical 3D print, fully automated.
Quick Start
- Install:
pip install openclaw-3dprint
- Copy config:
cp .env.example ~/.openclaw-3dprint/pipeline.env and fill in your keys
- Start the pipeline server:
openclaw-3dprint --mode feishu
- Use the CLI from OpenClaw:
3dprint request a small cinderella figurine
CLI Commands
3dprint request <description>
3dprint approve <job_id>
3dprint reject <job_id>
3dprint status [job_id]
3dprint queue
3dprint help
Pipeline Stages
Each print job goes through these stages (approval required between each):
- LLM Interpretation โ enriches the user prompt into a detailed 3D modeling prompt
- 3D Model Generation โ generates a mesh via Tripo3D (or Meshy.ai)
- Slicing โ slices the model with PrusaSlicer (local) or Bambu Studio (remote Windows)
- Printing โ uploads .3mf via FTPS and starts print via MQTT
Configuration
All config is read from ~/.openclaw-3dprint/pipeline.env. Required settings:
| Setting | Description |
|---|
OPENAI_API_KEY | LLM API key (OpenAI, xAI/Grok, etc.) |
TRIPO_API_KEY | Tripo3D API key for mesh generation |
BAMBU_PRINTER_IP | Printer IP address on local network |
BAMBU_PRINTER_SERIAL | Printer serial number |
BAMBU_PRINTER_ACCESS_CODE | Printer access code (from LCD screen) |
Optional settings:
| Setting | Default | Description |
|---|
BOT_MODE | feishu | Bot mode: feishu, telegram, or dual |
SLICER_MODE | local | local (PrusaSlicer) or remote (Windows SSH) |
SLICER_PATH | auto-detect | Path to PrusaSlicer binary |
BAMBU_SEND_METHOD | ftp | ftp (direct) or studio (Bambu Studio CLI) |
MESH_PROVIDER | tripo | tripo or meshy |
See .env.example for the full list.
Printer Queue
Multiple agents/users share one printer safely. The pipeline uses cross-process locking
(fcntl.flock) so concurrent print requests are serialised. Users see their queue position
while waiting.
When to Activate
ONLY trigger this skill when the user's message contains a clear intent to 3D print a physical object. Look for explicit keywords:
- โ
Trigger: "3D print me a โฆ", "print out a โฆ", "ๆๅฐไธไธชโฆ", "ๅธฎๆๆไธไธชโฆ", "make me a โฆ on the printer"
- โ
Trigger: "check print status", "printer queue", "ๆๅฐ็ถๆ"
- โ Do NOT trigger: "what does a dragon look like", "design a vase" (discussion, not printing)
- โ Do NOT trigger: "print this document", "print the report" (paper printing, not 3D)
- โ Do NOT trigger: any message without explicit 3D print / ๆๅฐ intent
When in doubt, ask the user "Would you like me to 3D print this?" rather than triggering the pipeline.
Typical Agent Interaction
When a user says "3D print me a dragon", you (the agent) should:
- Enrich the prompt yourself โ you already have an LLM. Turn "a dragon" into a detailed
3D modeling description (shape, pose, proportions, style, scale ~120mm, material PLA).
- Call the API with both fields:
curl -X POST http://127.0.0.1:8765/api/print \
-H 'Content-Type: application/json' \
-d '{"prompt": "a dragon", "enriched_prompt": "A fierce Western dragon in a rearing pose, wings spread wide..."}'
This skips the built-in LLM step โ no separate LLM API key needed.
- If you send only
prompt (no enriched_prompt), the pipeline uses its own LLM
(requires OPENAI_API_KEY in config).
- After each stage, show the result and ask user to approve:
3dprint approve <id>
- When printing starts, report progress via MQTT updates
Requirements
- Python โฅ 3.11
- PrusaSlicer (for local slicing):
brew install --cask prusa-slicer
- Network access to Bambu printer (same LAN, ports 990 + 8883)
- API keys: LLM provider + Tripo3D