kept is a free, open source erp & operations project written in TypeScript and released under AGPL-3.0. It has 512 GitHub stars, 35 forks and 30 open issues, and was last pushed 6 hours ago. On this registry it ranks #24 of 25 tracked projects in ERP & Operations, with 5 head-to-head comparisons available.

What is kept?

Kept is a self-hosted, open-source inventory of everything you own and where it is, built for households, homelabs and small teams who would rather keep the record of their belongings on their own server than in someone else's cloud.

What it is

Kept is a TypeScript application, licensed AGPL-3.0, that catalogues a physical world: homes, garages and storage units; the rooms, shelves and boxes inside them; and the things inside those, with their receipts, manuals, warranties and history. It runs on your own server or homelab, and nothing leaves it unless you turn it on: there is no telemetry, the update check is off by default, and the AI provider is yours to choose.

The concrete problem it solves is that knowledge of where a thing is otherwise lives in memory, in a spreadsheet or in a cloud service somebody else operates. Kept replaces that with a structured inventory of locations, places, boxes and things, carrying quantities, custom fields, saved views, an archive and a restorable trash, which answers both where an item is and who has it. It sits among self-hosted inventory tools and can import from Homebox.

Key capabilities

  • Locations, places, boxes and things with photos, documents, purchases, tags, custom fields, quantities, saved views, search, an archive and a restorable trash; furniture has compartments that can be turned, merged and split.
  • A 3D map and graph: each location rendered in 3D with rooms at their real size, startable from an existing floor plan, with a 2D or 3D graph of its places, boxes and things.
  • Labels and scanning: a short ID and QR code for every box, printable on label-printer rolls or office-printer sheets, with scan sessions that count a shelf, pack a box or move a pile in one pass.
  • Lending and kits: who has what and when it is due back, borrowers without an account, reminders either side of the due date, and boxes lent as kits where each thing returns on its own record.
  • An AI assistant and MCP server: plain-word questions with changes waiting for confirmation, Claude and other agents connecting at /mcp, and capture through OpenAI, Anthropic, Google, OpenRouter, Groq or an OpenAI-compatible server such as Ollama.
  • Reminders for warranties, services, documents, loans and low stock by mail, push, ntfy, Telegram and a calendar feed, plus readings, services, fuel and running costs for vehicles.
  • Readable backups and imports: nightly restic backups to a directory, S3 or SFTP with a copy that opens in a browser without Kept, plus Homebox and CSV imports and full exports.

Who uses it and how

  • Households tracking a home, garage or storage unit room by room, with shared locations, roles with end dates, share links, stocktakes, condition reports and an insurance report.
  • People moving house, who number boxes, print a label and contents sheet for each, track them in the van and unpack by scanning.
  • Homelab operators running Docker Compose or Kubernetes on their own server, with no telemetry and the update check off by default.
  • Home Assistant users installing Kept as an app whose integration brings what is due into dashboards and automations, and Paperless-ngx users linking documents rather than copying them.

Getting started

The README points to two browser demos that install nothing and save nothing, and to hosting it yourself with Docker Compose or Kubernetes under its Quick Start section.

How it compares

No paid products are listed in the facts; the only similar tool named is Homebox, which Kept can import from, with a past import repairable and imported link titles optionally taken from Paperless-ngx. The contrast the facts support is one of scope: Kept is a self-hosted AGPL-3.0 application that adds a 3D map, QR label printing, lending records and an MCP server to that inventory.

When to use it — and when not to

Self-hosting means operating the application itself, a restic backup target (a directory, S3 or SFTP), and mail, push, ntfy or Telegram channels if reminders should leave the app, with an AI provider optional but requiring an account and a key. Anyone wanting a managed service with no server to run, or unwilling to label and scan boxes, should look elsewhere. The README excerpt stops partway through the deployment section, so exact networking and HTTPS instructions are not documented here, and the project carries 30 open issues.

project readme (upstream, from github) — read inline

A self-hosted, open-source inventory of everything you own and where it is.

Latest release CI status Licence: AGPL-3.0 Documentation Container image: ghcr.io/keptinventory/kept Docker Hub: keptinventory/kept Add Kept to Home Assistant Discord members CLA: sign once

Homes, garages and storage units; the rooms, shelves and boxes inside them; the things inside those, with receipts, manuals, warranties and history. Self-hosted, on your own server or homelab. Nothing leaves it unless you turn it on: no telemetry, the update check off by default, the AI provider yours to choose.

Try it

Nothing to install, nothing saved.

  • Try Kept: the whole app, with a sample household.
  • Try the map: the 3D map, with a sample home.
  • Host it: Docker Compose or Kubernetes.

A look around

  • List: names first, each with its type; a box says how much is inside; the amber tape only on things with a printed label.
  • Map: each location in 3D: floors, rooms, shelves and boxes, what's inside one tap away. Arranged by you, or laid out by Kept. Plan view, balconies and terraces (the map).
  • Graph: a location's places, boxes and things, in 2D or 3D.

On a phone

Installs as an app. Capture, scan and search, offline too.

Labels

A short ID and a QR code for every box. Label-printer rolls or office-printer sheets; scan one to open the box.

What it does

Every feature, with its page: all features.

  • Inventory. Locations, places, boxes and things, with photos, documents, purchases, tags, custom fields, quantities, saved views, search, an archive for what you no longer use and a trash you can restore from. Furniture with compartments you can turn, merge and split. A place tree you can widen or collapse. Hide your Personal location if you don't use it.
  • 3D map and graph. Each location in 3D, rooms at their real size, started from a floor plan if you have one; its places and things as a graph (the map).
  • Labels and scanning. Print label sheets with a short ID and a QR code; scan one to open the box it is on. Scan sessions count a shelf, pack a box or move a pile in one go.
  • Lending and borrowing. Who has what and when it's due back; borrowers need no account. Reminders before and after the due date, and one list of everything out (lending).
  • Kits and hand-overs. Lend a box with everything in it; each thing comes back on its own record (kits).
  • Moving house. Numbered boxes, a label and a contents sheet for each, tracked in the van, unpacked by scanning (moving).
  • Reminders. Warranties, services, documents, loans and low stock: in the app, by mail, push, ntfy, Telegram and a calendar feed.
  • Vehicles and machines. Readings, services, fuel and running costs.
  • The household. Shared locations with roles and end dates, share links, stocktakes, condition reports, an insurance report and insights.
  • Capture. Photograph a thing, a receipt, a label or a whole room, online or offline; your AI provider (OpenAI, Anthropic, Google, OpenRouter, Groq, or an OpenAI-compatible server such as Ollama) suggests the details and you confirm them. Without one, you type them.
  • AI assistant and MCP server. Ask in plain words; changes wait for your OK. Claude and other AI agents connect at /mcp and stay connected (how).
  • Home Assistant. Install Kept as a Home Assistant app; an integration brings what's due into dashboards and automations (Home Assistant).
  • Paperless-ngx. Link documents instead of copying them; the start of a word finds one, and a Homebox import takes its links' titles from Paperless (Paperless).
  • Backups you can read. Nightly restic backups to a directory, S3 or SFTP, each with a copy that opens in a browser without Kept; imports from Homebox (a past import can be repaired) and CSV, full exports.
  • Your own network or HTTPS. Works over plain http at home, with sign-ins as long as you set and more than one address; an export with secret values needs HTTPS.
  • Languages: English, Arabic (right to left), French, German, Italian, Vietnamese and Ukrainian; type to find yours.

Quick start: host it

Docker with Compose v2. Tested on 1 GB of RAM and one CPU core, a backup during photo uploads included; Kept and its database use about 200–400 MB (what was tested).

mkdir kept && cd kept
curl -fsSLO https://raw.githubusercontent.com/keptinventory/kept/v1.14.5/compose.yaml
docker compose run --rm init
docker compose up -d
  1. compose.yaml: Kept and its database in one file; no clone, no passwords to make.
  2. init: asks the address you'll open Kept at (a name such as http://kept.home.arpa:8080 beats an IP address: printed labels carry it), writes .env and shows the setup code.
  3. Start: the database, a one-shot bootstrap that makes the database logins and their passwords, the one-shot migrate, then Kept on port 8080 (KEPT_HTTP_PORT changes it).
  4. First run: open the address, enter the setup code, create the first account. It becomes the instance admin. Then keep the keys off this server: docker compose exec kept kept admin recovery-kit prints them.

The camera, installing the app, push and location need HTTPS. Caddy, with a certificate for KEPT_DOMAIN, and Ollama for local AI come with compose.full.yaml: the same file plus those (Caddy and Ollama, HTTPS). Every step in full: the install guide.

  • Home Assistant: on Home Assistant OS, Kept installs as an app with its own database, backed up with Home Assistant's backups (install as a Home Assistant app):

Add Kept to Home Assistant

Sensors and the calendar come from the separate integration (Works with).

  • Kubernetes: the Helm chart, oci://ghcr.io/keptinventory/charts/kept, signed and published with each release (install on Kubernetes).
  • Verify the image: cosign verify --key cosign.pub :, with cosign.pub from this repository (verifying a release).
  • Backups: nightly, encrypted, to a directory, S3 or SFTP (backups).

Works with

  • Paperless-ngx: receipts, manuals and warranty cards linked to things (setup).
  • The rest: integrations.

What's next

Full roadmap → · 👍 the themes you want most.

Links

Documentation keptinventory.info
Install Docker Compose, HTTPS, Kubernetes (Helm chart in charts/kept), configuration
API HTTP API reference, generated from the OpenAPI document
MCP Connect an AI client
Roadmap Now, next and later
Questions and ideas Discussions
Chat Discord
Contributing CONTRIBUTING.md: a discussion or an issue first for anything larger than a fix; sign the CLA once
Security SECURITY.md: report privately, never in a public issue
Changelog CHANGELOG.md

Licence

Kept is free software under the GNU Affero General Public License, version 3 (LICENSE), and every feature ships in it: nothing is held back. If you run a modified Kept for other people, you must offer them its source. The image carries the third-party notices of everything inside it, served at /notices.txt.

Star history

Star History Chart

Created by Ibrahim Roshdy · AGPL-3.0

Frequently asked questions

Is kept free to use?

kept is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does kept do?

Self-hosted, open-source inventory of everything you own and where it is. AI assistant and MCP server built in.

What is kept written in?

kept is primarily written in TypeScript. Its source is publicly available at https://github.com/keptinventory/kept, and it has 512 GitHub stars.