OSMAINT Source on GitHub

Maintenance software
you can own.

An open-source CMMS for work orders, preventive maintenance, spare parts and reliability. Built on ISO 14224, hosted by you.

OSMAINT dashboard with asset count, open work orders, PM schedules, alarms, average asset health, availability per asset and recommended actions

The real application, running the bundled demo plant. Interface shown in Swedish; English is built in.

Why open source

Your maintenance history is the most valuable data your plant owns. Years of failure codes, repair times and spare-part usage decide what you replace, what you inspect and what you can stop doing.

Today that history usually lives inside a licence. When the contract changes, the price changes or the vendor retires your version, the data you created becomes something you rent back.

OSMAINT starts from the other end. The code is open under AGPLv3. The database is plain PostgreSQL. The taxonomy is ISO 14224, loaded as data you can read and change. If you stop using us, you keep everything.

A working alternative to IBM Maximo, SAP PM and MaintMaster, built by a maintenance consultancy rather than a software vendor.

Work orders from the first symptom to the closing failure code.

Corrective, preventive and emergency work in one list. Every order carries its asset, priority, ISO 14224 failure code, attachments, logged time, spare parts issued and returned, and the cost that follows.

Operators file work requests in plain words. A planner turns them into work orders with one click.

Work order list with order number, asset, type, status, failure code and priority

Preventive maintenance that plans itself.

Time- and meter-triggered schedules generate their own work orders. Set lead times, seasonal windows and parent and child PMs. The PM calendar shows what is due long before it is late.

Meter trends feed predictive maintenance, so an interval can follow real wear instead of a guess made at commissioning.

PM calendar over six months with status per schedule and a PM hierarchy

Reliability numbers you can defend.

MTBF, MTTR, availability, PM compliance and cost per asset, calculated from the work you actually logged. Labour, parts and other costs split per machine. Export to CSV, or build your own report and watch it over time.

PM compliance, monthly trend and an equipment report with availability, downtime, failures and cost per asset

AI that keeps working when the network doesn't.

Describe a fault the way a technician would say it. OSMAINT proposes the equipment class, failure mode and priority. Ask questions of your own data in English or Swedish and get answers drawn from your records.

The engine is pluggable. Point it at any OpenAI-compatible model, a local LLM on your own hardware, or nothing at all. Without a provider it falls back to deterministic rules and still runs fully offline.

AI assistant classifying the text 'Centrifugal pump stopped, leaking from seal' as pump, centrifugal, sealing failure, 90 percent confidence

The standard is data, not code.

Pick the taxonomy your industry speaks when you set up. The asset tree, its levels and the allowed failure modes follow. Change it later and the whole tree changes with it.

ISO 14224
Site, section, system, equipment, sub-unit, component
Electrical installation
Plant, supply, distribution board, circuit, equipment
Property
Property, building, floor, room, system, component
Your own
Load a custom taxonomy as data

Terminology follows EN 13306. Asset-management readiness maps to ISO 55001.

Asset tree built on the ISO 14224 hierarchy across two factories

Everything a maintenance department runs on.

Forty-five views in the web application, one REST API with 299 endpoints behind them. No module on this page is held back for a paid tier.

Assets

  • Asset register
  • Asset tree
  • Locations
  • Map
  • 3D digital twin
  • Warranty and insurance
  • Linear assets and calibration

Work

  • Work orders
  • Templates
  • Work requests
  • Preventive maintenance
  • Job plans

Operations

  • Alarms
  • Meter readings
  • Work permits
  • HSE incidents
  • Inspections

Stores and purchasing

  • Storerooms and bins
  • Requisition, PO, receipt
  • Reorder points
  • Vendors
  • Contracts
  • Rotable items

People and planning

  • Users, roles, permissions
  • Crafts and competence levels
  • Resources and crews
  • Schedule board and Gantt
  • Time tracking
  • Approvals with thresholds

Analysis and governance

  • Dashboard
  • PM and reliability report
  • Report builder
  • Watches
  • Cost
  • Investment planning
  • SLA and goals
  • Audit trail
  • Improvements

System

  • Integrations and webhooks
  • System health
  • Notifications
  • Light and dark themes

On the plant floor: a Flutter app for phones and tablets that queues work orders offline and syncs when the connection returns.

Measured, not promised.

The project runs its own release gate on production hardware. These are the latest results, with the method published next to them.

44 msp99 response time, 50 concurrent users
83.7 msp99 with 10 000 assets loaded
1 329writes per second, zero errors
0known vulnerabilities in the Go build (govulncheck)
0critical or serious accessibility violations across all 45 views (axe-core)
14days of daily database backups kept, restore tested

Not yet passed: an independent penetration test and a year of production use at a customer plant. Both are on the scorecard, in the open, until they are done. Read the scorecard

Running in five minutes.

One Go binary and one PostgreSQL database with PostGIS. Docker Compose starts the database, the API and the web interface in their own containers. Every migration applies automatically on start.

  1. Clone the repository.
  2. Start the stack with Docker Compose.
  3. Open localhost:3000, sign in with the default admin from the README and change the password.
  4. Choose your standard and create your first work order.

No Docker? Build the server with go build and point it at your own PostgreSQL. No telemetry you did not ask for.

terminal
# get the code
git clone https://github.com/MaintComp/osmaint.git
cd osmaint

# database, API and web in one command
docker compose up -d --build

# web  -> http://localhost:3000
# api  -> http://localhost:8080
Backend
Go, REST API
Database
PostgreSQL with PostGIS
Web
React, TypeScript, Carbon Design System
Mobile
Flutter, offline-first
Deploy
Docker Compose, Kubernetes-ready
Licence
GNU AGPLv3

Free to run. Backed if you need it.

Community edition

The full system under AGPLv3. Every module on this page, on your own server, for as many users and sites as you have. Change it, extend it, send improvements back.

Get the source

From MaintComp

OSMAINT hosted and operated for you, single sign-on, white-label, a support agreement with a service level, and a commercial licence when AGPL does not fit your organisation. Help moving off Maximo from people who work in it every day.

Talk to MaintComp

Built in the open, verified before merge.

Contributions are welcome, including AI-assisted ones, as long as they are actually tested. The contributing guide covers dev setup, the acceptance checklist and how to report a bug.

Contributing guide