Design practical 3D parts in your browser. Connect AI assistants through MCP. Keep your projects on your own server.
Actual dark-theme editor screenshot of the built-in RP1 robot demo. No account credentials are shown.
- Model parts: place solids, resize and rotate them, use holes and boolean operations, and group components.
- CAD and mesh workflows: import STL, OBJ, STEP, SVG, and native SKF projects; export supported geometry and project files.
- Measure precisely: 3D ruler, face labels, hole measurements, workplane controls, and dimension tools.
- Refine geometry: edit sketches, extrude profiles, and use chamfer/fillet tools where the underlying geometry supports them.
- Estimate material: calculate plastic usage and approximate material cost using your own settings.
- Project history and collaboration: private/shared projects, versions, comments, and activity with user permissions.
- AI-assisted editing: personal, revocable MCP keys for inspecting and editing your own open editor sessions.
- Your workspace: English and Russian interfaces, light/dark palettes, and an optional Electron desktop build.
Scketch3Dweb is self-hosted. No hosted modeling subscription or particular AI provider is required. MCP clients and AI models are configured separately.
Requirements: Docker Engine or Docker Desktop, Docker Compose, and Node.js for the setup helper.
git clone https://github.com/rjohny55/Scketch3Dweb.git
cd Scketch3Dweb
node scripts/setup-local.mjs
docker compose up --build -dOpen http://127.0.0.1:31880. On a fresh installation, create the first administrator account and keep its password safe.
For a short setup and maintenance guide, see START.md. The interface defaults to English; use RU / EN to change it.
The setup helper creates a private .env with a random MCP controller token. It does not print the token or replace an existing .env.
| Service | Local address |
|---|---|
| Web application | http://127.0.0.1:31880 |
| MCP Streamable HTTP | http://127.0.0.1:31881/mcp |
Compose binds both services to loopback by default. Projects and accounts persist in a Docker volume. Set SCKETCH3DWEB_MODELS_VOLUME in .env to choose a host directory for file-based model import/export.
docker compose logs -f
docker compose downDo not add --volumes when stopping the app unless you intend to remove its stored data.
Keep the default local bindings and use an SSH tunnel:
ssh -L 31880:127.0.0.1:31880 -L 31881:127.0.0.1:31881 user@your-serverOpen the same local web address on your computer. Before exposing an installation to the Internet, configure HTTPS, authentication, backups, and access controls.
- An administrator enables MCP access for a user.
- The user creates a personal key in application settings.
- Copy the connection configuration from the UI into your MCP client.
- Keep the target editor tab open while issuing commands.
Tools use the scketch3dweb_ prefix. They can list editors, inspect objects and measurements, create/transform shapes, perform supported geometry operations, capture images, and import/export model files. Keys are scoped to their owner's editors and can be revoked.
Example tasks for a connected assistant:
Create a mounting plate with four holes, set its dimensions, and report the hole spacing.
Inspect the selected part, measure its faces, and export it as STL.
See connection examples and the MCP skill. The stdio bridge is available through npm run mcp:scketch3dweb; configure its endpoint and key through environment variables.
Use Node.js 26.12.1; .nvmrc and .node-version are included.
npm ci
npm run devThe development server normally starts at http://localhost:3000. The pre-dev/build helper stages OCCT WebAssembly from the installed dependency; generated runtime files are not committed.
npm run typecheck
npm test
npm run buildDownload Linux, Windows and macOS desktop packages from GitHub Releases. Docker and a separate Node.js installation are not required to run the packaged app.
- Linux: AppImage or Debian/Ubuntu
.debpackage. - Windows: x64
.exeinstaller with a selectable installation directory. - macOS:
.appZIP archives for Intel (x64) and Apple Silicon (arm64), built locally on Linux; startup on macOS has not been verified.
The packages have no publisher certificate; macOS ZIPs use ad-hoc signatures and are not notarized. Windows may show an unknown-publisher warning; verify the downloaded file against the release's SHA256SUMS.txt. See the 1.0.14 release notes.
To build the desktop application from source:
npm run desktop:dev
npm run desktop:packPackaging depends on the target OS and build tools. For distributable packages, use npm run desktop:dist -- --linux --x64 --publish never or the corresponding --win target. Cross-building Windows on Linux requires Wine. macOS ZIP bundles can be produced locally with --mac zip --x64 --arm64; Set RCODESIGN to the official apple-codesign executable when cross-building macOS on Linux. The packaging hook recursively adds ad-hoc signatures. DMG creation uses macOS tooling. Developer ID signing and notarization additionally require Apple credentials.
On the home page, the project three-dot menu offers Create a copy and Rename. A copy keeps model data, rulers, attachments, workspace settings and history in a separate private project. Renaming waits for the save and preserves the entered name if it fails.
A fitted flange adapter connecting a 120 × 120 mm fan to an NVIDIA CMP 170 graphics card is included as a built-in demo. Open it from Home to explore and edit a copy, with named flange faces and a saved 74.4 mm ruler measurement.
The example directory contains the editable SKF project, STL mesh, model preview, checksums, and dimensions. Both formats are also downloadable from the application and GitHub Releases. Check fit and slicer settings before printing; this is not an official NVIDIA accessory.
apps/web/ Next.js app, 3D editor, API, and assets
apps/desktop/ Electron wrapper and packaging
scripts/ Setup, MCP bridges, runtime staging, catalog helpers
tests/ Unit, integration, and performance tests
docs/ Project format and MCP documentation
deploy/ Additional container configuration
Built with Next.js, React, TypeScript, and Three.js. Geometry tooling includes Manifold, OCCT WebAssembly, and related libraries.
- Large meshes and complex boolean operations can require substantial browser memory and processing time.
- A model that looks correct is not necessarily printable. Check topology, wall thickness, tolerances, and slicer output before manufacturing.
- CAD edge operations depend on the geometry and do not work on every arbitrary mesh.
- Material estimates are approximate, not a manufacturing quote or a substitute for a slicer.
- Never commit
.env, MCP keys, account data, or private models. Do not expose the MCP controller without access controls. - Older installations with different technical names require an explicit configuration/data migration. Desktop packages use this repository's GitHub release channel; server/Docker automatic update delivery remains unconfigured.
Bug reports and focused pull requests are welcome. Include reproduction steps, browser/OS details, and a small synthetic example when possible. Do not attach private projects, tokens, or personal data. Run relevant tests and the production build before submitting changes.
Application code is available under MIT OR Apache-2.0, at your option. See LICENSE, LICENSE-MIT, and LICENSE-APACHE.
Third-party libraries and bundled assets retain their own terms. RP1 catalog assets include separate notices and license information in apps/web/public/assets/robot-rp1. The application license does not relicense those materials.
If Scketch3Dweb is useful to you, consider giving the project a star.

