Crow HRv1.0.0 · MIT licence · Self-hosted

Free, open-source HR and payroll for Singapore SMEs

A modern HR platform built for Singapore. Run CPF payroll, leave, claims and approvals on your own server, with no per-employee fees. Every CPF figure shows its working.

The demo runs entirely in your browser with a fictional company. Nothing you type leaves your device.

hr.crow.sg/payroll · October 2026 payroll
Crow HR's October 2026 payroll run for a fictional café company: warnings first, then totals for gross pay, employee and employer CPF, SHG, SDL, FWL estimate, claims and net pay, the changes since September and the employee table
Licence fee, at any headcount
S$0
Licence fee, at any headcount
Open-source licence
MIT
Open-source licence
Test cases matching CPF's own calculator
15 / 15
Test cases matching CPF's own calculator
Containers: the app and PostgreSQL
2
Containers: the app and PostgreSQL

Singapore payroll

Singapore payroll that shows its working

Open any employee in a payroll run and see exactly how their CPF was reached: the age band, the wage band, the OW and AW ceilings, the rate table and its effective date, the rounding. Every step names the rule it used and links to its source.

CPF
Employee and employer shares by age band and residency, SPR graduated rates, the OW ceiling and the AW ceiling with its year-end recomputation.
SHG funds
CDAC, ECF, MBMF and SINDA contributions from each employee's record.
SDL and FWL
Skills Development Levy per employee, and a Foreign Worker Levy estimate for your labour costs.
Effective-dated
Rates and ceilings carry the dates they apply from and a source link, so January's changes land on the right month.
Rounding
Rounded the way CPF's calculator does it, with money held as exact cents throughout.
The CPF working for one fictional employee: CPF at a glance (citizen, 55 and below, full wage band, OW subject S$2,450, AW ceiling estimate) and each step, from the rate table and OW ceiling to total S$907, employee S$490 and employer S$417, then CDAC and SDL
The CPF working for one employee in the demo's October run. Fictional data.

15 / 15

cases run through CPF Board's online contribution calculator match to the dollar.

16 / 16

worked examples in CPF's AW ceiling guide, replayed month by month, match every figure.

91 / 91

research test vectors for CPF, SDL and SHG pass to the cent.

These checks show the engine reproduces CPF's published material. Crow HR is new and has not yet run a real company's payroll, so run your first month alongside your current payroll and compare. It is not approved or endorsed by CPF Board, IRAS or MOM, and it is not legal or tax advice: review each run before you pay or file.

How we verify

After the run

From payroll run to the files you upload

Monthly, off-cycle and adjustment runs go through an approval step. Blocking issues and warnings come first, such as a final payment that is due before the pay date. Once approved, Crow HR produces what you hand to your team, CPF, your bank and IRAS.

Itemised payslips

On the web and as PDF, with the items MOM requires. A payslip missing a required item cannot be released.

CPF EZPay file

The month's CPF, SHG fund and SDL contributions as a file you upload in CPF EZPay.

Bank payment file

A generic ISO 20022 salary payment file. Check it against your bank's format before you use it.

IR8A export

Year-end IR8A rows in the layout of IRAS's import template, to submit through myTax Portal.

Features

Everything a Singapore SME runs HR on, in one place

People, payroll, leave, attendance, scheduling, claims and approvals share one record of each employee, so approved leave, overtime and claims reach the payroll run without re-keying.

Home

Start the day with work to do

  • Approvals waiting, with approve and reject in one click
  • Onboarding and offboarding checklist items with due dates
  • Payroll that is due, and work passes expiring in the next 90 days
hr.crow.sg · Home
The owner's Home screen: two approvals waiting (a mobile phone claim and annual leave), checklist to-dos, October payroll due today, and three work passes expiring
hr.crow.sg/people
The People directory of a fictional company with 25 people: name, job title, department and outlet, manager, status badges such as pass expiring, starts on and leaving on, and start date
People

One record for every employee

  • Employment history, compensation and work passes, effective-dated
  • Joiners, leavers and rehires, with onboarding and offboarding checklists
  • CSV import with a preview that lists every problem before anything is saved
  • Self-service change requests, approved by HR
Leave and claims

Your team applies from their phone

Leave

Employment Act leave types, including parental leave, preconfigured. Rest days and Singapore public holidays are left out automatically, and the sheet shows the days taken and the balance after before it is sent. Half days, a team calendar and approvals included.

Claims

Snap the receipt, pick the type and send. Caps per claim, month or year, foreign currency with your own rate, several expenses in one claim, and approved claims reimbursed through the next payroll.

Apply for leave on a phone: annual leave from 23 to 25 November 2026, 3 days counted, 11 available and 8 after, with a Send for approval button
Apply for leave
New claim on a phone: a taxi receipt photo attached, S$18.40, Transport selected, ComfortDelGro as the merchant and a total of S$18.40
New claim

Attendance and overtime

Clock in from the browser, even offline: punches queue on the phone and sync later. Optional location and IP controls, timesheets with corrections, and overtime under Part IV of the Employment Act, with approved overtime sent to payroll.

Approvals and notifications

Approval policies for claims, leave, overtime, profile changes and payroll runs. Delegation while someone is away, escalation when a request stalls, and in-app and email notifications.

Sign-in your way

Email and password with two-step verification, Google Workspace, Microsoft Entra ID or any OpenID Connect provider. Singpass sign-in is built and has passed a test against Singpass staging; your company registers with Singpass to use it.

Shift scheduling

Rosters on a week grid with shift templates, publishing, swaps and open shifts, plus planning warnings for long days, 44-hour weeks and rest days. Published rosters can fill in payroll's scheduled days.

Reports

Headcount, turnover, work-pass expiry, leave balances and liability, attendance exceptions, scheduled hours, claims and payroll cost, exported as CSV or XLSX. A fixed set, with no custom report builder yet.

HR documents

Employee documents with expiry reminders, and letters and Key Employment Terms generated from templates you can reword. Employees acknowledge them in the app; this is not an e-signature.

Free and open source

Free means free

Crow HR is MIT-licensed. There is no subscription, no per-employee fee and no feature held back for a higher plan. You host it, so your employees' data stays on your server, and you can read every line of the code that handles it.

  • No per-employee fees, no tiersEvery module, at any headcount. Your only cost is the server you run it on.
  • MIT licenceUse it, change it and run it for your company. The rules engine and its tests are in the open.
  • Your data, your serverOne PostgreSQL database you control. Crow HR sends nothing to Crow Tech.

Crow HR and a typical subscription HR service

TopicCrow HRTypical subscription
LicenceFree (MIT)Monthly fee per employee
ModulesAll includedSplit across plans
Your dataYour serverThe vendor's cloud
Source codeOpenClosed

Free to use under the MIT licence. Hosting, backups and your own time still cost something.

Self-hosting

Self-host in three steps

Made for a company with one technical person, not a DevOps team. You need Docker with the Compose plugin, 2 GB of RAM and a few GB of disk. Crow HR ships as one app image next to PostgreSQL 17.

  1. 1Copy the settingscp .env.example .env
  2. 2Set your addressPUBLIC_URL, for example https://hr.example.sg
  3. 3Start itdocker compose up -d, then finish setup in the browser
Install with Docker Compose
git clone https://github.com/Crow-Tech-Pte-Ltd/CrowHR.gitcd CrowHRcp .env.example .env      # 1. copy the settings$EDITOR .env              # 2. set PUBLIC_URLdocker compose up -d      # 3. startdocker compose logs app | grep -A3 'SETUP CODE'

Compose runs the app image ghcr.io/crow-tech-pte-ltd/crowhr:1 and prints a one-time setup code. Open your PUBLIC_URL, enter the code and create your company. Upgrade with docker compose pull && docker compose up -d.

  • The app and PostgreSQL 17. No Redis, no queues.
  • Migrations run on start; a setup wizard creates your company.
  • Nightly backups, optionally encrypted, plus restore.
  • Bring your own proxy: Caddy, nginx, Traefik or Cloudflare Tunnel.

Security and PDPA

Built to protect the most sensitive data a company keeps

Payroll holds NRIC numbers, bank accounts and salaries. These are the controls Crow HR applies to them, as documented for operators.

Encrypted at rest

NRIC/FIN, passport and work pass numbers, bank accounts and sign-in secrets are encrypted with AES-256-GCM. NRIC/FIN is masked by default and every reveal is logged.

Access checked on the server

One permission matrix for every request. Managers see their team, not pay or bank details; payroll stays with owners, payroll admins and the employee.

Tamper-evident audit log

Append-only, chained with SHA-256 hashes, with a command that verifies the chain.

Strong sign-in

argon2id passwords, lockout after repeated failures, and two-step verification required for owners, HR and payroll admins by default.

A locked-down container

Runs as a non-root user on a read-only file system. The database has no port open to the host.

Encrypted backups

Scheduled and manual database backups, which can be encrypted with a passphrase you keep.

PDPA: you stay in control

When you self-host, your company keeps the data and remains the organisation responsible for it under the PDPA. Crow Tech never receives it. Crow HR is built to help you meet your obligations with role-based access, NRIC masking, an audit trail and race and religion collected only for SHG contributions.

Mobile apps

Coming soon

Payslips, leave and clock-in on iPhone, iPad and Android

Native apps for employees and managers: payslips, leave, clock in and out (also without signal), claims with a photo of the receipt, the schedule and approvals. They are built and are on their way to the App Store and Google Play. Until then the web app works on phones: the leave and claim screens above are the web app at phone width.

Coming soon to the App StoreComing soon to Google Play

Free · iOS and iPadOS 27 or later · Android 10 or later

  • Your company's server, nothing elseScan the QR code in Crow HR on the web, or type the server address. The app talks only to that server; Crow Tech runs no server for it.
  • No data collectedNo analytics, crash reporting, advertising or third-party SDKs. Notifications are local: the app checks your server, with no push service in between.
  • Same sign-in as the webPassword, Google, Microsoft, Singpass or your identity provider, in the phone's own browser. The session is kept in the iOS Keychain or the Android Keystore.
  • App privacy policyApp help and support

FAQ

Questions SMEs ask

Anything else is probably in the docs FAQ.

Is Crow HR really free?

Yes. Crow HR is open source under the MIT licence. There is no licence fee, no per-employee charge and no paid tier: every module is included at any headcount. You run it on your own server, so the only cost is that server.

Does Crow HR calculate CPF automatically?

Yes. Each payroll run works out employee and employer CPF from the employee's age band, residency status and wages, including the OW and AW ceilings and SPR graduated rates, plus SHG fund contributions, SDL and an FWL estimate. Every figure comes with its working and the rule it used. You review the run and approve it before anything is paid.

How accurate are the CPF calculations?

The statutory rules are effective-dated and cite their sources. The engine matches CPF Board's online contribution calculator to the dollar in 15 of 15 test cases, replays all 16 worked examples in CPF's AW ceiling guide and passes 91 of 91 test vectors for CPF, SDL and SHG. The full verification record is published with the code. Check each run before you pay or file.

Has Crow HR been used for a real company's payroll?

Not yet. Version 1.0.0 is the first release. The statutory rules are checked against CPF's published examples and its online calculator, but there is no track record with real payrolls yet. Run your first month alongside your current payroll and compare the results before you rely on it.

Is Crow HR approved by CPF Board, IRAS or MOM?

No. Crow HR is not approved or endorsed by CPF Board, IRAS or MOM, and MOM does not approve payroll software. Crow HR generates payslips with the items MOM requires for itemised payslips, a CPF EZPay file that you upload, and IR8A data that you import in myTax Portal.

Can Crow HR submit IR8A to IRAS for me?

Not directly. Crow HR exports your IR8A data as rows in the layout of IRAS's IR8A import template, which you paste into the template and submit through myTax Portal. Appendix 8A and 8B are not generated and are filled in by hand.

Where is my employees' data stored?

On your own server, in your own PostgreSQL database. Crow HR sends nothing to Crow Tech and has no analytics or advertising trackers. It contacts only what you configure, such as your email server and your sign-in provider.

Does Crow HR help with PDPA?

When you self-host, your company is the organisation responsible for the data under the PDPA. Crow HR is built to help you meet those obligations: role-based access enforced on the server, NRIC/FIN and bank numbers encrypted at rest and masked by default, every reveal audited, and a tamper-evident audit log.

What do I need to self-host Crow HR?

A machine with Docker Engine 24 or later and the Compose plugin, 2 GB of RAM and a few GB of disk. Crow HR runs as two containers, the app and PostgreSQL 17, with no Redis and no queue. Copy the settings file, set your public URL and run docker compose up.

Can I try Crow HR without installing anything?

Yes. The live demo runs entirely in your browser with a fictional company. Pick a role (owner, HR, payroll, manager or employee) and click around: nothing you enter leaves your device, and you can reset it at any time.

Can I move over from spreadsheets or another HR system?

Yes. Import employees, compensation and year-to-date payroll opening balances from CSV templates. Every row is checked before anything is saved, and problems are listed by row and column with how to fix them.

Is there a mobile app?

Coming soon. Native iOS and Android apps for employees and managers are built and on their way to the App Store and Google Play. They connect only to your company's own Crow HR server and collect no data. Until they are listed, the web app works on phones, so employees can apply for leave, submit claims with a photo of the receipt and clock in from their phone's browser.

Community

Built in the open, in Singapore

Crow HR is made by Crow Tech Pte. Ltd. and its contributors. Report a bug, suggest a feature or send a pull request: requirements are written as specs in the repository, so you can see what is planned and why. Please report security issues privately, as described in the security policy.

WhatsApp