spoolr / download
v0.8.1 Released May 29, 2026 · release notes →

Connect your printers
to spoolr.io.

Spoolr Connect is the lightweight, open-source agent that runs on your network and bridges your 3D printers to the Spoolr cloud — so you can monitor and control them from anywhere. Outbound-only: no open ports, no port-forwarding, no VPN.

MIT licensed Outbound-only Klipper · Moonraker · Bambu (beta)
MACOS BUILD
macOS · universal (Apple Silicon + Intel)
Spoolr Connect.app · menu-bar agent · ~11 MB
First-launch security prompt is expected. Spoolr is open-source and ad-hoc signed (not notarized — Spoolr has no paid Apple account). Downloading the .zip in a browser quarantines it, so you'll click Open Anyway in System Settings › Privacy & Security. Installing with brew install --cask kurenn/tap/spoolr-connect — or the one-line Terminal install (right) — clears the quarantine for you, so neither shows this prompt. Per-OS steps →
install · macOS / Linux / Raspberry Pi open source
$curl -fsSL raw.githubusercontent.com/kurenn/printer-connector/main/install-macos.sh | bash
▸ detected: darwin/arm64 (macOS 14.5)
▸ fetching Spoolr Connect v0.8.1…[ok]
▸ installing Spoolr Connect.app → /Applications[ok]
▸ launching menu-bar agent[ok]
# scanning your LAN for printers…
moonraker · voron-01.lan:7125
bambu · 192.168.1.84 (X1C — LAN mode)
# paste your pairing token from spoolr.io to finish
paired with workspace "Dotworks" · 2 printers online
$
≈ 10s on a Raspberry Pi 4

Three steps from sign-in to live fleet.

Pairing happens once per machine that runs Connect. The dashboard issues a single-use token; Connect trades it for a per-installation secret over an outbound TLS connection — your printer never accepts inbound traffic.

01

Get a pairing token

Sign in to spoolr.io and add a connector. You'll get a single-use token that expires in 10 minutes.

spr_4kZ9qT…r7Qz2Xv
SINGLE-USE · EXPIRES IN 10:00
02

Install Connect

On a machine that sits on the same network as your printers — your laptop, a Raspberry Pi, the Klipper host, or the K1's onboard Linux. One binary, no dependencies.

macOS · Linux · Pi · K1 · Windows
03

Paste the token

Drop the token into Connect's menu-bar app or the installer prompt (or run printer-connector register --token <token>). Your printers light up in the dashboard within seconds.

OUTBOUND TLS · HANDSHAKE

Pick your platform.

Three supported hosts today. All builds come from the same Go source — verify by cloning github.com/kurenn/printer-connector and running go build ./cmd/connector if you'd rather not trust our binaries.

Linux · Raspberry Pi · Creality K1
arm64 · armv7 · x86_64
One-line installer that picks the right binary, installs it, and runs it as a background service (systemd on Linux / Pi, the K1's init system on Creality firmware).
Linux / Raspberry Pi
$ wget -qO- raw.githubusercontent.com/kurenn/printer-connector/main/install-klipper.sh | sudo bash
Creality K1 / K1 Max
$ wget -qO- raw.githubusercontent.com/kurenn/printer-connector/main/install-k1.sh | sh
# ssh as root@<printer-ip> first
Klipper / Moonraker required Manual install ›
NEW · BETA
Windows
x64 · GUI installer + Windows Service
A small GUI installer sets up Connect as a background Windows Service, scans for printers, and prompts for your pairing token. Newly shipped and still being validated across the printer matrix — tell us what works.
download
Not signed with a paid Authenticode cert. SmartScreen will warn on first run — click More info → Run anyway. Code-signing is on the roadmap.
Windows 10 / 11 · x64 Checksums ›

What Connect talks to.

Connect speaks each printer's native protocol — Moonraker's HTTP API, Bambu's MQTT + FTPS in LAN mode — so you don't run a separate plugin or expose anything to the internet. Auto-discovery sweeps your LAN on first launch.

FULLY SUPPORTED

Klipper · Moonraker

Raspberry Pi · BTT Pad · mini PC · Creality K1 / K1 Max
The primary path. Real-time telemetry, remote control, MJPEG webcam, and file management all work out of the box.
Moonraker HTTP WebSocket Auto-discover
BETA

Bambu Lab — LAN mode

X1 / X1 Carbon · P1S / P1P · A1 / A1 mini
Supported, but not yet validated on every real Bambu in the wild. If you run one, please pair it and tell us what breaks — we triage Bambu reports first.
MQTT FTPS LAN-only
COMING SOON

PrusaLink · Elegoo SDCP

Prusa MK4 / XL · Elegoo Centauri · Anycubic Kobra (SDCP)
On the roadmap, not yet available. Watch the changelog to know when these go live.
Roadmap

Everything you'd want to do remotely.

Connect mirrors the controls your printer already offers — nothing more. If a printer doesn't expose pause-mid-print, neither will the dashboard. Capabilities listed below are live today.

Real-time monitoring

Printer state, job progress, layer count, and hotend / bed / chamber temperatures stream to the dashboard.

TELEMETRY ~30s · HEARTBEAT ~10s

Remote print control

Pause, resume, cancel, home, and start prints. Only the controls a given printer actually exposes are shown.

CAPABILITY-NEGOTIATED

Live webcam

Smooth MJPEG stream when you open a printer, plus on-demand snapshots for notifications and timelapses.

MJPEG · JPEG SNAPSHOT

Live G-code view

The running print's G-code streamed to the dashboard's in-browser viewer, with the current layer highlighted.

WEBGL · IN-BROWSER

File management

List, upload, delete, and start G-code files. Drag-and-drop from the dashboard or push via the API.

LIST · UPLOAD · DELETE · START

Auto-discovery

On first launch Connect sweeps your subnet for Moonraker and Bambu printers and presents the list — one click to adopt.

LAN SWEEP · SSDP

Config backups

Snapshot a printer's config and database from the dashboard or on a schedule — restorable to the same printer when something goes sideways.

ON-DEMAND · SCHEDULED

Job history

Every print's outcome, duration, and filament usage feeds the fleet analytics view — success rate, utilization, throughput.

FUELS FLEET ANALYTICS

Simple updates

Re-run the one-line installer (or update.sh) to move to the latest release. No auto-update daemon — you decide when it changes.

MANUAL · update.sh

Safe to run at home.

Connect was designed for makers and small farms who don't want to think about networking. The model is deliberately one-directional: your printer never accepts a connection from the internet, and Spoolr's cloud only ever talks back over a channel you opened.

What we don't do

No open ports on your network. No port-forwarding. No VPN. No inbound access of any kind. Connect only ever initiates connections; if your router blocks inbound, you're fine.

Outbound TLS, port 443
Same channel a browser uses. Nothing else to configure.
Single-use pairing tokens
A leaked token expires in 10 minutes or after one successful pair, whichever comes first.
Per-installation secret
Stored on disk on the machine running Connect. Remove the connector from the dashboard to revoke it.

Open by default

MIT licensed. Read every line of the agent that's sitting on your network. Build it yourself if you don't want to trust our binaries — the same go build our CI runs.

Source on GitHub
github.com/kurenn/printer-connector — issues, PRs, releases.
Build from source
Go 1.22+ and go build ./cmd/connector. The CI workflow (.github/workflows/ci.yml) is the same gofmt → vet → build → test we ship from.
Runs entirely on your hardware
No cloud component on the printer side. Remove Connect any time and the printer keeps printing.

Tiny by design.

Connect is a single Go binary. No interpreter, no runtime, no surprise dependencies. It happily shares a Pi with Klipper, Moonraker, and a webcam.

CPU
Anything · 1 core
x86_64, ARM64 or ARMv7. A single core is enough alongside Klipper.
Memory
~64 MB resident
A bit more when relaying a webcam stream to the cloud.
Network
Outbound 443 only
TLS to www.spoolr.io. No inbound rules required.
Disk
~50 MB
Binary, config, and rotated logs. G-code cache is configurable.

What's new.

Tagging a vX.Y.Z release publishes the cross-compiled binaries and the macOS app. The full history lives in CHANGELOG.md.

v0.7.1latest
Jul 23, 2026

Fixed

Bambu printers now show up in the menu-bar app. Pairing only probed for Bambu when an "I have Bambu Lab printers" checkbox was ticked — and it defaulted to off, so pasting a token registered your Klipper printers and silently skipped every Bambu. The probe is now unconditional and the checkbox is gone.
Scanning no longer discards Bambu printers. They're reported separately (they need an access code before linking) and the scan list was only reading the Moonraker results, so a discovered Bambu was dropped before it reached the screen.
v0.7.0
Jul 23, 2026

Bambu Lab — validated on real hardware

Bambu printers are discoverable again while a slicer is running. Bambu Studio and Orca hold the SSDP port, which used to make discovery return "no printers found". A TLS-certificate sweep now finds them regardless.
Remote control of a Bambu works. Commands were published at a QoS the printer never acknowledges, so every pause / resume / cancel reported failure even when it worked.
start_print works. The firmware verifies the 3MF's md5 before printing; the connector now computes and sends it.
File listings are no longer empty — prints under /cache and factory models under /model are included, and those paths work for printing and deleting.
No more phantom chamber temperature on open-frame models (an A1 mini reports a fixed placeholder it can't measure).

Added

+
Homebrew install. brew install --cask kurenn/tap/spoolr-connect — clears the quarantine, so no Gatekeeper prompt.
+
Bambu telemetry now reports the printer model and module firmware versions.

Changed

~
The agent refuses commands a printer doesn't support instead of attempting them and returning a confusing protocol error.
~
elapsed_s is optional — drivers that can't report elapsed time omit it rather than publishing a misleading 0.

Note

~
Bambu remote control requires LAN Only Mode. A cloud-bound Bambu accepts telemetry over the LAN but ignores control commands. Monitoring works in either mode; only pause / resume / cancel / start need the toggle.
v0.6.0
May 29, 2026

Added

+
Auto-update check. The menu-bar app polls GitHub on launch (debounced) and every 24 h after — when a newer release ships, the popover shows a one-line "Update available" banner with a Download button.
+
Launch at Login. Right-click the menu-bar icon to register the app with SMAppService, so the agent comes back up after every reboot without re-launching by hand.
+
Agent health + Restart. A footer warning row in the popover surfaces "Agent stopped" (red) or "Agent not responding" (yellow) with a one-click Restart Agent button.
+
Right-click menu on the menu-bar icon: Check for Updates Now, Launch at Login, Restart Agent, Quit.

Fixed

The popover no longer advertises "PRINTING" with frozen progress when the agent has stopped writing. status.json is checked for staleness and every printer falls back to offline after 90 s.
One unresponsive printer can no longer stall the whole snapshot loop — each QueryObjects call now runs under a 10 s timeout, so a wedged printer flips to offline in seconds instead of minutes.
Popover footer shows the real bundled app version instead of a hardcoded placeholder.
v0.5.0
May 28, 2026

Added

+
Live per-printer status in the menu bar. The agent writes a local status file the app reads, so the popover shows real printer status instead of sample data.
+
Windows support. Inno Setup installer (SpoolrConnect-Setup.exe) that registers a background Windows Service.
+
Streamed slicer uploads. The agent streams g-code from a signed cloud URL straight to the printer, with optional autostart.
+
Periodic LAN re-discovery. After pairing, the agent keeps sweeping the network and auto-adopts newly-found printers.

Fixed

Menu-bar polish — legible label contrast, a solid dark panel, a real app icon, and a working "Open dashboard" link.
v0.4.0
May 26, 2026

Added

+
macOS app distribution ($0, no Apple account). Universal, ad-hoc-signed Spoolr Connect.app + a one-line install-macos.sh and a published SpoolrConnect-macos.zip.
+
Project guide and substantially expanded Go + Swift test coverage.

Fixed

Menu-bar app now persists its pairing across restarts — no more re-pairing.
Network-scan "Pair" runs the real pairing flow instead of a mock; a rescan hides already-linked printers.

Security

!
Stopped committing a dev config that held a secret; gitignored real configs and scrubbed LAN IPs from examples.
v0.1.0 – v0.3.0
Dec 2025 – May 2026

Earlier

+
v0.1.0 — Creality K1 / K1 Max support.
+
v0.2.0 – v0.3.0 — LAN auto-discovery, Bambu Lab (beta) over MQTT + FTPS, and the install-from-releases flow.
~
Heartbeat cadence tightened to ~10s so "offline" shows within seconds; macOS app shipped universal.

Full history

Open source · MIT
Read the code, file issues, send PRs. Bambu validation reports and Windows install logs are especially appreciated right now.