{"repo":"maziggy/bambuddy","free":true,"listed":false,"github":"https://github.com/maziggy/bambuddy","clone":"git clone https://github.com/maziggy/bambuddy.git","description":"Your Bambu Lab. No Cloud. Your Rules.  Self-hosted command center for Bambu Lab — from one A1 to an entire print farm. ","language":"Python","stars":2802,"topics":["3d-printer","3d-printing","3dprinting","3mf-files","bambu","bambu-studio","bambulab","filament","filamentadmin","gcode","self-hosted","selfhosted"],"license":"AGPL-3.0","category":"dev_tool","readme_excerpt":"<p align=\"center\">\n  <img src=\"static/img/bambuddy_logo_dark.png\" alt=\"Bambuddy Logo\" width=\"300\">\n</p>\n\n<h1 align=\"center\">Bambuddy</h1>\n\n<p align=\"center\">\n  <strong>Your printers. No cloud. Your rules.</strong><br>\n  Self-hosted command center for Bambu Lab &mdash; from one A1 to an entire print farm.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/maziggy/bambuddy/releases\"><img src=\"https://img.shields.io/github/v/release/maziggy/bambuddy?style=flat-square&color=blue&cacheSeconds=3600\" alt=\"Release\"></a>\n  <img src=\"https://github.com/maziggy/bambuddy/actions/workflows/ci.yml/badge.svg?branch=main\">\n  <img src=\"https://github.com/maziggy/bambuddy/actions/workflows/github-code-scanning/codeql/badge.svg\">\n  <img src=\"https://github.com/maziggy/bambuddy/actions/workflows/security.yml/badge.svg\">\n  <a href=\"https://github.com/maziggy/bambuddy/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/maziggy/bambuddy?style=flat-square&cacheSeconds=3600\" alt=\"License\"></a>\n  <a href=\"https://github.com/maziggy/bambuddy/stargazers\"><img src=\"https://img.shields.io/github/stars/maziggy/bambuddy?style=flat-square&cacheSeconds=3600\" alt=\"Stars\"></a>\n  <a href=\"https://github.com/maziggy/bambuddy/issues\"><img src=\"https://img.shields.io/github/issues/maziggy/bambuddy?style=flat-square&cacheSeconds=3600\" alt=\"Issues\"></a>\n  <a href=\"https://discord.gg/aFS3ZfScHM\"><img src=\"https://img.shields.io/discord/1461241694715645994?style=flat-square&logo=discord&logoColor=white&label=Discord&color=5865F2\" alt=\"Discord\"></a>\n  <a href=\"https://github.com/sponsors/maziggy\"><img src=\"https://img.shields.io/badge/GitHub_Sponsors-Sponsor-ea4aaa?style=flat-square&logo=github-sponsors&logoColor=white\" alt=\"GitHub Sponsors\"></a>\n  <a href=\"https://sponsors.bambuddy.cool\"><img src=\"https://img.shields.io/badge/Sponsors_Portal-sponsors.bambuddy.cool-2dd4bf?style=flat-square&logo=heart&logoColor=white\" alt=\"Sponsors Portal\"></a>\n  <a href=\"https://ko-fi.com/maziggy\"><img src=\"https://img.shields.io/badge/Ko--fi-Support-ff5e5b?style=flat-square&logo=ko-fi&logoColor=white\" alt=\"Ko-fi\" target=_blank></a>\n</p>\n\n<p align=\"center\">\n  <sub><strong>Backed by</strong></sub><br>\n  <a href=\"https://northpole3dprinting.com/\"><img src=\"static/img/sponsors/northpole-3d-printing.jpg\" alt=\"North Pole 3D Printing\" height=\"60\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://demo.bambuddy.cool\"><strong>🎮 Try the Live Demo</strong></a> •\n  <a href=\"#-features\">Features</a> •\n  <a href=\"#-screenshots\">Screenshots</a> •\n  <a href=\"#-quick-start\">Quick Start</a> •\n  <a href=\"http://wiki.bambuddy.cool\">Documentation</a> •\n  <a href=\"https://discord.gg/aFS3ZfScHM\">Discord</a> •\n  <a href=\"#-contributing\">Contributing</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://demo.bambuddy.cool\">\n    <img src=\"https://img.shields.io/badge/🎮_Live_Demo-demo.bambuddy.cool-00ae42?style=for-the-badge&labelColor=0a0d14\" alt=\"Live Demo\">\n  </a>\n  <br>\n  <em>Spin up your own private Bambuddy in ~10 seconds — no install, no signup, 30-minute session.</em>\n</p>\n\n---\n\n## 📰 As Featured In\n\n> **\"Bambuddy is the companion app that Bambu Lab should have built from day one.\"**\n> — Adam Conway, [XDA-Developers](https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/)\n\n<p align=\"center\">\n  <a href=\"https://hackaday.com/2026/06/13/bambuddy-says-bye-to-bambu-lab-cloud-services/\"><img src=\"https://img.shields.io/badge/Hackaday-Read-F2A724?style=flat-square&labelColor=000000\" alt=\"Hackaday\"></a>\n  <a href=\"https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/\"><img src=\"https://img.shields.io/badge/XDA--Developers-Read-C8102E?style=flat-square\" alt=\"XDA-Developers\"></a>\n  <a href=\"https://www.howtogeek.com/free-your-bambu-lab-3d-printer-from-the-cloud/\"><img src=\"https://img.shields.io/badge/How--To%20Geek-Read-33A6CA?style=flat-square\" alt=\"How-To Geek\"></a>\n  <a href=\"https://www.makeuseof.com/free-browser-tool-beats-bambu-lab-at-own-game/\"><img src=\"https://img.shields.io/badge/MakeUseOf-Read-E02D2D?style=flat-square\" alt=\"MakeUseOf\"></a>\n  <a href=\"https://www.fabbaloo.com/news/bambuddy-launches-as-open-source-alternative-to-bambu-labs-cloud\"><img src=\"https://img.shields.io/badge/Fabbaloo-Read-F77B0F?style=flat-square\" alt=\"Fabbaloo\"></a>\n  <a href=\"https://itsfoss.com/news/bambuddy-self-hosted-bambu-lab-alternative/\"><img src=\"https://img.shields.io/badge/It's%20FOSS-Read-00B5AD?style=flat-square\" alt=\"It's FOSS\"></a>\n  <a href=\"https://www.igorslab.de/en/bambuddy-the-silent-alternative-to-the-bamboo-cloud/\"><img src=\"https://img.shields.io/badge/Igor's%20Lab-Read-E10000?style=flat-square\" alt=\"Igor's Lab\"></a>\n  <a href=\"https://3druck.com/en/programs/bambuddy-open-source-tool-replaces-bambu-cloud-for-management-and-automation-of-3d-print-jobs-38153226/\"><img src=\"https://img.shields.io/badge/3Druck-Read-0080C0?style=flat-square\" alt=\"3Druck\"></a>\n  <a href=\"https://www.fastblinker.com/bambuddy-the-open-source-solution-thats-revolutionizing-bambu-lab-3d-printer-management/\"><img src=\"https://img.shields.io/badge/FastBlinker-Read-00B0FF?style=flat-square\" alt=\"FastBlinker\"></a>\n</p>\n\nTwo leading 3D-printing publications independently concluded that Bambuddy's feature set **already exceeds Bambu's own cloud**:\n\n> *\"The features seem to exceed those provided by Bambu Lab's own cloud.\"* — [Fabbaloo](https://www.fabbaloo.com/news/bambuddy-launches-as-open-source-alternative-to-bambu-labs-cloud)\n>\n> *\"The list of functions seems so extensive that it even goes beyond what Bambu Lab offers in its own cloud.\"* — [3Druck.com](https://3druck.com/en/programs/bambuddy-open-source-tool-replaces-bambu-cloud-for-management-and-automation-of-3d-print-jobs-38153226/)\n\n📄 **[See all press coverage →](https://bambuddy.cool/press.html)**\n\n---\n\n## 🌐 NEW: Remote Printing with Proxy Mode\n\n<p align=\"center\">\n  <img src=\"docs/images/proxy-mode-diagram.png\" alt=\"Proxy Mode Architecture\" width=\"800\">\n</p>\n\n**Print from anywhere in the world** — Bambuddy's new Proxy Mode acts as a secure relay between your slicer and printer:\n\n- 🔒 **End-to-end TLS encryption** — FTP, file transfer, and camera are transparently proxied with the printer's real TLS certificate\n- 🛡️ **Optional Tailscale integration** — per-VP toggle + Docker socket mount surface the host's Tailscale IP on the VP card, so you know which `100.x.x.x` to paste into the slicer when you want a virtual printer reachable over your tailnet ([setup](https://wiki.bambuddy.cool/features/virtual-printer/)). Bambuddy's self-signed CA import is still required on the slicer side: Bambu Studio / OrcaSlicer validate printer TLS against a bundled BBL CA (not the system trust store), **and** their Add Printer dialog is IP-only (no hostname to match an LE cert against), so a publicly-trusted cert can't help on either dimension. Tailscale's role is the private tunnel (reachability from anywhere, no port forwarding), not cert-import elimination.\n- 🌍 **No cloud dependency** — Direct connection through your own Bambuddy server\n- 🔑 **Uses printer's access code** — No additional credentials needed\n- ⚡ **Full-speed printing** — Transparent TCP proxy, only MQTT is decrypted for IP rewriting\n\nPerfect for remote print farms, traveling makers, or accessing your home printer from work.\n\n👉 **[Setup Guide →](https://wiki.bambuddy.cool/features/virtual-printer/#proxy-mode-new-in-017)**\n\n---\n\n## 🍰 NEW: Integrated Slicing — Slice & Print, All In One Place\n\n**No desktop slicer required.** Drop an STL or 3MF into Bambuddy's File Manager, hit **Slice**, and the result lands as a ready-to-print `.gcode.3mf` in the same folder — without ever opening Bambu Studio or Orca Slicer.\n\n- 🍰 **One-click slicing** — Slice from any browser. The job runs server-side in a [tiny sidecar container](slicer-api/README.md), progress streams back as a toast, and the sliced file appears in your library when it's done.\n- 📱 **Slice from your phone or tablet** — Bambuddy's PWA + the new server-side slicer means you can drop an STL in from mobile and queue a print without ever touching a desktop.\n- 🎒 **Bring your own profiles** — Import a `Printer Preset Bundle` (`.bbscfg`) exported from Bambu Studio: pick a curated **printer + process + filament** triplet from a dropdown in the Slice dialog, no more juggling JSON files.\n- 🔄 **Re-slice for a different printer in one click** — Open any sliced archive in Bambuddy and re-slice it for any printer, including across the single-nozzle ↔ dual-nozzle (H2D / H2D Pro) boundary that BambuStudio's CLI would normally reject. Bambuddy detects the class change and auto-arranges objects laid out for the source bed (e.g. X1C 256×256) so they land safely on the target (e.g. H2D 350×320 with its per-nozzle dead zones).\n- 🍱 **Slice all plates at once** — Multi-plate projects (parted statues, multi-part kits) get a \"Slice all N plates\" toggle in the Slice dialog. One click produces a single `.gcode.3mf` containing every plate's gcode, ready for the printer. The toast shows \"Plate 2 of 5 — Generating G-code (47%)\" as the loop runs.\n- 🔁 **Same dispatch as the rest of Bambuddy** — The sliced output flows into the existing queue / plate-picker / AMS-mapping path, so all the regular conveniences (multi-printer dispatch, AMS routing, scheduled prints) just work.\n\nOptional but recommended — drop the [`slicer-api/` Compose stack](slicer-api/README.md) next to your Bambuddy install and the **Slice** button lights up everywhere.\n\n👉 **[Slicer Integration Guide →](https://wiki.bambuddy.cool/features/slicer-api/)**\n\n---\n\n## 🧩 NEW: Slicer Pipelines — Save a Recipe, Reuse in One Click\n\n**Stop re-picking the same printer + process + filament + bed-type combination every slice.** Save a Slicer **Pipeline** once from the Slice dialog, then apply the whole bundle to any file with a single click — from File Manager, Archives, or MakerWorld imports.\n\n- 🧩 **One-click reuse** — A pipeline captures the entire Slice m","default_branch":"main","files":1625,"tree":[".codeql/codeql-config.yml",".codeql/javascript-bambuddy.qls",".codeql/python-bambuddy.qls",".coverage",".dockerignore",".env.example",".gitattributes",".github/CODEOWNERS",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/bug_report.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature_request.yml",".github/MAINTAINERS.md",".github/PULL_REQUEST_TEMPLATE.md",".github/scripts/ghcr_inject.py",".github/workflows.disabled/ci.yml",".github/workflows/auto-label-area.yml",".github/workflows/ci.yml",".github/workflows/cleanup-ghcr.yml",".github/workflows/codeql.yml",".github/workflows/issue-closed.yml",".github/workflows/repo-stats.yml",".github/workflows/security.yml",".github/workflows/stale.yml",".github/workflows/windows-installer.yml",".gitignore",".gitleaks.toml",".pre-commit-config.yaml",".trivyignore","BACKERS.md","CHANGELOG.md","CODE_OF_CONDUCT.md","CONTRIBUTING.md","DOCKERHUB.md","Dockerfile","Dockerfile.test","LICENSE","README.md","SECURITY.md","UPDATING.md","backend/__init__.py","backend/app/__init__.py","backend/app/api/__init__.py","backend/app/api/routes/__init__.py","backend/app/api/routes/_oidc_helpers.py","backend/app/api/routes/_spoolman_helpers.py","backend/app/api/routes/_url_safety.py","backend/app/api/routes/ams_history.py","backend/app/api/routes/api_keys.py","backend/app/api/routes/archive_purge.py","backend/app/api/routes/archives.py","backend/app/api/routes/auth.py","backend/app/api/routes/bug_report.py","backend/app/api/routes/camera.py","backend/app/api/routes/camwall.py","backend/app/api/routes/cloud.py","backend/app/api/routes/discovery.py","backend/app/api/routes/external_links.py","backend/app/api/routes/filaments.py","backend/app/api/routes/finance.py","backend/app/api/routes/firmware.py","backend/app/api/routes/github_backup.py","backend/app/api/routes/groups.py","backend/app/api/routes/ha_sensors.py","backend/app/api/routes/inventory.py","backend/app/api/routes/kprofiles.py","backend/app/api/routes/labels.py","backend/app/api/routes/library.py","backend/app/api/routes/library_tags.py","backend/app/api/routes/library_trash.py","backend/app/api/routes/library_variants.py","backend/app/api/routes/local_backup.py","backend/app/api/routes/local_presets.py","backend/app/api/routes/maintenance.py","backend/app/api/routes/makerworld.py","backend/app/api/routes/metrics.py","backend/app/api/routes/mfa.py","backend/app/api/routes/notification_templates.py","backend/app/api/routes/notifications.py","backend/app/api/routes/obico.py","backend/app/api/routes/orca_cloud.py","backend/app/api/routes/pending_uploads.py","backend/app/api/routes/pipeline_runs.py","backend/app/api/routes/print_log.py","backend/app/api/routes/print_queue.py","backend/app/api/routes/printer_sensor_history.py","backend/app/api/routes/printers.py","backend/app/api/routes/projects.py","backend/app/api/routes/settings.py","backend/app/api/routes/slice_jobs.py","backend/app/api/routes/slicer_pipelines.py","backend/app/api/routes/slicer_presets.py","backend/app/api/routes/smart_plugs.py","backend/app/api/routes/sponsor_prompt.py","backend/app/api/routes/spoolbuddy.py","backend/app/api/routes/spoolman.py","backend/app/api/routes/spoolman_inventory.py","backend/app/api/routes/support.py","backend/app/api/routes/system.py","backend/app/api/routes/updates.py","backend/app/api/routes/user_notifications.py","backend/app/api/routes/users.py","backend/app/api/routes/virtual_printers.py","backend/app/api/routes/webhook.py","backend/app/api/routes/websocket.py","backend/app/cli.py","backend/app/core/__init__.py","backend/app/core/asyncio_handlers.py","backend/app/core/auth.py","backend/app/core/catalog_defaults.py","backend/app/core/compat.py","backend/app/core/config.py","backend/app/core/database.py","backend/app/core/db_dialect.py","backend/app/core/encryption.py","backend/app/core/local_config.py","backend/app/core/logging_filters.py","backend/app/core/oidc_env.py","backend/app/core/paths.py","backend/app/core/permissions.py","backend/app/core/tasks.py","backend/app/core/trace.py","backend/app/core/websocket.py","backend/app/data/filament_fields.json","backend/app/data/hms_actions.json","backend/app/data/printer_fields.json","backend/app/data/process_fields.json","backend/app/i18n/__init__.py","backend/app/main.py","backend/app/models/__init__.py","backend/app/models/active_print_session.py","backend/app/models/active_print_spoolman.py","backend/app/models/ams_history.py","backend/app/models/ams_label.py","backend/app/models/api_key.py","backend/app/models/archive.py","backend/app/models/auth_ephemeral.py","backend/app/models/bug_report.py","backend/app/models/color_catalog.py","backend/app/models/external_link.py","backend/app/models/filament.py","backend/app/models/filament_sku_settings.py","backend/app/models/finance.py","backend/app/models/github_backup.py","backend/app/models/group.py","backend/app/models/kprofile_note.py","backend/app/models/library.py","backend/app/models/local_preset.py","backend/app/models/location.py","backend/app/models/long_lived_token.py","backend/app/models/maintenance.py","backend/app/models/notification.py","backend/app/models/notification_template.py","backend/app/models/oidc_provider.py","backend/app/models/orca_base_cache.py","backend/app/models/pending_upload.py","backend/app/models/pipeline_run.py","backend/app/models/print_batch.py","backend/app/models/print_log.py","backend/app/models/print_queue.py","backend/app/models/printer.py","backend/app/models/printer_ha_sensor.py","backend/app/models/printer_sensor_history.py","backend/app/models/project.py","backend/app/models/project_bom.py","backend/app/models/settings.py","backend/app/models/shopping_list.py","backend/app/models/slicer_pipeline.py","backend/app/models/slot_preset.py","backend/app/models/smart_plug.py","backend/app/models/smart_plug_energy_snapshot.py","backend/app/models/sponsor_toast_state.py","backend/app/models/spool.py","backend/app/models/spool_assignment.py","backend/app/models/spool_catalog.py","backend/app/models/spool_k_profile.py","backend/app/models/spool_usage_history.py","backend/app/models/spoolbuddy_device.py","backend/app/models/spoolman_k_profile.py","backend/app/models/spoolman_slot_assignment.py","backend/app/models/user.py","backend/app/models/user_email_pref.py","backend/app/models/user_otp_code.py","backend/app/models/user_totp.py","backend/app/models/virtual_printer.py","backend/app/schemas/__init__.py","backend/app/schemas/api_key.py","backend/app/schemas/archive.py","backend/app/schemas/archive_purge.py","backend/app/schemas/auth.py","backend/app/schemas/cloud.py","backend/app/schemas/external_link.py","backend/app/schemas/filament.py","backend/app/schemas/finance.py","backend/app/schemas/github_backup.py","backend/app/schemas/group.py","backend/app/schemas/kprofile.py","backend/app/schemas/library.py","backend/app/schemas/library_trash.py","backend/app/schemas/local_preset.py","backend/app/schemas/location.py","backend/app/schemas/maintenance.py","backend/app/schemas/makerworld.py","backend/app/schemas/notification.py","backend/app/schemas/notification_template.py","backend/app/schemas/orca_cloud.py","backend/app/schemas/pipeline_run.py","backend/app/schemas/print_log.py","backend/app/schemas/print_queue.py","backend/app/schemas/printer.py","backend/app/schemas/printer_ha_sensor.py","backend/app/schemas/project.py","backend/app/schemas/settings.py","backend/app/schemas/slicer.py","backend/app/schemas/slicer_pipeline.py","backend/app/schemas/slicer_presets.py","backend/app/schemas/smart_plug.py","backend/app/schemas/sponsor_prompt.py","backend/app/schemas/spool.py","backend/app/schemas/spool_usage.py","backend/app/schemas/spoolbuddy.py","backend/app/schemas/spoolman.py","backend/app/schemas/timelapse.py","backend/app/schemas/user_notifications.py","backend/app/schemas/virtual_printer.py","backend/app/services/__init__.py","backend/app/services/archive.py","backend/app/services/archive_comparison.py","backend/app/services/archive_purge.py","backend/app/services/backup_path.py","backend/app/services/bambu_cloud.py","backend/app/services/bambu_ftp.py","backend/app/services/bambu_mqtt.py","backend/app/services/bug_report.py","backend/app/services/camera.py","backend/app/services/camera_diagnose.py","backend/app/services/camera_fanout.py","backend/app/services/camera_profiles.py","backend/app/services/design_settings.py","backend/app/services/diagnostic_snapshot.py","backend/app/services/discovery.py","backend/app/services/email_service.py","backend/app/services/export.py","backend/app/services/external_camera.py","backend/app/services/failure_analysis.py","backend/app/services/filament_deficit.py","backend/app/services/filament_requirements.py","backend/app/services/finance_balance.py","backend/app/services/finance_billing.py","backend/app/services/finance_budget.py","backend/app/services/finance_defaults.py","backend/app/services/firmware_check.py","backend/app/services/firmware_update.py","backend/app/services/ftp_profiles.py","backend/app/services/git_providers/__init__.py","backend/app/services/git_providers/base.py","backend/app/services/git_providers/factory.py","backend/app/services/git_providers/forgejo.py","backend/app/services/git_providers/gitea.py","backend/app/services/git_providers/github.py","backend/app/services/git_providers/gitlab.py","backend/app/services/github_backup.py","backend/app/services/github_restore.py","backend/app/services/ha_sensor_manager.py","backend/app/services/hms_actions.py","backend/app/services/hms_errors.py","backend/app/services/homeassistant.py","backend/app/services/label_renderer.py","backend/app/services/layer_timelapse.py","backend/app/services/ldap_service.py","backend/app/services/library_trash.py","backend/app/services/local_backup.py","backend/app/services/location_service.py","backend/app/services/log_health.py","backend/app/services/log_reader.py","backend/app/services/long_lived_tokens.py","backend/app/services/loop_watchdog.py","backend/app/services/makerworld.py","backend/app/services/mqtt_relay.py","backend/app/services/mqtt_smart_plug.py","backend/app/services/network_utils.py","backend/app/services/notification_service.py","backend/app/services/obico_actions.py","backend/app/services/obico_detection.py","backend/app/services/obico_smoothing.py","backend/app/services/oidc_icon.py","backend/app/services/opentag3d.py","backend/app/services/orca_cloud.py","backend/app/services/orca_profiles.py","backend/app/services/pipeline_eligibility.py","backend/app/services/plate_detection.py","backend/app/services/plate_thumbnail.py","backend/app/services/plug_energy_history.py","backend/app/services/preset_resolver.py","backend/app/services/print_batch.py","backend/app/services/print_cost_estimate.py","backend/app/services/print_dispatch_context.py","backend/app/services/print_log.py","backend/app/services/print_scheduler.py","backend/app/services/print_storage.py","backend/app/services/printer_diagnostic.py","backend/app/services/printer_manager.py","backend/app/services/process_overrides.py","backend/app/services/rest_smart_plug.py","backend/app/services/slice_dispatch.py","backend/app/services/slice_output_check.py","backend/app/services/slice_preview.py","backend/app/services/slicer_3mf_convert.py","backend/app/services/slicer_api.py","backend/app/services/slicer_filament_resolver.py","backend/app/services/slot_preset_writer.py","backend/app/services/smart_plug_manager.py","backend/app/services/sponsor_prompt.py","backend/app/services/spool_assignment_notifications.py","backend/app/services/spool_csv.py","backend/app/services/spool_tag_matcher.py","backend/app/services/spoolbuddy_ssh.py","backend/app/services/spoolman.py","backend/app/services/spoolman_tracking.py","backend/app/services/stl_thumbnail.py","backend/app/services/tasmota.py","backend/app/services/timelapse_processor.py","backend/app/services/usage_tracker.py","backend/app/services/virtual_printer/__init__.py","backend/app/services/virtual_printer/_debug.py","backend/app/services/virtual_printer/bind_server.py","backend/app/services/virtual_printer/certificate.py","backend/app/services/virtual_printer/diagnostic.py","backend/app/services/virtual_printer/ftp_server.py","backend/app/services/virtual_printer/manager.py","backend/app/services/virtual_printer/mqtt_bridge.py","backend/app/services/virtual_printer/mqtt_server.py","backend/app/services/virtual_printer/ssdp_server.py","backend/app/services/virtual_printer/tailscale.py","backend/app/services/virtual_printer/tcp_proxy.py","backend/app/utils/archive_paths.py","backend/app/utils/color_utils.py","backend/app/utils/filament_ids.py","backend/app/utils/filament_types.py","backend/app/utils/filename.py","backend/app/utils/http.py","backend/app/utils/local_time.py","backend/app/utils/printer_models.py","backend/app/utils/safe_path.py","backend/app/utils/tag_normalization.py","backend/app/utils/threemf_tools.py","backend/app/utils/tray_split.py","backend/tests/__init__.py","backend/tests/_fixtures/__init__.py","backend/tests/_fixtures/background_tasks.py","backend/tests/_fixtures/oidc_icon.py","backend/tests/conftest.py","backend/tests/integration/__init__.py","backend/tests/integration/test_advanced_auth_api.py","backend/tests/integration/test_ams_history_api.py","backend/tests/integration/test_ams_labels_api.py","backend/tests/integration/test_api_key_cloud_access.py","backend/tests/integration/test_api_key_owner_authority_1894.py","backend/tests/integration/test_archive_purge_api.py","backend/tests/integration/test_archives_api.py","backend/tests/integration/test_auth_api.py","backend/tests/integration/test_auth_apikey_rbac.py","backend/tests/integration/test_available_filaments.py","backend/tests/integration/test_background_dispatch_api.py","backend/tests/integration/test_camera_api.py","backend/tests/integration/test_camwall_api.py","backend/tests/integration/test_client_ip.py","backend/tests/integration/test_cloud_auth.py","backend/tests/integration/test_cloud_token_auth_migration.py","backend/tests/integration/test_color_catalog_extras.py","backend/tests/integration/test_color_map_api.py","backend/tests/integration/test_completion_guard_wiring_2829.py","backend/tests/integration/test_cost_statistics.py","backend/tests/integration/test_design_settings_plates.py","backend/tests/integration/test_discovery_api.py","backend/tests/integration/test_drying_screen_only.py","backend/tests/integration/test_endpoint_auth.py","backend/tests/integration/test_external_folders_api.py","backend/tests/integration/test_external_links_api.py","backend/tests/integration/test_fallback_archive_photos_1820.py","backend/tests/integration/test_filaments_api.py","backend/tests/integration/test_finance_api.py","backend/tests/integration/test_github_backup_api.py","backend/tests/integration/test_github_restore_api.py","backend/tests/integration/test_groups_api.py","backend/tests/integration/test_ha_sensors_api_1148.py","backend/tests/integration/test_inventory_assign.py","backend/tests/integration/test_inventory_bulk.py","backend/tests/integration/test_inventory_csv.py","backend/tests/integration/test_inventory_from_slot_no_tag.py","backend/tests/integration/test_labels.py","backend/tests/integration/test_ldap_group_sync.py","backend/tests/integration/test_ldap_provision.py","backend/tests/integration/test_library_api.py","backend/tests/integration/test_library_slice_api.py","backend/tests/integration/test_library_tags_api.py","backend/tests/integration/test_library_trash_api.py","backend/tests/integration/test_library_variants_api.py","backend/tests/integration/test_local_login_gate.py","backend/tests/integration/test_locations_api.py"],"storefront":"/r/maziggy","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/maziggy/bambuddy/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}