A workshop instrument, not another cloud service

FILATURE
Know every spool.

A self-hosted filament stock manager for your 3D-printing workshop — track every spool, weight, value and printer from one calm dashboard.

  • Rust
  • Single binary
  • Self-hosted
  • Light & dark
Filature dashboard showing stock value, remaining weight, spool counts, material breakdown, and low-stock alerts

Features

Your filament stock, made legible

From the first sealed spool to the last few metres, Filature keeps workshop data useful without turning it into administrative work.

Dashboard

See stock value, remaining weight, spool counts, low-stock alerts, stock split by material, and the spools closest to empty.

Dashboard with filament stock KPIs and material breakdown

Spools

Filter and sort table or card views, edit remaining weight inline, and use a two-screen add wizard. Follow the complete Sealed → Open → Empty → Archived lifecycle.

Spool inventory displayed as colour-coded cards

Spool detail

Read remaining grams, calculated metres and percentage at a glance, with a weight gauge, identity, purchase information, and notes.

Detailed spool view with remaining weight, length, percentage, and purchase information

Materials referential

Edit density, drying parameters, humidity sensitivity, and default nozzle and bed temperatures in one source of truth.

Editable materials reference table with density, drying, sensitivity, and temperature fields

Locations

Model shelves, dryboxes, and every other physical place where spools are stored.

Settings page listing spool storage locations

Printers

Represent Bambu multi-AMS topology, multiple print heads, feed modes, and the spool loaded in each slot with its colour pastille.

Printer page showing a Bambu multi-AMS topology and colour-coded loaded spools

Settings

Tabbed controls for the low-stock alert threshold, locale, and theme.

Export / Import

Back up or restore the complete instance as a portable file from the UI.

International & themed

Use Filature in English or French, with equal care in light and dark modes.

Screenshots

A closer look

Installation

One binary, one database

Filature is a single self-contained Rust binary with templates, static assets, i18n catalogs, and migrations embedded. It uses PostgreSQL. HTTPS is terminated by a separate reverse proxy.

Measured footprint

12 MBrelease binary
~118 MBruntime image
< ~50 MBapp idle RAM
~120 MBimage on disk

PostgreSQL is the larger memory consumer. A Raspberry Pi 4 with 4 GB is comfortable; 2 GB is workable for PostgreSQL, one app instance, and the OS. A personal database is typically only tens of megabytes.

Raspberry Pi 4 (arm64) supported.

The published image is multi-architecture. On a Pi, Docker automatically pulls the arm64 variant:

docker compose -f docker-compose.prod.yml up -d --pull always

Install

  1. Get the repository files

    Use a Compose file referencing ghcr.io/ziggornif/filature:latest, such as docker-compose.prod.yml.

    git clone https://github.com/ziggornif/filature.git
    cd filature
    cp .env.example .env
  2. Configure the database and login

    Set POSTGRES_PASSWORD in .env, then generate the mandatory Argon2 password hash:

    docker compose run --rm app hash-password '<your-password>'
  3. Start and verify

    docker compose up -d --pull always
    docker compose ps
    curl -I http://localhost:${APP_PORT:-8080}

    Point your HTTPS reverse proxy at the published port.

Configuration

VariablePurpose
POSTGRES_USERPostgreSQL role used by Filature.
POSTGRES_PASSWORDPostgreSQL password; set this before starting.
POSTGRES_DBPostgreSQL database name.
APP_PORTHost port published for the application.
APP_BINDAddress and port the application binds to.
FILATURE_DEFAULT_LOCALEDefault UI locale: fr or en.
FILATURE_AUTH__USERNAMEMandatory shared operator username.
FILATURE_AUTH__PASSWORD_HASHMandatory Argon2 PHC password hash from filature hash-password.
FILATURE_<SECTION>__<KEY>Override any nested configuration key; double underscores separate levels.
Secure the boundary.

Filature has a mandatory single-credential login gate. It refuses to boot without FILATURE_AUTH__USERNAME and FILATURE_AUTH__PASSWORD_HASH, and default-denies every path without a valid session. This is one shared operator credential—not multi-user access or roles. Filature does not provide TLS; terminate HTTPS at your reverse proxy and keep the application port private.

Backup and restore

Use the in-app Export / Import tab for a portable full-instance backup, or work directly with PostgreSQL:

# Backup
docker compose exec db pg_dump -U filature filature > backup-$(date +%F).sql

# Restore
cat backup.sql | docker compose exec -T db psql -U filature -d filature

Contributing

Build the workshop tool with us

Bug reports, focused pull requests, and careful improvements are welcome. The contributor guide covers local setup, tests, architecture, i18n, and the project workflow.