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.

GitHub Repo

Quick Start (Docker Compose)

  1. Install Docker Desktop. Official install guide
  2. Install Git (if needed). Git downloads
  3. Clone the PrintMux repo:
git clone https://github.com/SmoothBrainIT/PrintMux.git
cd PrintMux
  1. Copy the root .env file:
cp .env.example .env
  1. Optional: edit .env for ports and settings:
nano .env
  1. Start the stack:
docker compose up -d
  1. Optional: set ports inline for a one-off run:
PRINTMUX_BACKEND_PORT=8001 PRINTMUX_FRONTEND_PORT=5174 docker compose up -d
  1. Open the UI in your browser:
http://host-ip:5173

Notes

  • Ports are published by default and can be set via .env or inline.
  • If you changed ports, update the URL accordingly.
  • Use CTRL + C to stop the stack.
  • .env.example includes the full list of settings; the root .env is the source of truth.

Quick Start (Manual)

Install prerequisites:

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.

Architecture Diagram Placeholder

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.