Skip to content

exzile/Cindr3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

949 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


Cindr3D: Design β†’ Slice β†’ Print workflow


Cindr3D is not affiliated with Autodesk, Fusion 360, Duet3D, RepRapFirmware, or any slicer vendor.

Cindr3D combines a CAD-style design workspace, in-browser slicing, and multi-printer fleet control into one browser app β€” no cloud upload, no install, no account required. It runs locally for development, from any static web host, or from a small Linux board on your workshop network.

🎨
Design
OpenCascade-backed sketches, B-rep solids, timeline, configurations, import/export
βš™οΈ
Prepare
Plate layout, WASM slicer, G-code preview, calibration models, print profiles
πŸ–¨
Operate
Dashboards, cameras, macros, files, spools, power, calibration, printer history
πŸ€–
Automate
BYOK chat, local MCP tools, audit log, token pairing, safety gates

⚑ Quick Start

Requirements: Node.js β‰₯ 22.12.0 Β· npm Β· A modern browser with WebGL

nvm use
npm ci
npm run dev
http://localhost:5173
Goal Path
🎨 Build a model Design β†’ create a sketch β†’ extrude a profile
πŸ”§ Inspect slicing Prepare β†’ import a model β†’ open G-code preview
πŸ–¨ Add a printer 3D Printer β†’ add connection β†’ open dashboard
πŸ€– Pair AI tools Open the AI MCP badge β†’ copy the local pairing command

Before contributing:

npm run typecheck   # TS composite build check
npm run lint        # ESLint
npm run test:run    # Vitest once
npm run build       # Full production build
npm run deploy:check # Static Web Apps config + production CSP smoke test

πŸš€ What's New in v0.5.2

Design workspace release β€” sketch parity, primitive UX, and performance. Ships in PRs #78 and #79.

Area Change
πŸͺž Sketch mirror Mirror any selection of entities across a chosen sketch line. Handles lines, arcs, circles, splines, and rectangles.
✏️ Sketch text Parametric text with Roboto Regular/Bold/Italic (3 families). Generates extrudable closed-spline contours; double-click to edit. Text-on-path included.
πŸ– Point drag handles Fusion-style handles on every entity point type β€” line endpoints, arc centre/ends, spline knots β€” reshape geometry directly in the viewport.
πŸ“ Advanced constraints G2+ smooth continuity, offset curves dimension, tangent-distance dimension, angular solver, fixed spline type, break-link, H/V points, autoConstrain.
πŸ“ Cylinder dimension labels Floating dimension badges on cylinder drag handles: cyan 20.00 mm on height, orange Ø 40.00 mm on diameter. Live during drag, directly editable.
πŸ“¦ Primitive operations Box, Cylinder, Sphere, Torus now support Join, Cut, Intersect, New Component. Coil and Pipe completed to Fusion field parity. All dialogs reopen from timeline.
⚑ Viewport performance Fixed a pointermove listener leak per sketch-interaction mount. Demand-driven re-renders cut idle CPU on complex assemblies.
πŸŽ› Toolbar overflow β‹― overflow button when ribbon tools don't fit; active tool auto-promotes into the visible ribbon slot. Flyout close-timing fixed.
πŸ§ͺ Tests 3 new test files: corner editing commit, corner fillet geometry, fillet-radius round-trips. Extended mirror/arc solver coverage.
v0.5.0 / v0.5.1 foundation

v0.5.1 β€” Polygon side-count glyphs, compact timeline, polished ribbon/dropdowns, draggable configuration modal, batched constraint glyphs, camera-idle redraws.

v0.5.0 β€” OpenCascade modeling core (extrude, revolve, sweep, loft, primitives, booleans, split, shell, draft, offset faces, fillet, chamfer), topology-aware fillet/chamfer edge metadata, profile-aware extrude selection, DZND project persistence, search/sitemap/robots/Azure headers.

πŸ›  Capabilities

🎨 CAD and Modeling
  • Orbit/pan/zoom viewport with view-cube navigation
  • Sketching on standard planes and construction planes
  • Constraint-driven sketch tools: lines, rectangles, circles, arcs, splines, polygons, slots, text, projections, intersections
  • Sketch mirror, text and text-on-path, point drag handles, G2+ continuity, offset curves, angular solver
  • OCC-backed features: extrude, revolve, sweep, loft, shell, rib, split, draft, offset faces, hole, thread, chamfer, fillet, move, align, merge faces, and primitives
  • Profile-aware extrude selection for nested sketch regions and holes
  • Topology-aware fillet/chamfer with stable edge anchors and circular-edge handling
  • Component tree, compact timeline, configuration variants, selection filters, visibility controls
  • Imports: .f3d, .step, .stp, .stl, .obj; project/settings save and load
βš™οΈ Slicer and Preview
  • Multi-object plate layout with per-object profile overrides
  • WASM-backed slicer: layer height, speed, temperature, walls, infill, supports, seam, retraction
  • Tree supports, adaptive layer heights, multi-color slicing, scarf seam, vase mode, fuzzy skin
  • Arachne variable-width perimeter walls for accurate thin-feature reproduction
  • 8 layer processor types: tuning tower, change-at-Z, pause-at-Z, filament change, timelapse, custom G-code, search/replace (regex), print-from-height
  • Animated G-code preview with layer scrubbing, move-type color coding, per-layer time and filament estimates
  • G-code dock panel synchronized with 3D preview
  • Automatic M486 / EXCLUDE_OBJECT labels for object cancellation
πŸ–¨ Printer Workflows
  • Fleet dashboard, printer dashboard, camera, status, console, job, history, analytics, files, macros, bed map, updates, power, input shaper, pressure advance, spools, timelapse tabs
  • Smart queue routing by machine, material, nozzle, volume, and profile compatibility
  • Multiple camera streams per printer, WebRTC fallback, ONVIF PTZ presets, layer evidence capture
  • Webhooks, Discord, Slack, Telegram, MQTT, Home Assistant, power-loss recovery, chamber controls, air-quality monitors
  • 9-type calibration center with guided wizard, in-wizard 3D preview, per-firmware apply + rollback, and calibration aging tracker
πŸ€– AI and Automation
  • Local MCP server with 29 tools: parametric primitives, sketch creation, feature operations, boolean history, transforms, slicer profile control, slice execution, printer commands
  • BYOK in-app chat: Anthropic, OpenAI, OpenRouter β€” keys are session-only
  • AI print diagnostics: aggregates camera frames, temperature graphs, firmware errors into a ranked probable-cause list
  • Natural-language printer control with configurable confirmation gates for destructive actions
  • Token-paired auth, 80-entry audit log, per-tool rate limiting, localhost-only MCP bridge

πŸ–¨ Printer Support

Feature Klipper Duet / RRF Marlin USB Other
Dashboard βœ… βœ… βœ… βœ…
Camera βœ… βœ… βœ… βœ…
Files βœ… βœ… limited varies
Macros βœ… βœ… limited varies
Exclude object EXCLUDE_OBJECT M486 M486 workaround
Bed map Moonraker mesh heightmap.csv G29 varies
Input shaper SET_INPUT_SHAPER M593 M593 notes
Pressure advance SET_PRESSURE_ADVANCE M572 M900 notes
Power / updates / spools βœ… βœ… βœ… βœ…
Object model / DSF plugins β€” βœ… β€” β€”

Mid-print cancellation requires labelled G-code. Cindr3D-sliced jobs are labelled automatically. For external slicers, enable object labels or equivalent post-processing.

πŸ€– AI & Automation

Two integration paths backed by the same local tool surface:

Path Best for
Claude Code via MCP Local CAD/printer automation while the browser session is open β€” pair through the AI MCP badge
BYOK in-app chat In-browser assistant β€” Anthropic, OpenAI, and OpenRouter keys, session-only

Safety defaults: Localhost-only MCP bridge Β· Token-paired auth with rotation Β· Per-tool rate limiting Β· 80-entry audit log Β· Optional confirmation before destructive operations

See docs/ai-mcp-tools.md for tool details and docs/ai-examples.md for example workflows.

πŸ— Tech Stack

Core

React 19 TypeScript Vite 8 Node β‰₯22

3D / Geometry

Three.js React Three Fiber React Three Drei OpenCascade WASM

State / Quality

Zustand ESLint Vitest GitNexus

πŸ“‚ Project Layout

src/
  components/      UI components, dialogs, panels, viewport
  engine/          CAD, geometry, OCC, slicer, import/export logic
  services/        Device and integration services
  store/           Zustand stores and CAD/printer slices
  test/            Vitest behavior and regression tests
  types/           Shared TypeScript models
  utils/           Shared helpers and project IO

public/            Static assets, fonts, icons, help screenshots
wasm/              Tracked WASM runtime artifacts
scripts/           Build, updater, SEO, and verification scripts
docs/              Help, AI/MCP, deployment, and technical docs
Script Purpose
npm run dev Start Vite development server
npm run dev:fresh Clear Vite cache then start dev server
npm run build Typecheck, build static files, and generate SEO pages
npm run deploy:check Verify built deploy config and run a production CSP smoke test
npm run typecheck Run the composite TypeScript build check
npm run lint Run ESLint
npm run test:run Run Vitest once
npm run verify Run tsc -b and vitest run

🌐 Self-Hosting

Cindr3D is a static single-page app. Any static host works if unknown routes fall back to index.html.

npm run build   # outputs to dist/

Minimal Nginx:

server {
    listen 80;
    root /var/www/cindr3d;
    index index.html;
    location / { try_files $uri $uri/ /index.html; }
    location /assets/ { expires 30d; add_header Cache-Control "public, immutable"; }
}
rsync -av --delete dist/ user@device:/var/www/cindr3d/
Orange Pi auto-updater service

The repository includes scripts/cindr3d-updater.mjs and scripts/install-orangepi-updater.sh for self-hosted devices:

Endpoint Purpose
GET /api/update/status Compare installed version with the latest GitHub release
POST /api/update/apply Install the latest release asset (cindr3d-dist.zip)

The updater installs release assets β€” it does not update directly from master.

πŸ—Ί Roadmap

Active work is tracked in TaskLists.txt.

Theme Focus
🎨 Sketch parity Face-placement for primitives, DOF coloring, offset/break tools, constraint inference guides
πŸ”· OCC edge topology Fillet/chamfer selection fully OCC-topology-backed from render through commit
πŸ“· Camera-assisted calibration Vision models for first-layer, ringing, and stringing analysis
πŸ”Œ Plugin system Registry-based architecture for third-party CAD, slicer, and printer panel extensions

🏷 GitNexus Code Intelligence

This repository is indexed by GitNexus for symbol-level navigation and impact analysis. See AGENTS.md for guidance.

npm run graph:analyze   # index the codebase
npm run graph:list      # list indexed repos
npm run graph:serve     # start the GitNexus server

Before modifying any function, class, or method, run impact analysis as described in AGENTS.md.

🀝 Contributing

Start with CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md.

Good contributions include focused bug fixes, geometry/slicer edge-case tests, importer/exporter improvements, viewport interaction fixes, printer workflow improvements, and documentation that helps users run or self-host the app.

πŸ”’ Security

Please do not report security issues in public issues. See SECURITY.md.

Never commit printer credentials, Wi-Fi credentials, updater keys, GitHub tokens, local G-code test files, generated caches, or private project files.

πŸ“„ License

Cindr3D is released under the MIT License. See LICENSE.

The bundled Roboto font is licensed separately by Google under Apache-2.0. See THIRD_PARTY_NOTICES.md.


Made with β˜• Β· MIT licensed Β· No telemetry Β· No cloud Β· cindr3d.com

About

3D design software, Model Slicing Software, Print Monitoring/Calibration

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

1 watching

Forks

Sponsor this project

Packages

 
 
 

Contributors