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.
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
- Copy the root
.envfile:
cp .env.example .env
- Optional: edit
.envfor ports and settings:
nano .env
- Start the stack:
docker compose up -d
- Optional: set ports inline for a one-off run:
PRINTMUX_BACKEND_PORT=8001 PRINTMUX_FRONTEND_PORT=5174 docker compose up -d
- Open the UI in your browser:
http://host-ip:5173
Notes
- Ports are published by default and can be set via
.envor inline. - If you changed ports, update the URL accordingly.
- Use
CTRL + Cto stop the stack. .env.exampleincludes the full list of settings; 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.
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. But you can access Fluidd or Mainsail UI right from the PrintMux UI in a browser or in the OrcaSlicer "Device" tab.
Can I use Postgres? Yes, set PRINTMUX_DATABASE_URL.
PrintMux