FAQ

Quick answers about how the audit works, what the three check groups mean, repair and stress-check, folder batch, pricing, and integration. See the docs for long-form reference.

How the checks are organised

A single pass/fail doesn't help you fix anything. AdMeshio groups its checks into three independent areas so you know whether to fix the model, change the printer settings, or re-slice the G-code.

Topology (G)
11 checks · any printer

Is the model itself sound? Closed shell, no flipped faces, no empty faces, no overlapping surfaces. If anything fails → fix the file in your CAD / modelling tool.

Readiness (R)
16 checks (FDM) · 14 (resin)

Can this specific printer + material handle it? Walls, overhangs, supports, drain holes. If anything fails → try a different printer or settings.

Inspection (I)
17 checks (FDM) · 11 (resin)

Is the G-code or resin file correct? Layers, exposure, speeds, cooling. If anything fails → re-slice or change profile.

Each area reports independently — you see pass / warn / fail per check, so you always know what to fix first.

Audit contract

How is an audit different from a "certification"?

An audit is a list of individual checks — each one has a concrete threshold and reports pass, warn, or fail with the measured value. You look at the data directly and decide whether to print, instead of trusting a single composite score.

That fits compliance work, B2B contracts, and print-farm triage: when you need to defend a decision to print (or not print), you have specific evidence you can trace back from any single row in the report.

What does "no risks found" mean? Is it a guarantee?

No — it's not a guarantee. A clean audit means we ran the full check list and didn't find defects above the thresholds for your printer + material. Production risk is low, but you still own the call to print. Physical validation — calibration, first-layer inspection, caliper checks on critical dimensions — is still your responsibility.

Think of it like a CI passing green: your tests all pass, but you still review the PR before merging to prod.

How does automation branch on the result?

The CLI returns exit code 0 on a successful audit and 1 only when it cannot read the file. For finding-level policy, parse the JSON output and branch on per-check flags[].code entries (e.g. SELF_INTERSECTION) or on the verdict.gri_overall threshold of your choice. Sample branches live in the API reference and docs.

What do GRI-G, GRI-R, GRI-I mean?

Short for the three score axes shown in the report header: Geometry (the mesh itself), Readiness (this printer + material), and Inspection (the slicer's G-code). The three-card grid at the top of this page summarises what each group covers.

The audit came back clean but a print still failed. What happened?

A clean audit means no mesh or slicer issue was detected above the thresholds for your profile. Failures after a clean audit fall outside what we can see from the files:

· Hardware: calibration drift, worn nozzle, bed not level, belt tension
· Material: wet filament, resin out of shelf-life, wrong temperature
· Environment: drafts, temperature swings, humidity
· Slicer mismatch: audit assumed one slicer, but you printed from another (e.g. audited against OrcaSlicer settings, printed from PrusaSlicer)

If audit ran on the mesh file alone, re-run it on the actual G-code your printer used (upload both in the workspace, or admeshio verify <output.gcode> from CLI). That second pass measures the real output and usually surfaces the gap if one exists.

Repair & stress-check

What does repair actually do?

Closes cracks, removes overlapping surfaces, fixes non-manifold edges, and flips inward-facing normals. A built-in classifier recognises intentional openings (round drain holes, planar windows, peg slots) and leaves them alone — you don't end up with sealed sockets or filled drains.

Is repair safe? Will it damage my model?

Every step has a safety net. If a cleanup pass would damage topology or move geometry too far from the original, the step rolls itself back automatically. The output is never measurably worse than the input on the test corpus. Pass strict_quality:1 in your recipe to roll back even on borderline cases.

Can I run repair without an audit?

Yes. admeshio repair input.stl -o output.stl is a standalone command. Same for decimate (lighten heavy meshes), pipeline (chain several ops via recipe), and stress-check (FEM safety factor). See the command reference.

What does stress-check tell me?

A first-pass safety factor for the part under gravity + cooling shrinkage (or a simple custom load you specify), plus the regions where stress concentrates. It also flags structural walls that sit in those hotspots — thin features that would pass an audit on their own but become weak points under load.

What it isn't: a load certification. The part is modelled on its own — the joints, fasteners, and contact surfaces of the real assembly aren't part of the picture. Read the result as an early indicator on the geometry, not as a green light to put the part in service. Rigorous load analysis still belongs in dedicated FEA.

Formats & colors

What file formats are supported?

Mesh input: STL (binary + ASCII), OBJ, 3MF, GLB, glTF, PLY.
Mesh output: STL, 3MF, GLB, PLY.
Slicer-output verify: G-code (FDM — OrcaSlicer / PrusaSlicer / Bambu / Cura), .ctb · .cbddlp · .pwmx · .pwmo · .goo (resin — CHITUBOX / Lychee / Voxeldance).

AdMeshio accepts mesh files only for the mesh pipeline. No separate texture images (PNG/JPG). Use GLB with embedded textures if you need to preserve color data — see the next question.

My model has colors / textures. How do I keep them?

Upload as GLB. AdMeshio preserves vertex colors and UV coordinates through the audit pipeline automatically. GLB is the recommended format for colored models (AI-generated, painted, scanned).

Supported: GLB with vertex colors (COLOR_0), GLB with UV coords (TEXCOORD_0), OBJ with UV (vt) — UV read, output as GLB.
Not supported: external texture files (OBJ + MTL + .png/.jpg). If your model uses external textures, convert to GLB first (in Blender: File → Export → GLB with embedded textures).

I have a 3MF with colors. Can I print in color?

Depends on your printer hardware:

Bambu AMS / Prusa MMU: Yes. Your 3MF contains per-face color mapping (colorgroup). AdMeshio preserves this during analysis — 3MF keeps full color data. Open in Bambu Studio or PrusaSlicer and print multi-color directly.

Single-color printer (Ender, most resin): 3MF color data is preserved but your printer will ignore it — it only knows one material at a time. For color, you need AMS/MMU hardware or paint by hand.

Full-color (millions of colors): requires industrial printers (Stratasys J55, HP MJF 580, $100K+). Consumer FDM supports 4–5 filament colors max via AMS/MMU.

What's the maximum file size?

Browser Local Audit handles meshes up to a few hundred MB, depending on your browser's RAM. The CLI has been exercised on files up to 2 GB / tens of millions of triangles. Server upload limits are generous enough that most hobby and pro-am meshes pass without hitting them; if you do hit a limit, the response says so explicitly.

Folder batch

How does folder batch work?

Every command accepts a directory as input and auto-parallelizes the run — no separate bench command, no --batch flag. Each file in the folder gets its own report written next to the source.

# Audit every mesh in a folder
admeshio audit ./orders --recursive --workers 8

audit and verify emit one JSON line per file to stdout, so you can pipe the output straight into jq or your queue.

What does --summary generate?

An HTML dashboard with one row per file — pass / review / fail counts, the check list per row, wall-clock time, and a reminder that AdMeshio audits rather than certifies. Standalone file, no external dependencies, browseable offline.

What happens to failed files in batch?

Files that fail to load (malformed STL, truncated, unsupported format, encoding issues) are logged to stderr with a clear error and not charged. The worker pool continues with remaining files. Final summary includes err=N count. Exit code is 1 if any file errored, 0 otherwise.

How fast is folder batch?

Internal benchmark on 2,000 real-world mesh files: median ~893 ms per file with 8 workers, small files (<10 MB) under 1 second. 1,000 files in ~16 minutes full audit, ~8 minutes geometry-only (8 workers). 10,000 files in ~160 minutes on commodity hardware. Scales roughly linearly with worker count up to physical core count.

Pricing & credits

What is "founding customer pricing"?

Introductory rates for early adopters. Per-operation costs may be revised at a future pricing review, but credits you buy today never expire and stay valid at their purchased value.

What counts as 1 credit?

A deep mesh check with no printer profile: 1 credit. Verifying your G-code on its own: 1 credit. A full audit (mesh + profile) charges per stage actually executed and skips nothing you can't see on the report — see the table below for the exact number.

Browser Local Audit is always free and unlimited — Web-Native technology processes files instantly on your computer, no server contact.

How much does each call cost?

Audit + verify are flat per call (1 / 3 / 4 cr depending on tier). Repair, decimate, and stress-check scale with file size. Every call reports the exact amount in billing.credits_charged. Full breakdown on the pricing page.

Do credits expire?

Credit packs never expire. AdMeshio has no monthly subscription — you buy a pack, use it whenever. Unused credits carry forward indefinitely.

Can I try before paying?

Yes. 100 free credits on signup (one-time, no expiry). No credit card required. Browser Quick Check is always free and unlimited. That's enough to test-drive the full audit chain on a figure or a small-shop trial day before buying a credit pack.

Payment methods?

PayPal (Visa, Mastercard, JCB, balance, bank transfer where supported). Vietnamese bank cards work via PayPal's card processor.

Technical & integration

Can I self-host?

Self-hosting is on the roadmap — single binary, no Docker, no database, air-gapped friendly. The engine already runs offline; the licensed distribution hasn't opened yet. Get in touch if you need air-gapped deployment.

Is there a Python / C# SDK?

Both. Python admeshio package on PyPI, C# AdMeshio NuGet package. Both expose audit(), verify(), and catalog() returning typed AuditReport objects. Folder input auto-detects and returns list[AuditReport]. The catalog spec is bundled — catalog() works offline with no backend dependency.

import admeshio

# Single file
r = admeshio.audit("part.stl", profile="bambu_x1c_pla")
print(r.summary())  # pass / warn / fail counts per check group

# Folder batch — returns list[AuditReport]
reports = admeshio.audit("./orders", recursive=True, workers=8)
blockers = [r for r in reports if r.has_blockers()]

What printer profiles are included?

The catalog covers everything that ships in OrcaSlicer, PrusaSlicer, Bambu Studio, CHITUBOX, and Lychee — popular FDM machines (Bambu X1C / A1 / P1S, Prusa MK4 / Mini+, Ender 3, Voron, Creality K1) and resin printers (Elegoo Saturn / Mars, Anycubic Photon Mono X, Phrozen Sonic, Formlabs Form). Synced daily so a fresh vendor profile shows up within a day. Got something they don't ship? Drop in your own JSON profile.

How does resin (CTB / cbddlp) audit work?

Drop a .ctb, .cbddlp, .pwmx, .pwmo, or .goo file into the workspace (or pass it to admeshio audit on the CLI). We parse the binary header (printer + material + lift cycle), decode every layer's bitmap, and run the resin check chain: floating-island detection, 3D-confirmed vacuum traps (a coarse 3D voxel flood drains hollow shells with a drain hole anywhere in the print, eliminating the false positives that per-layer 2D analysis produces), peel-force spike detection, plus printer-profile mismatch and lift-cycle divergence checks. Encrypted CTB v3+ from CHITUBOX 1.5+ is supported via the UVtools dispatch path.

Does it false-positive on Bambu's AMS calibration?

No. Bambu's machine-start sequence runs AMS calibration, prime lines, and wipe choreography before the real print begins — a naive G-code linter sees these as 1,000+ tiny first-layer islands and 17k+ retractions and spams false positives on every Bambu print. AdMeshio gates the first-layer-island, first-layer-speed, and retraction rules until the slicer emits a real model-feature tag (; TYPE: / ; FEATURE: — Bambu Studio, OrcaSlicer, and PrusaSlicer all emit them). Pre-tag moves are calibration and don't count. Falls back to the ungated counter on bare Klipper / Marlin G-code so non-Bambu/Orca/Prusa sources stay covered.

How does AdMeshio fit into CI/CD?

admeshio audit returns exit code 0 when the audit ran (regardless of pass / warn / fail count) and 1 only when it couldn't read the file. For finding-level policy, parse the JSON output and decide your own threshold:

# GitHub Actions
- run: admeshio audit ./models --recursive --summary report.html
- uses: actions/upload-artifact@v4
  with: { name: audit-report, path: report.html }

# Soft gate: fail only on a specific issue
- run: |
    admeshio audit ./models --recursive | \
      jq -e 'select(.flags[]?.code == "SELF_INTERSECTION") | .input.path' \
      && exit 1 || exit 0

How is AdMeshio different from Meshmixer / Netfabb / MeshLab?

Those are interactive mesh-editing apps. AdMeshio is an API-first audit + repair engine, designed for automation: single binary, headless CLI, REST API, Python / C# SDKs, folder batch with parallel workers, CI/CD quality gates, stable JSON output. It also covers things they don't: structural stress check via CLI, intent-aware repair (keeps drain holes), and a printer catalog synced daily from Orca / Prusa / Bambu.

Netfabb and Magics claim to "certify" — AdMeshio deliberately does not. It reports a check list with pass / warn / fail and lets you decide. Coverage is published on the validation page so you can see exactly what the engine does and doesn't catch before trusting it.