RepoPilotOpen in app →

OrcaSlicer/OrcaSlicer

G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)

Mixed

Mixed signals — read the receipts

worst of 4 axes
Use as dependencyConcerns

copyleft license (AGPL-3.0) — review compatibility; no tests detected

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • Last commit today
  • 28+ active contributors
  • Distributed ownership (top contributor 23% of recent commits)
Show 4 more →
  • AGPL-3.0 licensed
  • CI configured
  • AGPL-3.0 is copyleft — check downstream compatibility
  • No test directory detected
What would change the summary?
  • Use as dependency ConcernsMixed if: relicense under MIT/Apache-2.0 (rare for established libs)

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Forkable" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Forkable
[![RepoPilot: Forkable](https://repopilot.app/api/badge/orcaslicer/orcaslicer?axis=fork)](https://repopilot.app/r/orcaslicer/orcaslicer)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/orcaslicer/orcaslicer on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: OrcaSlicer/OrcaSlicer

Generated by RepoPilot · 2026-05-09 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/OrcaSlicer/OrcaSlicer shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

WAIT — Mixed signals — read the receipts

  • Last commit today
  • 28+ active contributors
  • Distributed ownership (top contributor 23% of recent commits)
  • AGPL-3.0 licensed
  • CI configured
  • ⚠ AGPL-3.0 is copyleft — check downstream compatibility
  • ⚠ No test directory detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live OrcaSlicer/OrcaSlicer repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/OrcaSlicer/OrcaSlicer.

What it runs against: a local clone of OrcaSlicer/OrcaSlicer — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in OrcaSlicer/OrcaSlicer | Confirms the artifact applies here, not a fork | | 2 | License is still AGPL-3.0 | Catches relicense before you depend on it | | 3 | Default branch main exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 30 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>OrcaSlicer/OrcaSlicer</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of OrcaSlicer/OrcaSlicer. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/OrcaSlicer/OrcaSlicer.git
#   cd OrcaSlicer
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of OrcaSlicer/OrcaSlicer and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "OrcaSlicer/OrcaSlicer(\\.git)?\\b" \\
  && ok "origin remote is OrcaSlicer/OrcaSlicer" \\
  || miss "origin remote is not OrcaSlicer/OrcaSlicer (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(AGPL-3\\.0)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"AGPL-3\\.0\"" package.json 2>/dev/null) \\
  && ok "license is AGPL-3.0" \\
  || miss "license drift — was AGPL-3.0 at generation time"

# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
  && ok "default branch main exists" \\
  || miss "default branch main no longer exists"

# 4. Critical files exist
test -f "CMakeLists.txt" \\
  && ok "CMakeLists.txt" \\
  || miss "missing critical file: CMakeLists.txt"
test -f ".github/workflows/build_all.yml" \\
  && ok ".github/workflows/build_all.yml" \\
  || miss "missing critical file: .github/workflows/build_all.yml"
test -f "cmake/modules/FindCURL.cmake" \\
  && ok "cmake/modules/FindCURL.cmake" \\
  || miss "missing critical file: cmake/modules/FindCURL.cmake"
test -f "cmake/modules/FindOpenVDB.cmake" \\
  && ok "cmake/modules/FindOpenVDB.cmake" \\
  || miss "missing critical file: cmake/modules/FindOpenVDB.cmake"
test -f ".github/workflows/check_profiles.yml" \\
  && ok ".github/workflows/check_profiles.yml" \\
  || miss "missing critical file: .github/workflows/check_profiles.yml"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 30 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~0d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/OrcaSlicer/OrcaSlicer"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

OrcaSlicer is an open-source G-code generator and slicer software for multi-brand 3D printers (Bambu Lab, Prusa, Voron, VzBot, RatRig, Creality, etc.). It converts 3D models into printer-specific toolpaths with advanced features like intelligent support generation, precise wall control, seam optimization, and temperature/flow calibration tools. The core technology is a C++-based slicing engine (46MB of C++ code) paired with a Qt-based GUI for preview and parameter control. Monolithic structure: top-level CMakeLists.txt orchestrates the build across C++ core (src/ implied), Qt GUI, printer profile data (likely in src/), and platform-specific resources. Uses .devcontainer/Dockerfile for reproducible build env. Printer support via profile files and GUI in JavaScript/HTML/CSS (2.3MB JS suggests embedded web UI or config UI). Build system: CMake primary, QMake for Qt components, with Makefile/Meson alternatives.

👥Who it's for

3D printing enthusiasts, makers, and small manufacturing operators who need fast, high-quality slicing with support for multiple printer brands. Also appeals to contributors wanting to improve open-source CAM tooling without vendor lock-in.

🌱Maturity & risk

Production-ready and actively maintained. The repo shows high GitHub stars (per the Trendshift badge) and robust CI/CD infrastructure with multiple build workflows (build_all.yml, build_orca.yml, build_check_cache.yml). The codebase is large (~50MB C++ alone) and supports real printer hardware, indicating mature deployment. Regular GitHub Actions workflows and translation updates suggest active development.

Standard open source risks apply.

Active areas of work

Active maintenance: recent GitHub Actions include check_profiles.yml and update-translation.yml workflows, suggesting ongoing printer profile expansion and i18n work. PR template and auto-labeling automation indicate structured contribution flow. Doxygen docs generation (.doxygen file) suggests API documentation being maintained.

🚀Get running

git clone https://github.com/OrcaSlicer/OrcaSlicer.git
cd OrcaSlicer
mkdir build && cd build
cmake .. && make -j$(nproc)

Alternatively, use .devcontainer: devcontainer open for VS Code Docker-based dev. For Windows: see .github/workflows/build_all.yml for MSVC + Qt configuration.

Daily commands: Post-build, launch the executable directly: ./build/bin/OrcaSlicer (Linux) or ./build/bin/OrcaSlicer.exe (Windows). GUI starts immediately. For headless G-code generation, check if CLI mode exists (not explicit in file list, but many slicers offer --input model.stl --output output.gcode flags).

🗺️Map of the codebase

  • CMakeLists.txt — Root build configuration that orchestrates all dependencies, compiler flags, and platform-specific builds for the entire slicing pipeline.
  • .github/workflows/build_all.yml — Primary CI/CD workflow that validates the build across Windows, macOS, and Linux before merging; defines the canonical build process.
  • cmake/modules/FindCURL.cmake — Network communication dependency for printer connectivity and cloud communication features used throughout the slicer.
  • cmake/modules/FindOpenVDB.cmake — Mesh processing and volumetric data dependency essential for model slicing and support generation algorithms.
  • .github/workflows/check_profiles.yml — Validates printer profiles and presets, critical for ensuring the slicing parameters are correct for all supported hardware.
  • README.md — Core documentation explaining OrcaSlicer's purpose, supported printers, and how to get started; sets architectural expectations.

🧩Components & responsibilities

  • Mesh Processor (OpenVDB) (OpenVDB, Eigen3) — Converts input 3D models into voxel grids, performs slicing by layer height, and identifies empty spaces for support generation
    • Failure mode: Non-manifold or corrupted meshes cause voxelization to fail; supports may not generate if mesh topology is invalid
  • G-code Generator (Eigen3, Printer Profiles) — Converts sliced layers into printer-specific machine commands respecting acceleration limits, nozzle diameter, and bed dimensions from profile
    • Failure mode: Exceeding printer acceleration limits produces stuttering; ignoring nozzle diameter causes under/over-extrusion
  • undefined — undefined

🛠️How to make changes

Add Support for a New Printer Model

  1. Create a new printer profile in the profiles directory with machine limits, nozzle diameter, and bed dimensions (CMakeLists.txt (reference where profiles are bundled))
  2. Update check_profiles.yml workflow to validate the new profile against schema (.github/workflows/check_profiles.yml)
  3. Add vendor logo and documentation to SoftFever_doc/ for branding (SoftFever_doc/[VendorName].png)
  4. Update README.md to list the new printer in supported hardware section (README.md)

Modify G-code Generation or Slicing Algorithm

  1. Review existing printer profile presets and machine limits in the profiles configuration (.github/workflows/check_profiles.yml)
  2. Edit CMakeLists.txt to ensure OpenVDB and Eigen3 dependencies are properly linked if modifying mesh processing (CMakeLists.txt)
  3. Add unit or integration tests for the new slicing logic in the test suite (.github/workflows/build_all.yml (references test execution))
  4. Verify cross-platform compatibility by running the build workflow locally using devcontainer (.devcontainer/devcontainer.json)

Add a New Feature Requiring Printer Cloud Communication

  1. Ensure CURL dependency is properly linked in CMakeLists.txt for HTTP requests (CMakeLists.txt)
  2. Implement network retry logic and timeout handling compatible with all supported printers (cmake/modules/FindCURL.cmake (reference available CURL features))
  3. Add feature documentation with printer compatibility notes (README.md)
  4. Update CI workflow to test network-dependent features safely (.github/workflows/build_orca.yml)

🔧Why these technologies

  • CMake with multi-platform support — Cross-platform compilation for Windows (MSVC), macOS (Clang), and Linux (GCC) with consistent dependency management
  • OpenVDB (volumetric mesh processing) — Efficient 3D mesh voxelization, slicing, and support structure generation for complex models
  • Eigen3 (linear algebra) — High-performance geometric transformations, matrix operations, and 3D coordinate calculations
  • CURL (network library) — Printer cloud connectivity and file upload to cloud-enabled 3D printers (Bambu Lab, etc.)
  • GitHub Actions CI/CD — Automated cross-platform builds and profile validation on every commit before merge to main

⚖️Trade-offs already made

  • Monolithic build system with bundled printer profiles rather than modular plugin architecture

    • Why: Simpler distribution, guaranteed compatibility, and faster startup without dynamic loading complexity
    • Consequence: Adding new printers requires rebuilding the entire application; harder for third-party printer support
  • Volumetric mesh processing with OpenVDB instead of surface-only slicing

    • Why: Better handling of complex geometries, water-tight models, and automated support generation
    • Consequence: Higher memory footprint and longer slicing times for very large models; not suitable for real-time preview
  • Single binary release vs. modular plugin system

    • Why: Easier user installation, no dependency hell, guaranteed feature completeness
    • Consequence: Larger executable size; users download all printer profiles even if they only use one

🚫Non-goals (don't propose these)

  • Does not provide real-time interactive 3D model editor; focuses on slicing pre-made models
  • Not a CAD tool; assumes models come from external CAD software
  • Does not handle printer firmware updates or hardware diagnostics; only communicates for print job submission
  • Not a web-based service; desktop-only application without cloud backend (printers have their own cloud)

🪤Traps & gotchas

Qt version mismatch: build requires specific Qt version (5 or 6, likely 5.15+ LTS); mismatch causes linker errors. Build dir must be separate: CMake out-of-source build required (build/ != src/). Printer profiles are shipped separately or downloaded: check if profiles/ directory exists post-build or if they're fetched from external source. Platform-specific configs: Windows uses .bat scripts and MSVC, Linux/macOS use GCC/Clang; CMAKE_BUILD_TYPE (Release vs Debug) must be set explicitly or tests may fail. No vcpkg/conan lock: dependency versions pinned in CMakeLists.txt only; update can break builds.

🏗️Architecture

  • slic3r/Slic3r — OrcaSlicer is a modern fork/successor of Slic3r; understanding original architecture helps with tracing code lineage and design decisions
  • prusa3d/PrusaSlicer — Competing open-source slicer maintained by Prusa; shares similar C++ architecture and libslic3r base; reference for alternative printer profile approach and multi-material support
  • bambu-lab/OrcaSlicer — Official Bambu Lab fork/collaboration point; likely upstream for Bambu printer-specific features and firmware integration
  • Ultimaker/Cura — Industry-standard slicer with Qt GUI and Python plugin ecosystem; reference for alternative architecture (pure Python core vs C++ here) and settings extensibility patterns
  • 9elements/cura-voronoi-support — Specialized support generation plugin; OrcaSlicer's 'intelligent support generation' feature may benefit from or reference this voronoi-based approach

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add GitHub Actions workflow for profile validation CI

The repo has .github/workflows/check_profiles.yml and check_profiles_comment.yml but these appear to be placeholder/incomplete based on the file structure. There's also a .github/actions/apt-install-deps action. A dedicated CI workflow should validate all printer profiles in the resources directory (Bambu, Prusa, Voron, VzBot, RatRig, Creality configs) against a schema on every PR to catch malformed configurations early. This prevents broken printer definitions from reaching users.

  • [ ] Create src/tests/profile_validator.cpp or similar to define profile schema validation logic
  • [ ] Update .github/workflows/check_profiles.yml with a complete workflow that runs the validator against all JSON/config files in resources/
  • [ ] Add validation for critical fields: printer dimensions, nozzle sizes, material presets, machine limits (referenced in SoftFever_doc/machine_limits.png)
  • [ ] Document expected profile format in CONTRIBUTING.md or similar

Add integration tests for G-code generation output

As a G-code generator, the core value is correct slicing output. Currently no visible test suite for validating that G-code output is syntactically correct or contains expected commands (layer heights, speeds, extrusion values). Add a test suite that validates sample STL files generate valid G-code with correct structure.

  • [ ] Create src/tests/gcode_generator_tests.cpp with test cases for basic geometries (cube, cylinder)
  • [ ] Add sample STL files in tests/fixtures/ for consistent test inputs
  • [ ] Validate G-code output contains: proper G0/G1 commands, extrusion values (E), temperature commands (M109), layer structure
  • [ ] Integrate into build_orca.yml workflow to run on every PR

Document and add validation for machine limits configuration

The SoftFever_doc/machine_limits.png image suggests machine limits are a critical UI feature, but there's no visible validation logic in the file structure for bounds-checking (acceleration limits, max speeds, thermal limits). Add validation to prevent users from generating unsafe G-code for their printers.

  • [ ] Create src/core/machine_limits_validator.cpp to validate printer acceleration, speed, and thermal constraints against hardware specs
  • [ ] Add schema documentation in docs/MACHINE_LIMITS.md describing valid ranges for each printer type (Bambu, Prusa, Voron, etc.)
  • [ ] Integrate validator into the slicing pipeline to warn/error if print settings exceed machine limits
  • [ ] Add unit tests in src/tests/machine_limits_tests.cpp with edge cases for each supported printer

🌿Good first issues

  • Add unit tests for G-code output validation: core slicing algorithms in src/libslic3r/ lack formal test coverage; contribute fixtures that validate toolpath correctness for simple geometries (cube, cylinder) against known-good G-code output
  • Expand printer profile documentation: .github/workflows/check_profiles.yml suggests profile validation exists; write developer guide explaining profile schema (nozzle diameter, max speed, firmware flavor) so new printer support is self-service
  • Missing CLI documentation in README: GUI is well-documented (advanced-calibration-tools, precise-wall links), but no mention of headless slicing mode; add --help output and example commands to README or wiki

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 7bef75b — attempt to reduce freezing issues caused by model dialog on Linux (SoftFever)
  • 89c9c02 — Release Notes dialog Fixes / Improvements (#12265) (yw4z)
  • 635d961 — Make filament compatibility temperature-aware (#13522) (ianalexis)
  • 16fc3c1 — Vase mode zero flow bugfix (#13517) (RF47)
  • db8ca5f — Only warning about sparse infill rotation template the first time (#13461) (RF47)
  • 4abda6b — Non-Crossing Tri-hexagon multiline (#13433) (RF47)
  • 8c7cc69 — FIX: context: fix the .gcode.3mf not shown issue (#13360) (Noisyfox)
  • fb1f4a7 — Automatically select external spool if it's the only installed filament (#13356) (Noisyfox)
  • a29d4fc — Crash fix assembly mode flatpak (#13413) (yw4z)
  • 7aed2dc — fix(preset): don't truncate child variant vectors to parent size on load (#13316) (cgarwood82)

🔒Security observations

OrcaSlicer's security posture is moderately strong with a functional security policy, but there are areas for improvement. The primary concerns are: (1) incomplete security documentation that cuts off mid-sentence, (2) lack of encrypted vulnerability reporting infrastructure (no PGP key), (3) single point of contact for security reports creating a bottleneck, and (4) absence of visible SBOM and dependency scanning. The codebase structure shows good practices with security-aware CI/CD workflows (.github/workflows), but Docker and dependency management should be enhanced with automated scanning. No obvious hardcoded secrets or injection risks are apparent from the file structure provided, though deeper code analysis would be needed to identify potential injection vulnerabilities in the actual source code.

  • Medium · Incomplete Security Policy Documentation — SECURITY.md. The SECURITY.md file is incomplete and cuts off mid-sentence in the 'Information and Collaboration' section. This may indicate incomplete security guidelines and could confuse researchers trying to report vulnerabilities responsibly. Fix: Complete the security policy documentation with full guidelines on information sharing, embargo periods, and acknowledgment procedures. Ensure clarity on the full disclosure process.
  • Low · Single Point of Contact for Security Reports — SECURITY.md. The security reporting process relies on a single email address (softfeverever@gmail.com) for all security vulnerability reports. This creates a potential bottleneck and single point of failure for critical security communications. Fix: Establish a security team email alias or PGP key infrastructure (e.g., security@orcaslicer.org) with multiple designated contacts to ensure redundancy and faster response times.
  • Low · No PGP/GPG Key Provided — SECURITY.md. The SECURITY.md file does not provide a PGP/GPG public key for encrypted vulnerability reporting. This means sensitive security reports could be transmitted unencrypted. Fix: Publish a PGP public key on the official website and in SECURITY.md to allow encrypted submission of vulnerability reports.
  • Low · Docker Build Configuration Analysis — .devcontainer/Dockerfile. While the devcontainer Dockerfile exists, the actual content is not provided for analysis. Docker images may contain unpatched dependencies or insecure configurations. Fix: Implement automated Docker image scanning using tools like Trivy or Snyk. Ensure base images are regularly updated and vulnerability scanning is part of CI/CD pipeline.
  • Low · Missing SBOM (Software Bill of Materials) — Repository root. No SBOM or dependency manifest visible in the file structure. This makes it difficult for users and security researchers to identify known vulnerable dependencies. Fix: Generate and maintain an SBOM using tools like SPDX or CycloneDX. Include it in releases and maintain it as dependencies are updated.
  • Low · Potential Credential Exposure in IDE Configuration — .idea/. The .idea/ directory contains IntelliJ IDE configuration files. IDE configuration can sometimes include cached credentials or API keys. Fix: Ensure .idea/ is properly gitignored and audit .idea/vcs.xml for any embedded credentials. Add IDE-specific files to .gitignore if not already present.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Mixed signals · OrcaSlicer/OrcaSlicer — RepoPilot