Slicer settings get lost. Printer configs drift. There's no way to version or diff a print job. estampo fixes this — define parts, slicer settings, and printer targets in a single TOML file and generate identical G-code locally or in CI.
# estampo.toml — a multi-part print with slicer overrides [[parts]] file = "enclosure_base.step" orient = "flat" material = "structural" # PETG-CF [[parts]] file = "enclosure_lid.step" orient = "upright" material = "structural" [[parts]] file = "button_cap.stl" copies = 4 material = "accent" # PLA [filaments] structural = "Generic PETG-CF @base" accent = "Generic PLA @base" [slicer] engine = "orca" version = "2.3.1" # pinned for reproducibility [slicer.orca] printer = "Bambu Lab P1S 0.4 nozzle" process = "0.20mm Standard @BBL X1C" [slicer.orca.overrides] sparse_infill_density = "25%" enable_support = 1 [pack] command = "bambox repack {sliced_3mf}"
From TOML config to printed part — estampo orchestrates the full pipeline through a single command.
Parts, slicer settings, and printer targets in a single estampo.toml file — git-friendly and diffable.
Bin-packs multiple STL and STEP files onto the build plate with configurable padding and orientation.
Pinned OrcaSlicer (for Bambu Lab printers) or CuraEngine (for everything else) in Docker produces identical G-code on any machine — no GUI needed.
Post-process via command stages — pack for Bambu Lab with bambox, upload to Klipper via Moonraker, or any CLI tool that takes G-code.
Pin slicer version + lock profiles into your repo = identical G-code on any machine. No unexpected profile drift.
TOML config, git-friendly, diffable. Pin exact slicer profiles and override settings without touching JSON files.
Config reference →--until plate to inspect layout, --only slice to re-slice, --dry-run to test without printing.
Bin-packs multiple parts onto the build plate with per-part filament slot assignment and orientation control.
Works with STL, STEP, and 3MF files. Pairs naturally with build123d, OpenSCAD, and CadQuery.
No GUI, no display server. Runs in CI, on servers, or on a Raspberry Pi with a pinned slicer version (OrcaSlicer or CuraEngine).
Plain-text TOML config and documented conventions mean Claude, ChatGPT, and other coding assistants can add parts, tune overrides, or wire up CI — review the diff before committing.
Copy-paste AI setup prompt → Installable Claude Code skill →No slicer installed, no GUI, no manual steps. Push a commit and get G-code as a build artifact — with print time and filament stats posted as a PR comment. The same pipeline that runs on your laptop runs in CI.
# .github/workflows/slice.yml name: Slice on: [push, pull_request] jobs: slice: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: estampo/estampo/action@v0
Install estampo and generate your first config with the interactive wizard.