FlashForge WebUI is a lightweight, standalone web interface for monitoring and controlling FlashForge 3D printers. Designed as a cross-platform alternative to desktop applications, it runs efficiently on low-spec hardware like the Raspberry Pi, making it perfect for dedicated print servers. It supports simultaneous connections to multiple printers, real-time camera streaming, and integrates seamlessly with Spoolman for filament management.
| Feature | Description |
|---|---|
| Multi-Printer Support | Connect to and manage multiple printers simultaneously with isolated contexts |
| Live Monitoring | Real-time tracking of temperatures, print progress, and printer status |
| Camera Streaming | Low-latency video monitoring with RTSP and MJPEG support |
| Printer Control | Full control over print jobs (pause, resume, stop) and printer settings |
| Spoolman Integration | Native integration for filament inventory and usage tracking |
| Responsive Dashboard | Customizable grid-based UI that works on desktop, tablet, and mobile |
| Cross-Platform | Native binaries for Windows, macOS, and Linux (x64, ARM64, ARMv7) |
FlashForge WebUI supports a wide range of FlashForge printers through its adaptable backend architecture.
| Series | Models | API Type |
|---|---|---|
| Adventurer 5M | Adventurer 5M, 5M Pro | New (HTTP API) |
| AD5X | AD5X | New (HTTP API) |
| Creator 5 | Creator 5, Creator 5 Pro | New (HTTP API) |
| Legacy | Older FlashForge Models | Legacy (FlashForgeClient) |
| Requirement | Details |
|---|---|
| Node.js | Version 20.0.0 or higher (for source installation) |
| Network | Connection to your printer(s) |
Download the appropriate binary for your platform from the Releases page:
| Platform | Binary | Notes |
|---|---|---|
| Windows x64 | flashforge-webui-win-x64.exe |
Most Windows PCs |
| macOS x64 | flashforge-webui-macos-x64 |
Intel Macs |
| macOS ARM | flashforge-webui-macos-arm64 |
Apple Silicon (M1/M2/M3) |
| Linux x64 | flashforge-webui-linux-x64 |
Most Linux PCs |
| Linux ARM64 | flashforge-webui-linux-arm64 |
Raspberry Pi 4/5 (64-bit OS) |
| Linux ARMv7 | flashforge-webui-linux-armv7 |
Raspberry Pi 3/4 (32-bit OS) |
Raspberry Pi Users: Use flashforge-webui-linux-arm64 for 64-bit Raspberry Pi OS, or flashforge-webui-linux-armv7 for 32-bit.
# Make the binary executable (Linux/macOS)
chmod +x flashforge-webui-linux-arm64
# Run with auto-connect to last used printer
./flashforge-webui-linux-arm64 --last-used
# Run without auto-connect
./flashforge-webui-linux-arm64 --no-printers# Clone the repository
git clone https://github.com/Parallel-7/FlashForgeWebUI.git
cd FlashForgeWebUI
# Install dependencies
npm install
# Build the application (required before first run)
npm run build
# Start the server
npm start
# Or start with auto-connect to last used printer
npm start -- --last-usedDevelopment Mode:
# Build and watch for changes with hot reload
npm run devAfter starting the server, open your browser and navigate to:
http://localhost:3000
Or if accessing from another device on your network:
http://<server-ip>:3000
Default Login: The default password is changeme. You should change this in the active config file (by default data/config.json, or the directory pointed to by DATA_DIR) or via the --webui-password flag.
Remote Access / Port Forwarding: Everything the WebUI needs - including live camera streams - is served over the single WebUI port (default 3000). If you expose the WebUI outside your LAN, forward only that port. Camera video is tunneled through the authenticated WebUI server, so do not forward the internal go2rtc streaming port (1984); it has no authentication of its own and should never be reachable from outside your machine's network.
| Option | Description |
|---|---|
| --last-used | Connect to the last used printer on startup |
| --all-saved-printers | Connect to all saved printers on startup |
| --printers="IP:TYPE:CODE,..." | Connect to specific printers (TYPE: "new" or "legacy") |
| --no-printers | Start WebUI only, without connecting to any printer |
| --webui-port=PORT | Override the WebUI port (default: 3000) |
| --webui-password=PASS | Override the WebUI password |
The application automatically creates a configuration file in the active data directory on first run. By default this is data/config.json.
By default, runtime data is stored in ./data under the working directory. Set DATA_DIR to move configuration, logs, and saved printer state elsewhere.
# Linux/macOS
DATA_DIR=/path/to/flashforge-data npm start
# PowerShell
$env:DATA_DIR = 'C:\FlashForgeWebUI\data'
npm start| Setting | Default | Description |
|---|---|---|
| WebUIEnabled | true |
Enable/disable the web interface |
| WebUIPort | 3000 |
Port for the web server |
| WebUIPassword | changeme |
Login password (change this!) |
| WebUIPasswordRequired | true |
Require password to access |
| SpoolmanEnabled | false |
Enable Spoolman integration |
| SpoolmanServerUrl | "" |
Your Spoolman server URL (e.g., http://192.168.1.100:7912) |
# Jest unit/integration tests
npm test
npm run test:watch # watch mode
npm run test:coverage # coverage report
# TypeScript checks
npm run type-check
# Lint/format
npm run checkTests live alongside the source under src/ (*.test.ts) and run through Jest.
# Build for specific platform
npm run build:linux # Linux x64
npm run build:linux-arm # Linux ARM64 (Raspberry Pi 4/5)
npm run build:linux-armv7 # Linux ARMv7 (Raspberry Pi 3)
npm run build:win # Windows x64
npm run build:mac # macOS x64
npm run build:mac-arm # macOS ARM (Apple Silicon)| Issue | Solution |
|---|---|
| "Cannot GET /" or blank page when accessing WebUI | If running from source: Make sure you ran npm run build before npm startIf using a pre-1.0.2 binary: Update to version 1.0.2 or later (fixes static file serving bug) |
| "Permission denied" when running binary | Run chmod +x flashforge-webui-linux-* to make executable |
| Port already in use | Change the port in the active config file (default data/config.json, or the directory pointed to by DATA_DIR) or use --webui-port=3001 |
| Cannot connect to printer | Ensure your printer is on the same network as the device running WebUI Check that the printer's IP address is correct For legacy printers, ensure TCP port 8899 is accessible |
| Selecting the correct binary for your platform | Windows: flashforge-webui-win-x64.exemacOS Intel: flashforge-webui-macos-x64macOS Apple Silicon: flashforge-webui-macos-arm64Linux x64: flashforge-webui-linux-x64Raspberry Pi (64-bit OS): flashforge-webui-linux-arm64Raspberry Pi (32-bit OS): flashforge-webui-linux-armv7Check your architecture with uname -m (x86_64 = x64, aarch64 = ARM64, armv7l = ARMv7) |
| Project | Role |
|---|---|
| ff-5mp-api-ts | FlashForge API Client Library |
| slicer-meta | Printer Metadata & Model Utilities |
| FlashForgeUI-Electron | Original Desktop Application |
| Spoolman | Filament Management |