Craig Wright
HomeAboutProjectsHome labMusingsContact
© 2026 Craig Wright

Everything you own, in one place

Music, films, books and games, physical and digital, scattered across shelves, storefronts and a media server. Armarium brings it into one self-hosted library, so you always know what you've already got.

Armarium on mobile, installed as a PWA
Armarium home screen, light mode
Item detail page: ownership, description, and details for a physical game
Games library, filtered to one category
View on GitHub
Add flow: scan a barcode or search by title
Locations manager, home modelled as rooms, shelves and boxes
Admin panel for users, permissions and Plex sync
Armarium home screen, dark mode

One thing, whatever the format

Most collection trackers pick a side: a spreadsheet for the shelf, or a store's library for digital. Armarium treats a CD and its digital copy as one thing you own. It spots the match, and asks before it links them.

Your stuff is everywhere

CDs live on a shelf. Digital purchases live in whichever store sold them. A media server knows what's been ripped. None of them know about each other, so answering "do I already own this?" means checking three or four places. Or not checking, and buying it twice.

It catalogues, it doesn't play

Plex and tools like it play what you've got. Armarium sits a layer above: it keeps track of what you own, physical formats included, whether or not it's ever been ripped.

Yours, on your hardware

A record of everything you own shouldn't depend on one company's roadmap. Armarium runs on your own hardware, so it isn't at the mercy of someone else's subscription.

Organise

A physical copy and its digital twin become one entry. Locations are modelled too, right down to which box.

Capture

Scan a barcode with your phone or laptop camera, discs and cartridges alike, and the title, artwork and release details fill themselves in.

Find

Search what you own before you buy it again. Connect a Plex server and your existing library joins the catalogue, without re-entering a single title.

Under the hood

A couple of Docker containers: FastAPI and async SQLAlchemy behind a React frontend. SQLite by default, so there's nothing extra to set up, with PostgreSQL if you want it. Everything, covers, backups and the database itself, lives in one volume you control.

  • FastAPI
  • SQLAlchemy 2.0 (async)
  • SQLite / PostgreSQL
  • React 19
  • Docker

Where it's heading

Armarium is live, self-hosted and MIT licensed. Next up is more formats and better linking, and the goal is still to answer "do I already own this?" faster than checking by hand.

The story of how it was built is on my site.