تخطي للذهاب إلى المحتوى
Documentation

Everything to deploy, configure & integrate

Practical guides for admins and developers — from your first install to your first API call.

Overview

Introduction

Oman HRM is a self-hosted HR platform that runs on your own infrastructure. The three surfaces — admin, self-service and mobile — share a single database and one JSON API.

Because everything is self-hosted, your employee data stays entirely within your network.

Self-hosted deployment

Deploy with Docker on any Linux server. Recommended minimum: 2 vCPUs, 4 GB RAM and 20 GB storage.

# clone & start
git clone https://git.omanhrm.local/ohrm.git
cd ohrm && docker compose up -d

# the app is now on http://localhost:8080

Environment variables

  • DB_URL — PostgreSQL connection string
  • DEFAULT_LOCALE — en or ar
  • CURRENCY — defaults to OMR

Importing employees

Upload a CSV from Admin → Employees → Import. Columns are mapped to fields, and rows are validated before commit.

Download the CSV template from the same screen to guarantee your columns line up.

Payroll & WPS

Define salary components (basic, allowances, deductions), run a cycle, then generate the SIF file for the Wage Protection System. All amounts are in OMR to 3 decimals.

Example: net pay

net = basic + allowances − deductions − loan_installment
# e.g. 6,500.00 + 2,000.00 − 350.00 − 500.00 = 7,650.00 OMR

EOSB / gratuity

The logic applies each country's rules. For Oman: the legacy scheme applies roughly one month of basic wage per year of continuous service, while post-reform employees are covered through mandatory social insurance.

Try the live calculator on the Oman compliance page.

Open the calculator

Leave & attendance

Create leave types, set balances and approval workflows. Employees clock in/out from web, mobile or kiosk, and hours flow into payroll.

JSON API

Every surface is built on a REST API that returns JSON. Authenticate with a Bearer token from Admin → Developers.

GET /api/v1/employees
Authorization: Bearer

{
  "id": 101,
  "name": "Mohammed Ali",
  "department": "Operations",
  "basic_salary": "6500.00"
}

Webhooks

Subscribe to events like leave.approved, payroll.finalized and document.expiring to trigger your own systems.

Every webhook is sent with a signature so you can verify its origin.

Can't find what you need?

Our support team is happy to help with deployment or integration.