HIHome Inventory
GitHub
Self-hosted inventory · physical and digital items

Know what you own, and where you put it.

Types you define at runtime. Storage locations nested as deep as your cellar is. QR labels you print yourself. Clients that keep working when the network does not — and reconcile field by field when it comes back.

  • AGPL-3.0-or-later
  • Java 25 · Spring Boot 4
  • PostgreSQL 18
  • React PWA · Compose Multiplatform
  • rootless Podman or Docker
7Q2M-4X9K-D2F
Every item carries a public code: ten characters of Crockford Base32 plus a Damm check symbol. It stays readable when the camera fails, and it is not the database key.
Offline — 7 changes are stored locally and reconciled when the network returns.
Items in Cellar › Workshop
Code Location Status
Cordless drill GSB 18V-55 7Q2M-4X9K-D2F Cellar › Workshop › Shelf B €149.00
35 mm f/1.8 lens K4T-8RN-2WC Cellar › Workshop › Cabinet 2 €279.00 Upload pending
Winter tyres 205/55 R16 3MB-Q7X-5DH Cellar › Workshop › High rack €420.00 Conflict
Spare key, server cabinet 9VF-D2K-6TA Cellar › Workshop › Key box Not yet assigned
Licence key, CAD suite R8N-J5P-1QE Digital › Licences No permission
Battery pack 4.0 Ah C6H-W3Y-8ZB Cellar › Workshop › Shelf B €69.90
3,211 items · 412 in this selection Conflict· 2 Upload pending· 7
The item list at expanded width: the columns you chose, a sortable head, and every state carried by an icon and a word rather than a colour.

What it does

All features in detail

Three decisions that shape everything else

The data never leaves the house

The core makes no outbound connection at all. Mail, remote storage, push and federated login are plugins you enable, each in its own network segment behind an allowlisting proxy. Nothing is sent anywhere because a vendor found it convenient.

Rootless, on every supported path

No container daemon and no container runs as root on the host — Podman with Quadlet, Docker with Compose, or Kubernetes with a restricted profile. Converting a running installation afterwards means re-homing every volume; at the start it costs an hour.

Offline is a normal state, not an error

A cellar has no reception. The apps stay fully editable offline, show a hueless strip with the count of unsent changes, and reconcile with a three-way compare per field. Only what genuinely disagrees ever reaches you.

Already running something else?

CSV import with a mapping profile and a dry run is part of the plan, with ready-made profiles for Homebox and InvenTree. Export works the other way round too: a full tenant export, so leaving is as supported as arriving.

  • Import profiles for Homebox and InvenTree, plus generic CSV
  • Tenant export and GDPR access, both as ordinary features
  • Fields you define yourself instead of a fixed item form
  • Native Android and iOS clients, not a wrapped web view

Where the project stands

Full roadmap
Stage 0 is being implemented — the architecture is finished, the first stage is being built against it
The repository holds 14 architecture chapters, 56 decision records and a verifiable requirements catalogue, and the stage-0 application, web client and deployment descriptions are being written against them. There is no release yet and nothing to install today; the four stages below are the agreed order of work.
Stage 0 Capture and find Items, photos, a location tree, full-text search and a hardened instance on the internet.
Stage 1 Configurable and multi-tenant The type system, tenants and roles, the plugin runtime, search facets, lifecycle and value reporting.
Stage 2 Label, scan, stocktake Public codes, label media and printing, scan sessions, stocktake and moving mode.
Stage 3 Open the contract The published plugin SDK, the mobile apps, full bidirectional offline sync and conflict resolution.