v0.3.1 · MIT licensed

Master data management, without the mainframe.

miniMDM is a minimal, self-hosted application for curating the records your business runs on — customers, products, locations, anything. Define your schema in YAML, edit through a clean web UI or REST API, and get versioning, audit trails and access control out of the box.

Self-hosted MIT licensed Zero telemetry PostgreSQL-backed
mdm.internal.example.com
miniMDM dashboard showing schemas and object counts
Audit log tracks every change
YAML Define your schema in one file
What's inside

Everything you need to govern a golden record — nothing you don't.

miniMDM ships the primitives that serious master-data work actually requires. No vendor upgrades, no per-seat licensing, no modules to buy separately.

Schema as code

Define every data object — fields, types, references, required flags — in a single YAML or JSON config file. Version it in Git alongside the rest of your infrastructure.

Full record versioning

Every edit writes a new version. Browse the complete history of any record, diff what changed, and revert to any prior state — no backup tape required.

Record lifecycle management

Move records through draft → active → retired states without breaking API consumers. Edits create an isolated draft copy; publishing promotes it back to the master record. Retired records are excluded from default API responses but never deleted. Webhook callbacks fire on every transition so downstream systems stay in sync.

Complete audit log

What changed, who changed it, when, and why — searchable and filterable.

Role-based access

Four permission tiers — Viewer, Editor, Publisher, Admin — with per-schema grants for fine-grained control over who can read, write, or promote records.

Bulk import / export

CSV, TSV and JSON round-trips, with optional upsert-by-key.

Full-text search

Search within any object. Sortable columns and sorted dropdowns keep forms usable.

References & hierarchies

Cross-object references and parent-child relations, surfaced inline on the detail view.

Auto-generated REST API

Every object gets a documented endpoint and OpenAPI spec — automatically.

A guided tour

See what working in miniMDM actually looks like.

No marketing mock-ups — these are the real screens, captured from the live app.

mdm.internal.example.com / projects / records
A sortable list of project records with search, pagination and badge tags

01 Records list — sortable columns, full-text search and bulk actions on every object.

mdm.internal.example.com / projects / records / 42
Record detail view with fields grouped into sections and related objects below

02 Detail view — fields grouped into sections with child records and back-references inline.

mdm.internal.example.com / projects / records / 42 / history
Version history timeline for a single record, with insert/update/revert badges

03 Version history — every edit stored forever, any version revertable in one click.

mdm.internal.example.com / audit
System-wide audit log listing user actions with timestamps and filters

04 Audit log — a filterable trail of every action across every schema and user.

Where it fits

The sweet spot between a shared spreadsheet and a six-figure MDM platform.

If your reference data has outgrown a spreadsheet but doesn't need a multi-year rollout, you're exactly who miniMDM is for.

  Shared spreadsheet miniMDM Enterprise MDM suite
Time to first record Minutes Minutes Weeks to months
Record-level versioning
Lifecycle states (draft / active / retired)
Full audit log (who / what / why)
Role & schema-level access control Sheet-level
REST API + OpenAPI spec
Schema defined as code (Git-tracked) Usually UI-only
Self-hosted, no vendor lock-in
Cost $0 (with caveats) Free & MIT licensed $$$ per seat, per year
Open source

Free to use, free to extend, free to audit.

miniMDM is MIT licensed and lives entirely on your own infrastructure. Clone the repo, run it with Docker, read every line of the source.

MITLicense
0.3.1Latest release
0Telemetry calls
PostgreSQLBackend

Built on FastAPI, SQLAlchemy and PostgreSQL. Every change is tracked through Alembic migrations; every request gets a correlated log line. Deploy it on your laptop, a homelab VM, or behind your company's reverse proxy.

# Clone and run with Docker
$git clone https://github.com/planemarlin/minimdm
$cd minimdm
$cp config/minimdm.example.yaml config/minimdm.yaml
$docker compose up -d
# → http://localhost:8000
# → http://localhost:8000/docs (OpenAPI)
✓ server started
✓ migrations applied
✓ schemas loaded from config/minimdm.yaml