Skip to main content
Free, self-hosted ITSM by NiceLab

Less clutter.
Better support.

ITSM Engine is a service desk for organizations with several brands, departments and teams. Cases, portals, incidents, problems, changes, a service catalogue and the evidence auditors ask for, on a server you run yourself.

  • Every feature and plugin free to self-host
  • Source-available under the FSL
  • One container, PostgreSQL and S3 storage
your-server — bash
1Get the source
$ git clone <repository URL> itsmengine
$ cd itsmengine/deploy
2Create .env with a random value for each secret, then set DOMAIN
$ cp .env.example .env
$ for v in SESSION_SECRET ENCRYPTION_KEY POSTGRES_PASSWORD \
      POSTGRES_ADMIN_PASSWORD S3_SECRET_KEY; do
    sed -i.bak "s|^$v=\$|$v=$(openssl rand -hex 32)|" .env
  done; rm .env.bak
# .env → DOMAIN=support.example.com
3Build and start
$ docker compose up -d --build
✔︎ Container itsmengine-postgres-1  Healthy
✔︎ Container itsmengine-storage-1   Started
✔︎ Container itsmengine-desk-1      Started
✔︎ Container itsmengine-caddy-1     Started
4Open the setup link
$ docker compose logs desk | grep "No admin yet"
No admin yet: finish setting up the desk at
https://support.example.com/setup?token=…
$ 

Docker Compose with automatic HTTPS. It builds from source; ready-made images aren’t published yet.

How it fits together

One desk, from the first request to the last report

Follow a request through ITSM Engine: how it arrives, who sees it, what the rules do, and everything around it, from incidents to the API.

01Requests come in

Requests arrive the way your customers already work

Forms on your own website, branded portals, replies to the desk’s emails, calls and walk-ins logged by an agent, the REST API and AI assistants. Every request becomes a case in the right unit, with the right brand.

  • Forms in browser mode, or signed with HMAC from your backend
  • Portals where contacts sign in with a code sent by email
  • Email replies land on the case, without the quoted text and signature
  • New case for phone calls, walk-ins and everything else
Forms, portals and email replies

However they start, they all land in one inbox.

02The shared inbox

One inbox for everything that needs an answer

Agents work from views with live counts: all open, assigned to me, unassigned and due soon. Each case has its conversation, internal notes, status, priority, assignee and labels in one place.

  • Saved views, filters, search and bulk actions
  • Replies and internal notes in Markdown, with canned replies
  • Signatures from the brand the case belongs to
  • Merging, and a warning when someone else is on the same case
The inbox

Before anyone opens a case, the rules have done the sorting.

03Rules and service levels

Routine work happens by itself, and nothing waits too long

Automations read as sentences: when something happens to a case in a unit, if it matches, then act. Service levels put first-response and resolution due times on every case, counted in business hours if you like.

  • Triggers: a case is created, the customer replies, or on a schedule
  • Route, label, prioritise, assign and escalate
  • Targets per priority, set per unit and inherited down the tree
  • Agents see what is due soon and what is late
Automations and service levels

A rule only ever sees its own unit. So do people.

04Business units and access

Business units decide who sees what

An installation holds organizations, each a tree of units: brands, departments or teams. Every case, form and portal belongs to one unit. Agents see their units and everything below them, and nothing else.

  • One server-side access scope for every list, search, count and export
  • Cases restricted to staff in certain countries, admins included
  • API tokens and AI assistants never see more than their owner
  • Two-factor sign-in for admins, with TOTP or passkeys
Who may see what

Each unit can face its customers under its own name.

05Brands, portals and forms

Every brand gets its own front door

A brand holds the name, logo, colours, sender address, signatures and privacy links. Portals, case pages, hosted forms and emails use the brand of the unit the case belongs to, never the product’s own.

  • Portals with request types in categories, on their own domain if you like
  • A choice of header, cards or a list, and corners, with a line icon for every request type
  • Forms hosted by the desk, or embedded on your site with embed.js
  • English, Norwegian, Swedish and Danish, with a live preview
Brands and portals

Behind every portal sign-in is a contact, and behind most contacts an account.

06Accounts and contacts

Each customer at a glance

An account opens with its numbers: open cases and what needs attention, response and resolution times, satisfaction, each against the 90 days before. Next to them are its cases, contacts, agreements and the services it uses.

  • Agreements from templates, signed by a contact with a code sent by email
  • Access to an account’s cases limited to staff in certain countries
  • Properties of your own on accounts, contacts and cases
Accounts and contacts
An account page with its numbers over 90 days, cases per week and what is open nowAn account page with its numbers over 90 days, cases per week and what is open now

When something breaks for everyone, the portal is where customers look first.

07Incidents and status

When it’s bigger than one case

Declare an incident from a case, link everything it causes and update every requester at once. Priority comes from impact and urgency, with targets, resolution codes and a review afterwards. Major incidents add the roles, procedure and stakeholder updates the biggest ones need.

  • Incidents, P1 to P4, with a commander and a timeline
  • Major incidents with a manager, communications and technical leads
  • A status page on your portal, followed by email
  • Customers see the public title and your updates, never internal notes
Incidents and the status page

Behind most incidents is a cause, and a change that fixes it.

08Services, problems and changes

The rest of ITSM, without the weight

A service catalogue with owners, dependencies and health. Problems that find the cause behind incidents and keep known errors agents can search from a case. Changes judged for risk and approved by policy, stage by stage, with a CAB when it’s needed.

  • Services with offerings, suppliers, service hours and regular reviews
  • Approvals from people, the service owner, the CAB and the customers who use it
  • Change windows, freezes and reviews after the change
  • Approvals in one list: what waits for you, and yours waiting for others
Change Management
A change waiting for approval, with its status steps, risk questions, owner, window and the customers of its serviceA change waiting for approval, with its status steps, risk questions, owner, window and the customers of its service

Some fixes are code someone has to build.

09Developer tasks

Developer work, linked to the people waiting for it

Projects with boards of bugs, features, tasks, improvements and epics. Link a task to cases, and whoever answers the requester sees how the fix is coming along, and hears when it’s done.

  • Kanban, bug tracking, Scrum with sprints, or start empty
  • Epics, subtasks and fields of a project’s own
  • Access from business units and named people, with project roles
Software Development

Then you can see whether all of it worked.

10Reports and satisfaction

Know how the team is doing, and what customers think

Reports show cases created and resolved, first-response and resolution times, and service levels met, for 7, 30 or 90 days against the period before. After a case is resolved, the requester is asked how it went.

  • Everyone sees the numbers for the cases they can access
  • Great, Okay or Not good in one click, and up to ten more questions
  • Choose which units send which survey
Reports

And when the auditors come, the evidence is already there.

11Built for audits

Evidence without screenshots

Process controls check the records they cover before they are resolved, and exceptions get an answer on record. An auditor picks a period, draws a sample, and gets one pack with every sampled record’s history and controls.

  • Samples drawn at random with a seed, so anyone can draw the same one again
  • Every export logged with who, when, what and its checksum
  • An Auditor role that reads everything and changes nothing, with its reading logged
Compliance and audit
The Evidence page: 65 cases in the period, and a sample of three changes with its evidence packThe Evidence page: 65 cases in the period, and a sample of three changes with its evidence pack

The same cases and numbers are open to your own systems.

12API, tokens, MCP and webhooks

Built to work with everything around it

A REST API under /api/v1, described as OpenAPI 3.1. Scoped tokens, limited to a unit if you want. Signed webhooks with retries and a delivery log. And an MCP server, so Claude, ChatGPT and other assistants can work cases through OAuth, as the person who connected them.

  • Tokens with scopes and an expiry, stored only as a hash
  • Webhooks for case events, signed with HMAC-SHA256
  • MCP tools go through the same access scope as the agent
API and integrations
# Scoped token: cases:read, limited to Support
$ curl -H "Authorization: Bearer sdt_…" \
  https://support.example.com/api/v1/cases
 
{
  "cases": [
    { "ref": "SUP-1042", "subject": "Checkout fails…",
      "status": "new", "priority": "urgent", … },
    …
  ],
  "nextCursor": "…"
}

Need a work area the core doesn’t have? There’s a plugin for it.

13Plugins

Every plugin is free. All of them.

Plugins add work areas not every team needs. They’re built into the desk and stay off until an admin turns them on. There are no editions, nothing to pay for and nothing to upgrade to: the free licence key turns on every plugin.

  • Service Configuration, Incident and Major Incident Management, Problem and Change Management
  • A status page, Access Management and Software Development
  • Turning one off hides it everywhere, and keeps its data
  • Build your own with the plugin SDK
Plugins

And all of it runs on your own server.

14Self-hosting and your data

Your server, your data

Two ways to run the same desk: start on one server, and grow to several when you need to. Same features in both, and nothing to buy.

  • Move from Standard to Scale without moving your data
  • Backups, data export and deletion, legal hold and an audit log
Self-hosting

Run your own desk

A Linux server with Docker, a domain and two ports open. Build it, start it, and finish the setup in the browser.

  1. 1
    Get the source
  2. 2
    Fill in .env
  3. 3
    Run docker compose up
  4. 4
    Open the setup link and add your free licence key
Source code is being prepared for public release.