Overview
PrintMux is an open-source middleware layer that lets slicers upload once and dispatch to multiple printers. It presents Moonraker-compatible and minimal OctoPrint-compatible APIs with a unified dispatch UI.
Note: This branch contains only the public website assets.
Repo: https://github.com/SmoothBrainIT/PrintMux
Website: https://printmux.com
Docs: https://printmux.com/docs.html
Quick Start (Docker Compose)
- Install Docker Desktop. Official install guide
- Install Git (if needed). Git downloads
- Clone the PrintMux repo:
git clone https://github.com/SmoothBrainIT/PrintMux.git cd PrintMux
- Update the root
.envfile (already included):
PRINTMUX_BACKEND_PORT=8000 PRINTMUX_FRONTEND_PORT=5173 VITE_API_BASE=http://localhost:8000
-
Optional: edit
docker/.envto change ports. Defaults are8000(backend) and5173(frontend). - Build and start the stack:
docker compose up --build
- Open the UI in your browser:
http://localhost:5173
Notes
- If you changed ports, update the URL accordingly.
- Use
CTRL + Cto stop the stack. docker/.env.exampleis kept for reference; the root.envis the source of truth.
Quick Start (Manual)
Install prerequisites:
- Python 3.11+ Python downloads
- Node.js 18+ Node.js downloads
Backend:
python -m venv .venv .venv/Scripts/activate pip install -r backend/requirements.txt uvicorn backend.app.main:app --reload --port 8000
Frontend:
cd frontend npm install npm run dev
Architecture
PrintMux sits between slicers and printers. Jobs are stored on disk, metadata is stored in the database, and dispatch is handled per-printer.
API
Key endpoints include:
GET /api/printers
GET /api/printers/status
POST /api/jobs/{job_id}/dispatch
POST /api/octoprint/files/local
POST /server/files/upload
See full details in docs/API.md.
Operations
Configure storage and database paths via environment variables. Status polling includes a per-printer timeout to avoid UI hangs.
See docs/OPERATIONS.md for details.
Cloudflare Pages
- Root directory:
.(repo root) - Build command:
echo "no build" - Output directory:
.
If you see a Wrangler “Missing entry-point” error, Pages is trying to deploy a Worker.
Set the build command to echo "no build" and re-deploy.
Cloudflare Workers Static Assets
npx wrangler deploy
Security
Slicer access is protected by an API key. Use a strong key and avoid exposing the backend directly to the public internet.
FAQ
Does PrintMux proxy webcam streams? Not yet.
Can I use Postgres? Yes, set PRINTMUX_DATABASE_URL.
PrintMux