MCP Hub
Back to servers

Kiln

AI agent control of 3D printers — 273 tools for OctoPrint, Moonraker, Bambu, Prusa, Elegoo

Stars
2
Updated
Feb 20, 2026
Validated
Feb 23, 2026

Quick Install

uvx kiln3d

Kiln

Agentic infrastructure for physical fabrication via 3D printing.

CI PyPI Python License


Kiln agent completing a print job over chat

Ask your agent to print something. It just does it — start to finish.
Watch the demo →

CLI demo (terminal)

Kiln CLI Demo

Kiln lets AI agents design, queue, and execute physical manufacturing jobs on real 3D printers with zero human intervention. It exposes printer control through both a CLI and the Model Context Protocol (MCP), making any MCP-compatible agent (OpenClaw, Claude, GPT, custom) a first-class operator of your print farm.

Three ways to print

ModeWhat it isYou need
🖨️ Your printerControl OctoPrint, Moonraker, Bambu, or Prusa Link printers on your LAN — or remotely via Bambu CloudA 3D printer
🏭 Fulfillment centersOutsource to Craftcloud (150+ services — no API key required). Kiln handles quoting, ordering, and tracking. More providers coming soonNothing — no printer required
🌐 Distributed network (coming soon)Route jobs to decentralized peer-to-peer printer networks, or register your own printer to earn revenueNothing — or a printer to earn

All three modes use the same MCP tools and CLI commands. An agent can seamlessly fall back from a busy local printer to a fulfillment center — all in one workflow.

Why Kiln?

  • One control plane, any printer — OctoPrint, Moonraker, Bambu Lab, Prusa Link. Manage a mixed fleet from one place.
  • AI-native — 273 MCP tools built for AI agents. Not a web UI with an API bolted on.
  • Prints don't fail silently — Cross-printer learning, automatic failure rerouting, preflight safety checks on every job.
  • Search → Slice → Print — Browse MyMiniFactory, Cults3D, Thangs, GrabCAD, Etsy (and legacy Thingiverse), auto-slice with PrusaSlicer or OrcaSlicer, print — all from one agent conversation.
  • Safety at scale — 28 per-printer safety profiles, G-code validation, heater watchdog, tamper-proof audit logs. Enterprise adds encrypted G-code at rest with key rotation, lockable profiles, RBAC, SSO, fleet site grouping, per-project cost tracking, and PostgreSQL HA.

Architecture

graph TD
    A["🤖 AI Agent<br/><sub>Claude · GPT · Custom</sub>"]
    A -->|"CLI or MCP"| B["⚙️ Kiln<br/><sub>CLI + MCP Server</sub>"]

    B --> C["🖨️ Your Printers"]
    B --> F["🏭 Fulfillment"]
    B --> N["🌐 Distributed Network<br/><sub>(coming soon)</sub>"]
    B --> D["🛒 Marketplaces"]

    C --> E1["OctoPrint"]
    C --> E2["Moonraker"]
    C --> E3["Bambu"]
    C --> E4["Prusa Link"]
    C --> E5["Elegoo"]

    F --> F1["Craftcloud"]

    N --> N1["Remote Printers"]

    D --> I["MyMiniFactory"]
    D --> J["Cults3D"]
    D --> K["Thangs"]
    D --> L["GrabCAD"]
    D --> M["Etsy"]
    D --> H["Thingiverse (deprecated)"]

    style A fill:#1a1a2e,stroke:#e94560,color:#fff
    style B fill:#16213e,stroke:#0f3460,color:#fff
    style C fill:#0f3460,stroke:#e94560,color:#fff
    style F fill:#0f3460,stroke:#27ae60,color:#fff
    style N fill:#0f3460,stroke:#f39c12,color:#fff
    style D fill:#0f3460,stroke:#533483,color:#fff
    style E1 fill:#2d2d44,stroke:#e94560,color:#fff
    style E2 fill:#2d2d44,stroke:#e94560,color:#fff
    style E3 fill:#2d2d44,stroke:#e94560,color:#fff
    style E4 fill:#2d2d44,stroke:#e94560,color:#fff
    style F1 fill:#2d2d44,stroke:#27ae60,color:#fff
    style F2 fill:#2d2d44,stroke:#27ae60,color:#fff
    style N1 fill:#2d2d44,stroke:#f39c12,color:#fff
    style H fill:#2d2d44,stroke:#533483,color:#fff
    style I fill:#2d2d44,stroke:#533483,color:#fff
    style J fill:#2d2d44,stroke:#533483,color:#fff

Packages

This monorepo contains two packages:

PackageDescriptionEntry Point
kilnCLI + MCP server for multi-printer control (OctoPrint, Moonraker, Bambu, Elegoo, Prusa Link)kiln or python -m kiln
octoprint-cliLightweight standalone CLI for OctoPrint-only setupsoctoprint-cli

Prerequisites

Before installing Kiln, you need your printer's LAN details (Ethernet or Wi-Fi):

PrinterTypeWhat You Need
Prusa MK4/XL/Mini+prusaconnectIP address + API key (both in Settings > Network > PrusaLink on the printer's LCD)
OctoPrint (any printer)octoprintOctoPrint URL + API key (Settings > API in OctoPrint web UI)
Klipper/MoonrakermoonrakerMoonraker URL (usually http://<ip>:7125)
Bambu LabbambuIP address + LAN access code + serial number (all on the printer's LCD)
Elegoo (SDCP printers)elegooIP address only — no authentication required. For Neptune 4/OrangeStorm Giga, use moonraker instead.

Kiln only needs IP reachability on your local LAN. Ethernet-only printers are fully supported.

Optional: Install PrusaSlicer or OrcaSlicer to slice STL files directly from Kiln (brew install --cask prusaslicer on macOS).

Quick Start

Kiln CLI

# One-line install (clones repo + installs via pipx)
git clone https://github.com/codeofaxel/Kiln.git ~/.kiln/src && ~/.kiln/src/install.sh

# Or install manually from a local clone
pip install -e ./kiln

# Discover printers on your network (mDNS + HTTP probe)
kiln discover

# Add your printer (pick your type from the Prerequisites table)
kiln auth --name my-printer --host http://octopi.local --type octoprint --api-key YOUR_KEY
# Other printer types:
# kiln auth --name prusa --host http://192.168.1.100 --type prusaconnect --api-key YOUR_KEY
# kiln auth --name klipper --host http://192.168.1.100:7125 --type moonraker
# kiln auth --name bambu --host 192.168.1.100 --type bambu --access-code LAN_CODE --serial SERIAL
# If discovery misses your printer (common on WSL/VLANs), connect directly by IP with kiln auth.

# Check printer status
kiln status

# Upload and print a file
kiln upload model.gcode
kiln print model.gcode

# Slice an STL and print in one step
kiln slice model.stl --print-after

# Batch print multiple files
kiln print *.gcode --queue

# Monitor a running print
kiln wait

# Take a webcam snapshot
kiln snapshot --save photo.jpg

# View print history
kiln history --status completed

# All commands support --json for agent consumption
kiln status --json

Ethernet-Only Printers (No Wi-Fi)

Kiln works the same over Ethernet and Wi-Fi because it talks to printer APIs over LAN IP.

# 1. Connect printer and host to the same router/switch
# 2. Find printer IP from the printer UI or your router DHCP client list
# 3. Verify the printer endpoint responds:
curl http://<printer-ip>/api/version                    # OctoPrint
curl http://<printer-ip>:7125/server/info               # Moonraker
curl -H "X-Api-Key: YOUR_KEY" http://<printer-ip>/api/v1/status   # Prusa Link

# 4. Register directly by IP (no discovery required)
kiln auth --name my-printer --host http://<printer-ip> --type prusaconnect --api-key YOUR_KEY

Linux / WSL 2

Kiln runs natively on Linux and Ubuntu under WSL 2.

Option 1: pipx (recommended)

pipx installs Kiln into its own isolated environment and puts the kiln command on your PATH — works from any directory, no virtualenv to manage.

Note: The pip package name is kiln3d (not kiln). This matters for pipx uninstall, pip show, etc. The CLI command is still kiln.

# One-time: install pipx
sudo apt install pipx
pipx ensurepath   # adds ~/.local/bin to PATH (restart your shell after)

# Clone and install
git clone https://github.com/codeofaxel/Kiln.git
cd Kiln
pipx install ./kiln

# System dependencies (optional but recommended)
sudo apt install prusa-slicer   # Required for slicing STL → G-code
sudo apt install openscad        # Required only for text-to-3D generation

# Verify
kiln verify

Uninstall / Update

# Uninstall (package name is kiln3d, not kiln)
pipx uninstall kiln3d

# Update to latest version (if installed from a git clone)
cd Kiln
git pull
pipx install --force ./kiln

# Check what pipx has installed (useful for troubleshooting)
pipx list

Option 2: virtualenv

If you prefer a manual virtualenv:

python3 -m venv ~/.kiln-venv
source ~/.kiln-venv/bin/activate

git clone https://github.com/codeofaxel/Kiln.git
cd Kiln
pip install -e ./kiln            # includes all printer backends (OctoPrint, Moonraker, Bambu, Elegoo, Prusa Link)

kiln verify

Tip: Add source ~/.kiln-venv/bin/activate to your ~/.bashrc so the kiln command is always available when you open a terminal.

WSL 2 networking note: WSL 2 uses a virtual network (NAT), so mDNS printer discovery (kiln discover) will not find printers on your home network. Instead, connect directly by IP (same flow for Ethernet-only printers):

# 1. Find your printer's IP (check your router or the printer's LCD/web UI)
# 2. Verify connectivity from WSL
curl http://192.168.1.100:7125/server/info                              # Moonraker (Klipper)
curl http://192.168.1.100/api/version                                   # OctoPrint
curl -H "X-Api-Key: YOUR_KEY" http://192.168.1.100/api/v1/status       # Prusa Link
# Bambu printers use MQTT — just ensure port 8883 is reachable:
# nc -zv 192.168.1.100 8883

# 3. Register the printer with Kiln (pick your type)
kiln auth --name my-printer --host http://192.168.1.100:7125 --type moonraker
# kiln auth --name prusa --host http://192.168.1.100 --type prusaconnect --api-key YOUR_KEY
# kiln auth --name bambu --host 192.168.1.100 --type bambu --access-code LAN_CODE --serial SERIAL

# 4. Check printer status
kiln status

If PrusaSlicer is not in your PATH, set it explicitly:

export KILN_SLICER_PATH=/path/to/prusa-slicer

Bambu TLS security defaults: Kiln now uses certificate pinning (pin mode) for Bambu by default. On first successful connection, the printer certificate fingerprint is pinned (TOFU) in ~/.kiln/bambu_tls_pins.json. Advanced overrides:

# Strict CA/hostname validation (usually fails on stock self-signed printers)
export KILN_BAMBU_TLS_MODE=ca

# Legacy behavior (no certificate validation) - use only on trusted LANs
export KILN_BAMBU_TLS_MODE=insecure

# Optional explicit pin (SHA-256 fingerprint, hex with or without colons)
export KILN_BAMBU_TLS_FINGERPRINT=0123abcd...

Bambu webcam snapshots require ffmpeg for RTSP frame capture. Install it if you want vision monitoring on Bambu printers:

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

Without ffmpeg, Bambu printers will work normally but can_snapshot will be False and vision monitoring tools won't capture frames.

CLI Commands

kiln discover                              # Scan LAN for printers (mDNS + HTTP probe)
kiln auth --name N --host H --type T       # Save printer credentials
kiln doctor-prusa [--json]                 # Prusa Link diagnostics (endpoints + storage roots)
kiln status [--json]                       # Printer state + job progress
kiln files [--json]                        # List files on printer
kiln upload <file> [--json]                # Upload G-code file
kiln print <files>... [--queue] [--json]   # Start printing (supports batch + queue)
kiln cancel [--json]                       # Cancel current print
kiln pause [--json]                        # Pause current print
kiln resume [--json]                       # Resume paused print
kiln temp [--tool N] [--bed N] [--json]    # Get/set temperatures
kiln gcode <cmds>... [--json]              # Send raw G-code
kiln printers [--json]                     # List saved printers
kiln use <name>                            # Switch active printer
kiln remove <name>                         # Remove a saved printer
kiln preflight [--material MAT] [--json]   # Pre-print safety checks
kiln slice <file> [--print-after] [--json] # Slice STL/3MF to G-code
kiln snapshot [--save PATH] [--json]       # Capture webcam snapshot
kiln wait [--timeout N] [--json]           # Wait for print to finish
kiln history [--status S] [--json]         # View past prints
kiln order materials [--json]              # List fulfillment materials
kiln order quote <file> -m MAT [--json]   # Get manufacturing quote
kiln order place <quote_id> [--json]      # Place a fulfillment order
kiln order status <order_id> [--json]     # Track order status
kiln order cancel <order_id> [--json]     # Cancel an order
kiln cost <file> [--material PLA] [--json]    # Estimate print cost
kiln material set|show|spools|add-spool       # Material tracking
kiln level [--status] [--trigger] [--json]    # Bed leveling triggers
kiln stream [--port 8081] [--stop] [--json]   # Webcam MJPEG proxy
kiln sync status|now|configure                # Cloud sync
kiln plugins list|info                        # Plugin management
kiln generate "a phone stand" --provider meshy --json   # Generate 3D model from text (meshy/tripo3d/stability/gemini/openscad)
kiln generate-status <job_id> --json                    # Check generation status
kiln generate-download <job_id> -o ./models --json      # Download generated model
kiln firmware status --json                # Check for firmware updates
kiln firmware update [--component klipper] # Apply firmware updates
kiln firmware rollback <component>         # Roll back firmware
kiln network register --name N --location L # Register printer on distributed network (coming soon)
kiln network find --material PLA           # Find network printers by material (coming soon)
kiln network submit URL --material PLA     # Submit job to distributed network (coming soon)
kiln network status <job_id>               # Check network job status (coming soon)
kiln network list                          # List your registered network printers (coming soon)
kiln network update <id> --available       # Update printer availability (coming soon)
kiln setup                                 # Interactive printer setup wizard
kiln serve                                 # Start MCP server
kiln rest [--port 8420] [--tier full] [--auth-token TOKEN]  # Start REST API server
kiln agent [--model openai/gpt-4o]         # Interactive agent REPL (any LLM)

The REST API can be deployed to Fly.io for production use — see deploy.sh for one-command deployment.

Global option: --printer <name> to target a specific printer per-command.

MCP Server

# Start the MCP server (uses printer from ~/.kiln/config.yaml)
kiln serve

# Or override with environment variables
export KILN_PRINTER_HOST=http://192.168.1.100    # Your printer's IP or hostname
export KILN_PRINTER_API_KEY=your_api_key          # API key (OctoPrint/Moonraker/Prusa Link)
export KILN_PRINTER_TYPE=prusaconnect             # octoprint | moonraker | bambu | prusaconnect
kiln serve

Claude Code Integration

Add to your project's .claude/settings.json (or global ~/.claude/settings.json):

{
  "mcpServers": {
    "kiln": {
      "command": "kiln",
      "args": ["serve"]
    }
  }
}

Note: Claude Code uses your ~/.kiln/config.yaml for printer credentials (set up via kiln setup or kiln auth). No env vars needed if you've already configured a printer.

Claude Desktop Integration

Add to ~/.config/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "kiln": {
      "command": "python",
      "args": ["-m", "kiln", "serve"],
      "env": {
        "KILN_PRINTER_HOST": "http://192.168.1.100",
        "KILN_PRINTER_API_KEY": "your_key",
        "KILN_PRINTER_TYPE": "prusaconnect"
      }
    }
  }
}

Tip: Replace KILN_PRINTER_TYPE with your backend: octoprint, moonraker, bambu, or prusaconnect. Or skip env vars entirely if you've already run kiln setup.

Multi-Model Support (OpenRouter / Any LLM)

Kiln works with any LLM that supports OpenAI-compatible function calling — not just Claude.

# Interactive agent REPL with any model via OpenRouter
export KILN_OPENROUTER_KEY=sk-or-...
kiln agent --model openai/gpt-4o
kiln agent --model anthropic/claude-sonnet-4
kiln agent --model meta-llama/llama-3.1-70b-instruct --tier essential

# REST API mode — any HTTP client can call Kiln tools
export KILN_API_AUTH_TOKEN=CHANGE_ME_long_random_token
kiln rest --port 8420 --tier full
# POST http://localhost:8420/api/tools/printer_status
# GET  http://localhost:8420/api/tools

# Install with REST API support
pip install kiln3d[rest]

When binding REST to non-localhost addresses (for hosted deployments), set KILN_API_AUTH_TOKEN or pass --auth-token.

Tool tiers automatically match model capability: essential (15 tools) for smaller models, standard (46 tools) for mid-range, full (105 tools) for Claude/GPT-4/Gemini. All 273 tools are available via MCP (kiln serve).

OctoPrint CLI

# Install
pip install -e ./octoprint-cli

# Initialize config
octoprint-cli init --host http://octopi.local --api-key YOUR_KEY

# Use
octoprint-cli status
octoprint-cli files
octoprint-cli print myfile.gcode --confirm

MCP Tools (Selected)

The Kiln MCP server (kiln serve) exposes 273 tools to agents. Key tools are listed below — run kiln tools for the complete catalog.

ToolDescription
printer_statusGet printer state, temperatures, job progress
printer_filesList available G-code files
upload_fileUpload a local G-code file to the printer
start_printStart printing a file
cancel_printCancel the active print job
pause_printPause the active print
resume_printResume a paused print
set_temperatureSet hotend and/or bed temperature
preflight_checkRun safety checks before printing
send_gcodeSend raw G-code commands
validate_gcodeValidate G-code without sending
fleet_statusGet status of all registered printers
register_printerAdd a printer to the fleet
submit_jobSubmit a print job to the queue
job_statusCheck status of a queued job
queue_summaryOverview of the job queue
cancel_jobCancel a queued or running job
recent_eventsGet recent events from the event bus
kiln_healthSystem health check (version, uptime, modules)
register_webhookRegister a webhook for event notifications
list_webhooksList all registered webhooks
delete_webhookRemove a webhook endpoint
search_all_modelsSearch MyMiniFactory, Cults3D, Thangs, GrabCAD, Etsy, and Thingiverse (deprecated) simultaneously
marketplace_infoShow connected marketplaces and setup hints
search_modelsSearch a single marketplace for 3D models
model_detailsGet details for a marketplace model
model_filesList files for a marketplace model
download_modelDownload a model file from a marketplace
download_and_uploadDownload from any marketplace and upload to printer in one step
browse_modelsBrowse popular/newest/featured models
list_model_categoriesList marketplace categories
slice_modelSlice an STL/3MF file to G-code
find_slicer_toolDetect installed slicer (PrusaSlicer/OrcaSlicer)
slice_and_printSlice a model then upload and print in one step
printer_snapshotCapture a webcam snapshot from the printer
fulfillment_materialsList materials from external print services (Craftcloud)
fulfillment_quoteGet a manufacturing quote for a 3D model
fulfillment_orderPlace an order based on a quote
fulfillment_order_statusTrack a fulfillment order
fulfillment_cancelCancel a fulfillment order
estimate_costEstimate print cost from G-code file
list_materialsList available material profiles
set_materialSet loaded material on a printer
get_materialGet loaded material for a printer
check_material_matchVerify material matches expected
list_spoolsList spool inventory
add_spoolAdd a spool to inventory
remove_spoolRemove a spool from inventory
bed_level_statusGet bed leveling status for a printer
trigger_bed_levelTrigger bed leveling on a printer
set_leveling_policyConfigure auto-leveling policy
webcam_streamStart/stop/status MJPEG stream proxy
cloud_sync_statusGet cloud sync status
cloud_sync_nowTrigger immediate sync
cloud_sync_configureConfigure cloud sync settings
list_pluginsList installed plugins
plugin_infoGet details for a specific plugin
await_print_completionPoll until a print job finishes (completed/failed/cancelled/timeout)
compare_print_optionsSide-by-side local vs. fulfillment cost comparison
analyze_print_failureDiagnose a failed print job with causes and recommendations
validate_print_qualityPost-print quality assessment with snapshot and event analysis
generate_modelGenerate a 3D model from text (Meshy, Tripo3D, Stability AI, Gemini Deep Think, or OpenSCAD)
generation_statusCheck the status of a model generation job
download_generated_modelDownload a completed generated model with mesh validation
await_generationWait for a generation job to complete (polling)
generate_and_printFull pipeline: generate -> validate -> slice -> upload -> print
validate_generated_meshValidate an STL/OBJ mesh for printing readiness
firmware_statusCheck for available firmware updates on the printer
update_firmwareStart a firmware update (all or specific component)
rollback_firmwareRoll back a firmware component to its previous version
print_historyGet recent print history with success/failure tracking
printer_statsAggregate stats for a printer (total prints, success rate, avg duration)
annotate_printAdd notes to a completed print record
save_agent_noteSave a persistent note/preference that survives across sessions
get_agent_contextRetrieve all stored agent memory for context
delete_agent_noteRemove a stored note or preference
list_safety_profilesList all bundled printer safety profiles (28 models)
get_safety_profileGet temperature/feedrate/flow limits for a specific printer
validate_gcode_safeValidate G-code against printer-specific safety limits
list_slicer_profiles_toolList all bundled slicer profiles with recommended settings
get_slicer_profile_toolGet full slicer settings (speeds, retraction, temps) for a printer
get_printer_intelligenceFirmware quirks, material compatibility, calibration guidance
get_material_recommendationRecommended hotend/bed/fan settings for a material on a printer
troubleshoot_printerDiagnose printer issues from known failure modes database
list_print_pipelinesList available pre-validated pipelines (quick_print, calibrate, benchmark)
run_quick_printFull pipeline: slice → validate → upload → print in one shot
run_calibrateHome → bed level → calibration guidance pipeline
run_benchmarkSlice → upload → stats report (manual start)
monitor_print_visionCapture snapshot + printer state + phase hints; agent's vision model analyzes for defects
watch_printPoll printer with periodic snapshots; returns batch for agent vision review
record_print_outcomeRecord print quality outcome with safety-validated settings
get_printer_insightsQuery cross-printer learning: success rates, failure breakdown, material stats
suggest_printer_for_jobRank printers by historical success for a file/material combination
recommend_settingsRecommend print settings (temps, speed, slicer profile) from historical successes
network_register_printerRegister a local printer on a distributed manufacturing network (coming soon)
network_update_printerUpdate a printer's availability on the distributed network (coming soon)
network_list_printersList printers registered by this account on the distributed network (coming soon)
network_find_printersSearch for available printers on the distributed network by material/location (coming soon)
network_submit_jobSubmit a print job to a distributed manufacturing network (coming soon)
network_job_statusCheck the status of a job on the distributed network (coming soon)
billing_statusGet billing status, fee policy, and payment methods
billing_summaryAggregated billing summary
billing_historyRecent billing charges and payment outcomes
billing_setup_urlGet URL to link a payment method (Stripe)
safety_auditAudit safety compliance across jobs
safety_settingsGet current safety and auto-print settings
safety_statusComprehensive safety status check
delete_fileDelete a file from the printer
cache_modelCache a downloaded model locally for reuse
search_cached_modelsSearch cached models by name, source, or tags
list_cached_modelsList all cached models with metadata
get_cached_modelGet details and local path for a cached model
delete_cached_modelRemove a model from the local cache
backup_databaseCreate a timestamped backup of the Kiln SQLite database
verify_audit_integrityVerify integrity of the audit log (hash chain validation)
clean_agent_memoryPrune stale or expired agent memory entries
list_trusted_printersList printers in the trust store with verification status
trust_printerAdd a printer to the trust store (fingerprint + TLS pinning)
untrust_printerRemove a printer from the trust store
pipeline_statusGet real-time status of a running pipeline
pipeline_pausePause a running pipeline at the current step boundary
pipeline_resumeResume a paused pipeline
pipeline_abortAbort a running or paused pipeline
pipeline_retry_stepRetry the failed step in a pipeline
consumer_onboardingStep-by-step guide for users without a 3D printer
validate_shipping_addressValidate and normalize a shipping address
recommend_materialRecommend material by use case (decorative, functional, outdoor, etc.)
estimate_priceInstant price estimate before requesting a full quote
estimate_timelineOrder-to-delivery timeline with per-stage breakdown
fulfillment_compare_providersSide-by-side quotes from all fulfillment providers
fulfillment_filter_materialsSearch/filter materials by technology, color, price
fulfillment_batch_quoteQuote multiple parts in one operation (assemblies)
fulfillment_provider_healthHealth status of all fulfillment providers
fulfillment_order_historyView past orders for status review or reorder
fulfillment_reorderLook up past order details for easy reordering
fulfillment_insurance_optionsShipping insurance/protection options with pricing
supported_shipping_countriesList countries supported for fulfillment shipping
export_audit_trailExport audit trail as JSON/CSV with date range, tool, action, and session filters (Enterprise)
lock_safety_profileAdmin-lock a safety profile to prevent agent modifications (Enterprise)
unlock_safety_profileUnlock a previously locked safety profile (Enterprise)
manage_team_memberAdd, remove, or update team member roles (admin/engineer/operator) (Enterprise)
printer_usage_summaryPer-printer usage summary for overage billing (Enterprise)
uptime_reportRolling uptime metrics (1h/24h/7d/30d) with SLA tracking (Enterprise)
encryption_statusCheck G-code encryption status and key configuration (Enterprise)
report_printer_overageReport printer overage billing details (Enterprise)
configure_ssoConfigure SSO provider (OIDC/SAML) with IdP settings (Enterprise)
sso_login_urlGenerate SSO login URL for OIDC/SAML authentication (Enterprise)
sso_exchange_codeExchange authorization code for session token via SSO (Enterprise)
sso_statusCheck SSO configuration and provider status (Enterprise)
rotate_encryption_keyRe-encrypt all G-code files with a new key (Enterprise)
database_statusCheck database backend (SQLite/PostgreSQL) health and config (Enterprise)
list_fleet_sitesList all physical sites in the fleet with printer counts (Enterprise)
fleet_status_by_siteFleet status grouped by physical site (Enterprise)
update_printer_siteAssign a printer to a physical site/location (Enterprise)
create_projectCreate a client project for cost allocation (Enterprise)
log_project_costLog a cost entry (material, printer time, labor, etc.) against a project (Enterprise)
project_cost_summaryAggregate cost summary with budget tracking for a project (Enterprise)
client_cost_reportCross-project cost report for a client (Enterprise)

Supported Printers

BackendStatusPrinters
OctoPrintStableAny OctoPrint-connected printer (Prusa, Ender, custom)
MoonrakerStableKlipper-based printers (Voron, Ratrig, etc.)
BambuStableBambu Lab X1C, P1S, A1 (via LAN MQTT)
Prusa LinkStablePrusa MK4, XL, Mini+ (local REST API — type: prusaconnect)
ElegooStableCentauri Carbon, Saturn, Mars series (via LAN WebSocket/SDCP). Neptune 4/OrangeStorm Giga use Moonraker.

MCP Resources

The server also exposes read-only resources that agents can use for context:

Resource URIDescription
kiln://statusSystem-wide snapshot (printers, queue, events)
kiln://printersFleet listing with idle printers
kiln://printers/{name}Detailed status for a specific printer
kiln://queueJob queue summary and recent jobs
kiln://queue/{job_id}Detail for a specific job
kiln://eventsRecent events (last 50)

Modules

ModuleDescription
server.pyMCP server with tools, resources, and subsystem wiring
printers/Printer adapter abstraction (OctoPrint, Moonraker, Bambu, Elegoo, Prusa Link)
marketplaces/Model marketplace adapters (MyMiniFactory, Cults3D, Thangs, GrabCAD, Etsy, Thingiverse — deprecated)
slicer.pySlicer integration (PrusaSlicer, OrcaSlicer) with auto-detection
registry.pyFleet registry for multi-printer management
queue.pyPriority job queue with status tracking
scheduler.pyBackground job dispatcher with history-based smart routing
events.pyPub/sub event bus with history
persistence.pySQLite storage for jobs, events, and settings
webhooks.pyEvent-driven webhook delivery with HMAC signing
auth.pyOptional API key authentication with scope-based access
billing.pyFee tracking for fulfillment and network-routed jobs
discovery.pyNetwork printer discovery (mDNS + HTTP probe)
generation/Text-to-model generation providers (Meshy, Tripo3D, Stability AI, Gemini Deep Think, OpenSCAD) with auto-discovery, mesh validation, and printability analysis
consumer.pyConsumer workflow for non-printer users (address validation, material recommendations, timeline/price estimation, onboarding)
fulfillment/External manufacturing service adapters (Craftcloud) with intelligence layer (provider health, multi-provider comparison, batch quoting, retry/fallback, order history, shipping insurance)
cost_estimator.pyPrint cost estimation from G-code analysis
materials.pyMulti-material and spool tracking
bed_leveling.pyAutomated bed leveling trigger system
streaming.pyMJPEG webcam streaming proxy
cloud_sync.pyCloud sync for printer configs and job history
plugins.pyPlugin system with entry-point discovery
gcode.pyG-code safety validator with per-printer limits
safety_profiles.pyBundled safety database (30 printer models, temps/feedrates/flow)
slicer_profiles.pyBundled slicer profiles (auto-generates .ini files per printer)
printer_intelligence.pyPrinter knowledge base (firmware quirks, materials, failure modes)
pipelines.pyPre-validated print pipelines (quick_print, calibrate, benchmark)
tool_schema.pyOpenAI function-calling schema converter (MCP → OpenAI format)
tool_tiers.pyTool tier definitions (essential/standard/full) for model capability matching
agent_loop.pyGeneric agent loop for any OpenAI-compatible API (OpenRouter, direct, etc.)
openrouter.pyOpenRouter integration with model catalog and auto-tier detection
rest_api.pyREST API wrapper (FastAPI) exposing all MCP tools as HTTP endpoints
data/Bundled JSON databases (safety profiles, slicer profiles, printer intelligence)
payments/Payment processing (Stripe, Circle USDC, crypto rails)
gateway/Distributed manufacturing network gateway (coming soon)
heater_watchdog.pyAuto-cooldown watchdog for idle heaters
licensing.pyLicense tier management (Free/Pro/Business/Enterprise, offline-first)
sso.pySSO authentication (OIDC/SAML) with IdP role mapping and email domain allowlists
gcode_encryption.pyG-code encryption at rest (Fernet/PBKDF2 via KILN_ENCRYPTION_KEY)
printer_billing.pyPer-printer overage billing (20 included, $15/mo each additional)
teams.pyTeam seat management with RBAC (admin/engineer/operator roles)
uptime.pyRolling uptime health monitoring (1h/24h/7d/30d windows, 99.9% SLA target)
project_costs.pyPer-project cost tracking for manufacturing bureaus (material, labor, printer time, fulfillment)
wallets.pyCrypto wallet configuration (Solana/Ethereum for donations and fees)
cli/Click CLI with 107 commands and JSON output
deploy/Kubernetes manifests and Helm chart for on-prem Enterprise deployment

Authentication (Optional)

Kiln supports optional API key authentication for MCP tools. Disabled by default.

# Enable auth
export KILN_AUTH_ENABLED=1
export KILN_AUTH_KEY=your_secret_key

# Clients provide their key via
export KILN_MCP_AUTH_TOKEN=your_secret_key

Scopes: read, write, admin. Read-only tools (status, list) never require auth.

Webhooks

Register HTTP endpoints to receive real-time event notifications:

register_webhook(url="https://example.com/hook", events=["job.completed", "print.failed"])

Payloads are signed with HMAC-SHA256 when a secret is provided.

Security defaults:

  • Webhook redirects are blocked by default (KILN_WEBHOOK_ALLOW_REDIRECTS=0).
  • If redirects are enabled, each hop is SSRF-validated and HTTPS→HTTP downgrade is blocked.

Printer Discovery

Kiln can automatically find printers on your local network:

kiln discover

Discovery uses mDNS/Bonjour and HTTP subnet probing to find OctoPrint, Moonraker, Bambu, and Prusa Link printers. If discovery returns no results, register printers directly by IP with kiln auth (works for both Ethernet and Wi-Fi LAN setups).

Third-Party Plugins

Third-party entry-point plugins are default-deny in production (KILN_PLUGIN_POLICY=strict). Allow only specific plugins with:

export KILN_ALLOWED_PLUGINS=my_plugin,other_plugin

For temporary migration compatibility, permissive mode can be enabled:

export KILN_PLUGIN_POLICY=permissive

Model Marketplaces

Kiln includes adapters for discovering and downloading 3D models from popular marketplaces:

MarketplaceStatusFeatures
MyMiniFactoryStableSearch, details, download. Primary marketplace — recommended for new integrations.
Cults3DStableSearch, details (metadata-only, no direct download)
ThangsStableSearch, details, download. Geometric search across multiple sources.
GrabCADStableSearch, details, download. Engineering-focused CAD model library.
EtsyStableSearch, details, download. Digital download 3D-printable listings.
ThingiverseDeprecatedSearch, browse, download, categories. Acquired by MyMiniFactory (Feb 2026). API may be sunset or merged; prefer MyMiniFactory adapter.

Configure credentials for the marketplaces you use:

export KILN_THINGIVERSE_TOKEN=your_token       # Thingiverse (deprecated — acquired by MyMiniFactory, Feb 2026)
export KILN_MMF_API_KEY=your_key               # MyMiniFactory
export KILN_CULTS3D_USERNAME=your_username      # Cults3D
export KILN_CULTS3D_API_KEY=your_key            # Cults3D
export KILN_THANGS_API_KEY=your_key             # Thangs
export KILN_GRABCAD_API_KEY=your_key            # GrabCAD
export KILN_ETSY_API_KEY=your_key               # Etsy

All configured marketplaces are searched simultaneously via search_all_models. Agents can inspect details, download files, and upload directly to a printer — enabling a full design-to-print workflow without human intervention.

AI Model Generation

Kiln's universal generation adapter auto-discovers text-to-3D providers from environment variables. Set any of the following and the provider is available instantly:

export KILN_MESHY_API_KEY=your_key         # Meshy — cloud text-to-3D
export KILN_TRIPO3D_API_KEY=your_key       # Tripo3D — high-quality cloud text-to-3D
export KILN_STABILITY_API_KEY=your_key     # Stability AI — synchronous 3D generation
export KILN_GEMINI_API_KEY=your_key        # Gemini Deep Think — AI-reasoned text/sketch-to-3D

OpenSCAD is also available for local parametric generation (no API key needed — just install the openscad binary).

ProviderTypeAsyncOutput Formats
MeshyCloudYesSTL, OBJ, GLB
Tripo3DCloudYesSTL, OBJ, GLB
Stability AICloudNo (synchronous)GLB
Gemini Deep ThinkCloud + LocalNo (synchronous)STL
OpenSCADLocalNo (synchronous)STL

Generated models are automatically validated for printability (manifold check, triangle count, bounding box dimensions) before printing. The registry pattern means new providers can be added in under 100 lines.

Slicer Integration

Kiln wraps PrusaSlicer and OrcaSlicer for headless slicing. Auto-detects installed slicers on PATH, macOS app bundles, or via KILN_SLICER_PATH.

# Slice an STL to G-code
kiln slice model.stl

# Slice and immediately print
kiln slice model.stl --print-after

# Supported formats: STL, 3MF, STEP, OBJ, AMF

Webcam Snapshots

Capture point-in-time images from printer webcams for monitoring and quality checks:

# Save snapshot to file
kiln snapshot --save photo.jpg

# Get base64-encoded snapshot (for agents)
kiln snapshot --json

Supported on OctoPrint, Moonraker, Prusa Link, and Bambu (requires ffmpeg for RTSP capture — see install note above). Agents use the printer_snapshot MCP tool.

Fulfillment Services

Print through external manufacturing services — no 3D printer required, or use alongside your own printers for overflow, specialty materials, or production runs. Kiln handles the entire workflow from idea to delivered product:

# Get material recommendations for your use case
kiln order recommend functional --budget budget

# Instant price estimate (no API call needed)
kiln order estimate FDM --x 80 --y 60 --z 40

# Estimate delivery timeline
kiln order timeline SLA --country US

# List available materials (FDM, SLA, SLS, MJF, etc.)
kiln order materials

# Get a quote for a model
kiln order quote model.stl --material pla-white --quantity 2

# Validate your shipping address
kiln order validate-address --street "123 Main St" --city Austin --state TX --postal-code 78701 --country US

# View shipping insurance options
kiln order insurance 45.00

# Place the order
kiln order place q-abc123 --shipping std

# Track order status
kiln order status o-def456

# View order history
kiln order history

# List supported shipping countries
kiln order countries

Configure your fulfillment provider:

# Craftcloud — works out of the box (no API key required for public endpoints)
export KILN_FULFILLMENT_PROVIDER=craftcloud

# Optional: API key to associate orders with a Craftcloud account
export KILN_CRAFTCLOUD_API_KEY=your_key

# Optional: WebSocket price polling (recommended by Craftcloud, requires pip install websockets msgpack)
export KILN_CRAFTCLOUD_USE_WEBSOCKET=1

# Craftcloud staging (for testing)
export KILN_CRAFTCLOUD_BASE_URL=https://api-stg.craftcloud3d.com

# Optional: explicitly select a provider
export KILN_FULFILLMENT_PROVIDER=craftcloud

Agents use the consumer workflow MCP tools: consumer_onboarding for guided setup, recommend_material for material selection, estimate_price / estimate_timeline for quick estimates, fulfillment_compare_providers for cross-provider quotes, fulfillment_batch_quote for multi-part assemblies, and fulfillment_order_history / fulfillment_reorder for repeat orders.

Development

# Create a virtualenv first (required on modern Ubuntu/Debian/WSL)
python3 -m venv .venv && source .venv/bin/activate

# Install both packages in dev mode
pip install -e "./kiln[dev]"
pip install -e "./octoprint-cli[dev]"

# Run tests (6,339 total)
cd kiln && python3 -m pytest tests/ -v        # 6,100 tests
cd ../octoprint-cli && python3 -m pytest tests/ -v  # 239 tests

Revenue Model

All local printing is free forever — status checks, file management, slicing, fleet control, and printing to your own printers costs nothing.

Kiln charges a 5% platform fee on orders placed through external manufacturing services (kiln order / fulfillment MCP tools), with:

  • First 3 outsourced orders per month free
  • $0.25 minimum / $200 maximum per-order cap

The fee is shown transparently in every quote before you commit.

Licensing Tiers

TierPriceWhat You Get
Free$0All local printing, slicing, marketplace, safety profiles. Job queue (10 jobs). Up to 2 printers. Billing visibility.
Pro$29/moUnlimited printers + fleet orchestration, fleet analytics, unlimited queue depth, cloud sync, priority scheduler. Annual: $23/mo ($276/yr).
Business$99/moEverything in Pro + up to 50 printers, 5 team seats, unlimited fulfillment orders (5% fee), shared hosted MCP server, priority support, custom safety profiles, webhook integrations. Annual: $79/mo ($948/yr).
EnterpriseFrom $499/moEverything in Business + unlimited printers (20 included, $15/mo each after), unlimited seats, role-based access control, dedicated single-tenant MCP server, on-prem/cloud/hybrid deployment, SSO (SAML/OIDC), full audit trail with export, lockable safety profiles, encrypted G-code at rest, 99.9% uptime SLA, dedicated Slack channel. Annual: $399/mo ($4,788/yr).

Run kiln upgrade to activate a license key.

Safety

Kiln is safety-first infrastructure for controlling physical machines:

  • Pre-flight checks validate printer state, temperatures, and files before every print
  • G-code validation blocks dangerous commands (firmware reset, unsafe temperatures)
  • Temperature limits enforce safe maximums (300C hotend, 130C bed)
  • Confirmation required for destructive operations (cancel, raw G-code)
  • Optional authentication with scope-based API keys for multi-user setups
  • Structured errors ensure agents always know when something fails

Brand Assets

Logo files live in docs/assets/:

FileUse
kiln-banner-1280x640.svgGitHub / social media banner
kiln-logo-dark.svgPrimary mark + wordmark (dark bg)
kiln-logo-light.svgMark + wordmark (light bg)
kiln-horizontal-dark.svgHorizontal lockup (dark bg)
kiln-horizontal-light.svgHorizontal lockup (light bg)
kiln-logo-dark-notext.svgMark only (dark bg)
kiln-favicon-256.svgFavicon / app icon
kiln-logo-transparent.svgTransparent bg (for dark UIs)
kiln-logo-transparent-dark.svgTransparent bg (for light UIs)
kiln-pfp-1024.svgSocial media profile picture with subtle glow (1024×1024)
kiln-pfp-1024-flat.svgSocial media profile picture, no glow (1024×1024)
wallpapers/kiln-wallpaper-iphone-*.svgiPhone wallpapers (15, 15 Pro/Max, 16, 16 Pro/Max, 17, 17 Air, 17 Pro/Max)
wallpapers/kiln-wallpaper-macbook-*.svgMacBook wallpapers (Air 13/15, Pro 14/16)

All files are vector SVG — scale to any size.

Documentation

DocumentDescription
LitepaperQuick overview for non-technical readers
WhitepaperFull technical architecture and protocol design
Project DocsComplete reference (CLI, MCP tools, adapters, config)

Support Development

Kiln is free, open-source software. If you find it useful, consider sending a tip:

  • Solana: kiln3d.sol
  • Ethereum: kiln3d.eth

License

MIT License — free for any use. See LICENSE for details.

Reviews

No reviews yet

Sign in to write a review