Runs on your own hardware
Filament Tracker
Weigh it, label it, scan it. Always know which spool has enough left for the next print.
Anyone with a 3D printer and a shelf of half-used spools.
PLA Orange
#3F9A1C07
954.6 g · on shelf
1. Weigh
Add a spool · 5 of 6 · PLA Orange, 1000 g when full
1,231.6 g steady
empty spool = 1,231.6 − 1,000.0 = 231.6 g
The spool’s empty weight is worked out from this, so later weighings know how much filament is left.
2. Label
PLA#3F9A1C07
Orange
1000 g · 2026-09-28
Stick on the label, then scan it. Waiting for FT1-K7QMZ…
Code 128, because the NETUM scanner reads 1D codes only. The barcode above is a real one for FT1-K7QMZXHD4WTBR3NPLE6A.
3. Check out
Checked out · going into the printer
- A1
PLA:FFFFFFFFWhite - A2
PLA:FF6A13FF#3F9A1C07 - A3
PETG:8E9089FFGray - A4empty
The P1S reports PLA:FF6A13FF in A2. Only one checked-out spool is orange PLA, so the station matches A2 to it without asking. When a print ends, the slicer’s estimate (here 41.3 g) comes off that spool.
4. Return
Return & weigh · put the spool on the scale
1,186.2 g steady
1,186.2 − 231.6 empty spool = 954.6 g left
The slicer said 41.3 g. The scale says 45.4 g. The scale’s number is the one kept.
What it does
Know how much filament is left on every spool.
It runs as a server plus one Tauri app that works both as a Windows desktop app and as a touchscreen station on a Raspberry Pi next to the printer. The station talks to a barcode scanner, a Bluetooth label printer and a serial scale, and updates itself over the air with signed releases.
- 01
Works with a barcode scanner, a Bluetooth label printer and an RS-232 scale
- 02
Watches a Bambu P1S and matches AMS slots to spools automatically
- 03
Check-in and check-out with an audit log and snapshot restore
- 04
Signed over-the-air updates for the Raspberry Pi station
On the bench
Built around the hardware on my shelf.
The station is a Raspberry Pi with a 7-inch touchscreen that boots straight into the app. The same Tauri app runs on Windows. Each device below is the model it was written for.
- 01
NETUM NT-1228BC
A 1D barcode scanner, through its 2.4 GHz receiver or Bluetooth. Scanning a label opens that spool.
- 02
JADENS JD268BT
A Bluetooth thermal label printer. The station prints the label right after the first weighing.
- 03
U.S. Solid USS-DBS61-50
A 5 kg × 0.01 g balance on an RS-232-to-USB cable. The station reads it directly and waits for a steady reading.
- 04
Bambu P1S
Followed over the network, read only. It never controls the printer.
The rules
The numbers have to add up.
Mass is stored as whole milligrams, so nothing drifts. A reweigh that comes out heavier than the last one is held until someone gives a reason. If two stations check out the same spool at once, one wins and the other is told to refresh. Every change goes into an audit log, and the station backs itself up once a day and keeps the last 14.
# what's left, every time remaining = gross − empty spool # the empty spool, at registration empty spool = first weighing − filament when full # a reweigh is one of consumption · noise · discrepancy (needs a reason)
Specification
What it’s built with, and when.
Pulled from the repository each time this site is built.
- State
- In development
- Discipline
- Applications
- Shape
- Installed software
- Started
- Sep 2026
- Last change
- Oct 2026
- Commits
- 76
- Rust
- Axum
- SQLite
- Tauri 2
- Svelte 5
- Raspberry Pi
- Rust 57%
- Svelte 29%
- TypeScript 7%
- Shell 3%
Related work
Built alongside Filament Tracker
Next
Get Filament Tracker
Ask about availability, a build for your platform, or a license.