PrintMux is an open-source middleware layer that lets slicers upload once and dispatch to many 3D printers. It presents both a Moonraker-compatible API and a minimal OctoPrint-compatible API for slicers, then routes jobs to one or more downstream printers from the web UI.
- Moonraker-compatible upload endpoint for slicers
- Minimal OctoPrint-compatible upload endpoint for slicers
- Centralized web UI for job dispatch
- Multi-printer status and health visibility
- Per-printer UI deep links
- Self-hosted and lightweight
backend/FastAPI service and printer integrationsfrontend/React + Vite UIdocker/container build files and compose
python -m venv .venv
.venv/Scripts/activate
pip install -r backend/requirements.txt
uvicorn backend.app.main:app --reload --port 8000cd frontend
npm install
npm run devBackend (via .env in the repo root):
PRINTMUX_API_KEY- API key for slicer accessPRINTMUX_DATABASE_URL- defaultsqlite:///./printmux.dbPRINTMUX_STORAGE_DIR- default./storagePRINTMUX_CORS_ORIGINS- default*
Frontend (via frontend/.env):
VITE_API_BASE- defaulthttp://localhost:8000
See .env.example and frontend/.env.example for templates.
Linux (desktop or headless):
- Clone repo
git clone https://github.com/SmoothBrainIT/PrintMux.gitcdinto repo
cd PrintMux- Copy env
cp .env.example .env- Modify
.envif needed
nano .env- Deploy
docker compose up -dOptional: set ports inline for a one-off run (instead of editing .env and running the command above)
PRINTMUX_BACKEND_PORT=8001 PRINTMUX_FRONTEND_PORT=5174 docker compose up -d- Enjoy PrintMux!
Repo: https://github.com/SmoothBrainIT/PrintMux Website: https://printmux.com Docs: https://printmux.com/docs.html
Ports are published by default.
Update the root .env to customize (used automatically by Docker Compose),
or set values inline before docker compose up -d.
Port values control the published host ports:
PRINTMUX_BACKEND_PORT(default 8000)PRINTMUX_FRONTEND_PORT(default 5173)VITE_HOST(only if the UI is accessed via a FQDN, local or public)
Note: docker/.env.example is kept for reference, but the root .env is the primary source of truth.
See:
docs/KNOWN_ISSUES.mddocs/OPERATIONS.mddocs/ARCHITECTURE.mddocs/API.mddocs/FUNCTIONS.md
MIT. See LICENSE.
See CONTRIBUTING.md.