# Frappe HR: an open source HR and payroll suite that runs on the Frappe Framework

> Frappe HR is a GPL-3.0 HRMS built as a Frappe app, covering employee lifecycle, leave, attendance, expenses, performance and payroll. This review looks at what it requires to run, how the Docker and bench installs differ, and where it stops being the right choice.

**frappe/hrms** — Open Source HR and Payroll Software

- Repository: https://github.com/frappe/hrms
- Website: https://frappe.io/hr
- Stars: 8,850 · Forks: 2,753
- Language: Python
- License: GPL-3.0
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/frappe-hrms

## What Frappe HR solves, and who ends up using it

The README is explicit about the origin: as the Frappe team grew, it wanted an open source HR and payroll system, did not find one it considered genuinely open source, and built its own. Those modules lived inside ERPNext first and became a separate product from version 14 onward. That history explains the shape of the thing. Frappe HR is not a standalone SaaS with its own account system and database. It is a Frappe application, and the README lists Frappe Framework as the foundation, providing the database abstraction layer, user authentication and a REST API, with Frappe UI supplying Vue components on top.

The audience follows from that. The natural adopter is an organisation already running ERPNext or Frappe, because the README describes expense claims and advances as integrating with ERPNext accounting. Payroll, taxation, expense claims and employee records then sit in the same system as the ledger, which removes a reconciliation step that standalone HR tools force on finance teams. The secondary audience is a team willing to run Frappe specifically to get this HRMS, accepting the framework as part of the package.

The README claims over 13 modules, naming Employee Management, Onboarding, Leaves, Payroll and Taxation among them. Treat the module count as marketing framing rather than a specification; the useful question is which of those modules you actually need and whether the configuration surface matches your jurisdiction.

## Frappe Framework underneath: the architecture decides your options

Every deployment decision here is really a Frappe decision. The repository layout confirms the split: hrms/ holds the Python application, frontend/ and roster/ are separate JavaScript packages, and frappe-ui is pulled in as a git submodule. The root package.json wires this together with scripts that install dependencies in each subdirectory and build them separately, so a full build is not a single command over one codebase.

That structure has consequences. The Python side declares requires-python >=3.10 and builds with flit_core, so the supported interpreter floor is documented rather than implied. The frontend is Vue-based through Frappe UI, which means the browser experience and the server-rendered Frappe desk are two different surfaces maintained in one repository. The roster/ directory is a third frontend package, built by its own script.

A REST API comes from the framework, not from anything HR-specific, so any integration you write is against Frappe's conventions for doctypes and authentication. If your team has never worked with Frappe, the learning curve is not about HR concepts. It is about how Frappe models data, and that is the real onboarding cost of this project.

## Installing Frappe HR with Docker, and logging in for the first time

The README gives the Docker path first, and it is the shortest route to a working site. Docker, docker-compose and git need to be present before you start. The commands clone the repository, change into the docker directory, and bring the stack up.

```bash
git clone https://github.com/frappe/hrms
cd hrms/docker
docker-compose up
```

The README states that you should wait while the setup script creates a site, after which http://localhost:8000 serves the HR login screen. The documented credentials are the Administrator username with the password admin. Change those before the container is reachable from anywhere but your own machine; the README presents them as development defaults, not as a production configuration.

The bench route is longer and assumes a running Frappe bench. The README instructs you to start the server in one terminal and keep it running, then issue the site and app commands in a second terminal.

```sh
$ bench start
$ bench new-site hrms.localhost
$ bench get-app erpnext
$ bench get-app hrms
$ bench --site hrms.localhost install-app hrms
$ bench --site hrms.localhost add-to-hosts
```

The ordering matters. erpnext is fetched before hrms, which reflects the accounting integration the README describes. The site is then reachable at http://hrms.localhost:8080. Note the port difference between the two paths: 8000 for Docker, 8080 for bench. If you are following a tutorial that mixes them, that mismatch is usually the cause of a blank page.

## Where Frappe HR stops being the right tool

The dependency on ERPNext is the sharpest limitation. The README's local setup fetches erpnext before installing hrms, and it describes expense claims as integrating with ERPNext accounting. If you want HR without an accounting system attached, the documented path does not offer that. You are installing an ERP component whether or not you plan to use the ledger.

Deployment weight is the second constraint. There is no single binary and no hosted free tier described in the README. Docker or a bench installation is the documented reality, and the bench path assumes you can run and maintain a Frappe bench. For a small company that wants leave tracking and nothing else, that is a large amount of infrastructure for the feature set.

Payroll is the third area to examine before committing. The README lists salary structures, income tax slabs, standard payroll, additional salaries and off cycle payments. What it does not do is name supported countries or statutory filing formats. Payroll rules are jurisdiction-specific, and the README does not document country coverage, so anyone outside the maintainers' target regions should treat that as unverified rather than assume it works. The repository also carries a SECURITY.md and a TRADEMARK_POLICY.md, which tells you the project takes those areas seriously, but neither answers the payroll coverage question.

## Frappe HR compared with ERPNext's own HR modules

The most relevant alternative is not a different vendor. It is ERPNext itself, and the README explains the relationship directly: the HR modules started inside ERPNext, and from version 14 onward they became a separate product as they matured. So the real choice is between installing hrms as its own app on top of a Frappe bench, or staying with whatever HR functionality your ERPNext version already carries.

The difference in approach is packaging and release cadence, not data model. Because Frappe HR ships as its own repository with its own version numbers, it can release on its own schedule. The recent releases show three parallel lines, v14.38.2, v15.64.1 and v16.19.0, all published within days of each other. That pattern indicates maintained branches aligned to different Frappe or ERPNext generations rather than a single moving target. An organisation pinned to an older ERPNext release is not forced onto the newest HR code.

If you are already on ERPNext and your HR needs are basic, checking what your installed version provides before adding a second app is the cheaper move. If you want the separate release cadence and the modules the README describes, install hrms as the README shows. Choosing a completely different HR product means giving up the shared database with accounting, which is the main thing this project offers.

## Licence, upgrade cost and what maintenance actually looks like

Frappe HR is GPL-3.0, stated in both the repository metadata and package.json. That is a copyleft licence. If you modify the code and distribute it, the GPL's terms attach to your distribution. Running it internally for your own staff does not trigger distribution obligations in the ordinary case, but any plan to embed Frappe HR in a product you ship to customers needs a lawyer's reading, not a blog post's. Nothing here is legal advice.

Upgrade cost is tied to the branch structure. Three release lines are active, so the question is which one your deployment tracks and how far behind it drifts. Because hrms depends on the Frappe Framework and, in the documented local setup, on erpnext, an upgrade is rarely a single app update. Framework changes can affect the HR app, and the frontend packages build separately through the root package.json scripts.

The repository shows the maintenance signals you would want: a CI workflow, a codecov configuration, a pre-commit configuration, commitlint and mergify configuration, and a Crowdin configuration for translations. The last push was on 2026-09-21 and the most recent release was v14.38.2 on 2026-09-18. The README also points to a user forum and a Telegram group for support, which is where framework-level questions usually get answered faster than in the issue tracker.

## Conclusion

Adopt Frappe HR if you already run Frappe or ERPNext and want payroll, leave and attendance in the same database, or if you can accept the framework as part of the deal. Do not adopt it if you want a standalone HR tool with an independent data model, or if you cannot commit to a bench or Docker deployment and its upgrade cycle. Verify first that erpnext is installed alongside hrms, since the README's local setup fetches it before installing the HR app, and confirm that your payroll and statutory requirements are covered by the salary structure and income tax slab configuration the README describes.

## FAQ

### How do I install Frappe HR?

The README gives two paths. With Docker, clone the repository, change into hrms/docker and run docker-compose up, then open http://localhost:8000. With bench, create a site, fetch erpnext and hrms, install the app on the site, and add it to hosts.

### What is Frappe HR?

It is an open source HR and payroll application built on the Frappe Framework, licensed GPL-3.0. The README describes over 13 modules covering employee management, onboarding, leave, attendance, expense claims, performance management, payroll and taxation.

### What is HRMS in ERPNext?

The README states that the HR modules began as a set of modules inside ERPNext and that, from version 14 onward, they were split out into Frappe HR as a separate product. The documented local setup still fetches erpnext before installing hrms.

### How much does Frappe HR cost per month?

The software itself is GPL-3.0 and the README does not list a subscription price for self-hosted use. It does point to Frappe Cloud as a managed hosting option that handles installation, setup, upgrades and monitoring, and that service's own pricing is not stated in the README.

## Sources

- [frappe/hrms on GitHub](https://github.com/frappe/hrms)
- [License: GPL-3.0](https://github.com/frappe/hrms/blob/develop/LICENSE)
- [Project website](https://frappe.io/hr)
- [README](https://github.com/frappe/hrms/blob/develop/README.md)
- [Releases](https://github.com/frappe/hrms/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/frappe-hrms
