cmms is a free, open source erp & operations project written in TypeScript and released under AGPL-3.0. It has 853 GitHub stars, 250 forks and 34 open issues, and was last pushed 7 days ago. On this registry it ranks #16 of 24 tracked projects in ERP & Operations, with 5 head-to-head comparisons available. It gained 58 stars over the last 30 tracked days.

What is cmms?

What it is

Atlas CMMS is a self-hosted computerized maintenance management system written in TypeScript and licensed under AGPL-3.0. It provides a web application and a mobile application for managing maintenance work, equipment, inventory, locations, and service requests. The project lives in the open-source business software and ERP operations ecosystem, and it is deployed with Docker.

The concrete problem it solves is coordinating enterprise maintenance activities across assets, teams, requests, approvals, and costs. Facilities, manufacturing, healthcare, hospitality, public sector, education, and utility organizations need to create work orders, assign technicians or service providers, log time, track equipment downtime, manage inventory, and review maintenance costs. Atlas CMMS provides a single system for these activities, with work order tracking, equipment records, inventory alerts, purchase approvals, reports, and role-based workflows.

Key capabilities

  • Work orders can be created, assigned, tracked, prioritized, and logged with time and history.
  • Automated work orders can be generated with triggers, and workflows can be defined with automation logic.
  • Equipment records can track downtime and maintenance costs, while inventory management supports stock alerts.
  • Purchase orders and approvals can be automated, linking maintenance needs to procurement.
  • Reports and analytics cover work order compliance, cost analysis, equipment reliability, cost trends, and labor tracking.
  • User and workflow management supports teams, service providers, customizable roles, and permissions.
  • Locations can be managed with Google Maps integration, and service requests can be created and tracked.

Who uses it and how

  • Facilities managers use it to track building, property, and real estate maintenance requests and assign work to teams or external providers.
  • Manufacturing and production teams use it to maintain machinery, record downtime, manage inventory, and analyze maintenance costs.
  • Healthcare facilities use it to track medical equipment maintenance and service history.
  • Hospitality, public sector, educational institutions, and utility companies use it to manage distributed locations and infrastructure maintenance.
  • IT managers or developers deploy it to centralize maintenance operations while keeping data on self-managed infrastructure.

Getting started

The typical deployment method is Docker: download the provided docker-compose.yml, nginx.conf, and .env.example file, rename the environment file, set required variables, and run docker-compose up -d. The application is then accessed through a browser at the configured public URL or localhost port 3000.

When to use it — and when not to

Atlas CMMS is a good fit for organizations that need a free, self-hosted maintenance system and can operate the required dependencies, including PostgreSQL, MinIO, and a JWT secret. It is less suitable for teams that want a fully managed service or that cannot maintain database, object storage, and optional SMTP or SendGrid configuration. The repository is two years old and lists 34 open issues, so adopters should evaluate its production readiness and customization needs before committing.

project readme (upstream, from github) — read inline

Atlas CMMS

Atlas CMMS is a powerful, self-hosted maintenance management system designed for both web and mobile platforms using Docker. It simplifies and automates the management of maintenance activities, making it ideal for IT managers or developers looking to implement solutions that keep their organization's assets running smoothly. Think of it like Jira for technicians.

Example industries

  • Facilities Managers (buildings, property, real estate)
  • Manufacturing/Production Teams (machinery and equipment)
  • Healthcare Facilities (medical equipment maintenance)
  • Hospitality Managers (hotels and resorts)
  • Public Sector (infrastructure and public buildings)
  • Educational Institutions (campus maintenance)
  • Utility Companies (power, water, and energy systems)

Demo website

Screenshots:

work_orders_screenshot.png

⚡ Features

Work Orders & Maintenance

  • 📝 Create, assign, and track work orders.
  • ⏱️ Log time, set priorities, and track history.
  • 🤖 Automate work orders with triggers.
  • 📊 Export reports and view analytics.

Analytics & Reporting

  • 💼 Work order compliance and cost analysis.
  • 🛠️ Equipment downtime and reliability insights.
  • 💵 Cost trends and labor tracking.

Equipment & Inventory

  • ⚙️ Track equipment, downtime, and maintenance costs.
  • 📦 Manage inventory with stock alerts.
  • 🛒 Automate purchase orders and approvals.

User & Workflow Management

  • 👥 Assign tasks to teams or service providers.
  • 🧑‍💼 Customizable user roles and permissions.
  • 🔄 Define workflows with automation logic.

Locations & Requests

  • 📍 Manage locations with Google Maps integration.
  • 📑 Create and track service requests.

You can check out the complete list of features.

We'd love to have new contributors, so feel free to join us!
⭐ Star this repo to support us!

Self-Host / Run locally

⚡ Quick Start (2 minutes)

  1. Download:
  1. Run:
    docker-compose up -d
    

Go to http://localhost:3000 to access Atlas CMMS.

Need customization or production setup? Continue reading below ↓

Set environment variables

Name Required Description Default Value
POSTGRES_USER Yes Postgres user rootUser
POSTGRES_PWD Yes Postgres password mypassword
MINIO_USER Yes MiniO user minio
MINIO_PWD Yes MiniO password minio123
JWT_SECRET_KEY Yes JWT secret key. Generate with openssl rand -base64 32 your_jwt_secret
PUBLIC_SERVER_URL No Website URL in this format http://your.public.ip http://localhost:3000
ENABLE_EMAIL_NOTIFICATIONS No Enables or disables email notifications (true or false). Requires SMTP if enabled. false
INVITATION_VIA_EMAIL No Enables or disables user invitations via email (true or false). Requires SMTP and ENABLE_EMAIL_NOTIFICATIONS if enabled. false
MAIL_TYPE No Mail type: SMTP or SENDGRID smtp
SMTP_HOST No The SMTP host smtp.gmail.com
SMTP_PORT No The SMTP port 587
SMTP_USER No The SMTP username. If using Gmail, Learn how to create an app password (empty)
SMTP_PWD No The SMTP password. If using Gmail, Learn how to create an app password (empty)
SMTP_FROM No The SMTP from address, if different from the username. (empty)
SENDGRID_API_KEY No The Sendgrid API key (empty)
SENDGRID_FROM_EMAIL No The Sendgrid sender email (empty)
ALLOWED_ORGANIZATION_ADMINS No Comma separated email addresses allowed to sign up without being invited, hence allowed to create organizations. Empty means everyone can create an organization (empty)
GOOGLE_KEY No Google Maps API key (empty)
GOOGLE_TRACKING_ID No Google Analytics tracking ID (empty)
STORAGE_TYPE No Type of storage either local MinIO or Google Cloud Storage gcp or minio minio
GCP_JSON No The Google Cloud JSON key after following these instructions. (empty)
GCP_PROJECT_ID No The Google Cloud project ID, also found in the GCP_JSON file. (empty)
GCP_BUCKET_NAME No GCP Bucket Name (empty)
MAIL_RECIPIENTS No Comma-separated email addresses of the super admins where to send information emails like new signups. You can provide your email address. (empty)
LICENSE_KEY No Atlas CMMS license key to get access to advanced features. (empty)
ENABLE_SSO No Enables or disables SSO. (true or false ) Requires OAUTH2_PROVIDER, OAUTH2_CLIENT_ID and OAUTH2_CLIENT_SECRET. Make sure to add PUBLIC_SERVER_URL as authorized origin and ${PUBLIC_SERVER_URL}/api/oauth2/callback/${OAUTH2_PROVIDER} as authorized redirection URI in your Oauth2 provider settings false
OAUTH2_PROVIDER No Oauth2 provider google or microsoft (empty)
OAUTH2_CLIENT_ID No Oauth2 Client ID (empty)
OAUTH2_CLIENT_SECRET No Oauth2 client secret (empty)
LOGO_PATHS No Logo names in this format. {"dark": "dark.png","white": "white.png", }. Add 2 logos in a folder named logo in the same folder as the docker-compose.yml. Needs a license. (empty)
CUSTOM_COLORS No Custom colors in JSON format. All colors should be in hexadecimal format. {"emailColors":"#00A0E3","primary":"#EE4B2B","secondary":"#6E759F","success":"#57CA22","warning":"#FFA319","error":"#FF1943","info":"#33C2FF","black":"#223354","white":"#ffffff","primaryAlt":"#000C57"} (empty)
BRAND_CONFIG No Brand config for white labeling. Requires license. In format { "name": "Quantum Labs", "shortName": "QL", "website": "https://example.io", mail: "contact@example.io" } (empty)
LDAP_ENABLED No Enables or disables LDAP. More variables are needed. You can get the full list here false

For production deployments, it’s strongly recommended to use unique credentials and not rely on defaults. You should also setup TLS

Mobile app

You can use the Android app or iOS App and configure it with your custom backend server url: ${PUBLIC_SERVER_URL}/api

Getting help

Docs

Usage guide

Super admin docs

Join our Discord server

If you still have questions after reading the docs, concerns, bug reports, etc., please file an issue in this repository's Issue Tracker or email contact@atlas-cmms.com.

Supported languages

  • English
  • Spanish
  • French
  • German
  • Turkish
  • Polish
  • Portuguese (Brazil)
  • Arabic
  • Swedish
  • Italian
  • Russian
  • Dutch
  • Chinese
  • Hungarian
  • Bosnian
  • Japanese

🏗️ Tech Stack

Need Professional Help?

Don't want to handle the maintenance and management yourself? We offer a complete done-for-you service. Please reach out to us

🤝 Looking to contribute?

We welcome contributions! You can help by:

  • ✅ Reporting bugs
  • ✅ Suggesting new features
  • ✅ Improving documentation
  • ✅ Submitting pull requests

Check CONTRIBUTING.md inside each subproject for details.

You can also join our Discord server

Open source licensing info

Atlas CMMS is dual-licensed:

To enable commercial features, you must set a valid LICENSE_KEY.
For commercial licenses, visit atlas-cmms.com/pricing?type=selfhosted or email us at contact@atlas-cmms.com.

Frequently asked questions

Is cmms free to use?

cmms 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 cmms do?

#1 Self hosted CMMS web & mobile application that allows you to manage enterprise maintenance for free - Computerized Maintenance Management System

What is cmms written in?

cmms is primarily written in TypeScript. Its source is publicly available at https://github.com/Grashjs/cmms, and it has 853 GitHub stars.