A plugin-native FDM slicer that runs everywhere

One slicer that runs everywhere.

NozzleLab is a plugin-native FDM 3D slicer written in TypeScript and running on Bun. One kernel, one plugin system and five ways to drive it — CLI, terminal, browser, HTTP API and MCP — all slicing through the same engine.

  • Plugin-native
  • Bun
  • TypeScript
  • Three.js
  • MCP
  • Cross-platform

01 · surfaces

Five ways to drive one kernel.

Name the command — there is no implicit default. Every surface renders from the same plugin registry and slices through the same pipeline, so a capability on one is a capability on all of them.

Command surfaces

  • CLI01

    Scriptable subcommands for automation and pipelines, compiled to a single cross-platform binary.

    nozzlelab cli

  • TUI02

    A keyboard-first terminal UI built on Ink — the slicer without ever leaving the shell.

    nozzlelab tui

  • Web03

    A browser slicer with a three.js viewport, running the engine in a Web Worker so the UI never blocks.

    nozzlelab web

  • API04

    Plain Bun.serve HTTP endpoints over the same settings catalog, catalogs and slice pipeline.

    nozzlelab api

  • MCP05

    A Model Context Protocol server over stdio, with stateless and stateful tool sets.

    nozzlelab mcp

02 · principles

The rules the codebase lives by.

  1. 01

    Everything is a plugin

    The kernel holds contracts and typed registries — zero implementations. File formats, printer transports, infill patterns and languages are all plugins.

  2. 02

    One source, every surface

    Data and config are defined once and consumed everywhere. Feature parity is mandatory: a capability on one surface is a bug on the others.

  3. 03

    Isomorphic core

    The kernel never touches window, fs or process. Platform capabilities are injected as ports, so the same runtime works in a browser worker, a Bun worker or an API job.

  4. 04

    TypeScript first

    All geometry ships as pure TypeScript behind a backend port. A WASM backend is adopted only when golden-file output matches exactly and benchmarks prove a real speedup.

03 · try it

Slice something right now.

The browser build runs the real engine in a Web Worker — drop in an STL, pick a machine and slice, with nothing to install and nothing sent to a server.

Source-available under BUSL-1.1; personal and internal use is permitted.