Skip to main content
← The Zedtreeo BlogFriday, August 14, 2026
Outsourcing·12 min read read

We open-sourced our workforce management software — self-host it in 5 minutes

We built a workforce management platform to run our own remote-staffing business — attendance, leave, payroll, onboarding and client invoicing. Today we are open-sourcing the Community Edition under AGPL-3.0, self-hostable in five minutes.

CP
Chandra Prakash
Co-Founder, Zedtreeo · Published Friday, August 14, 2026 · Updated September 5, 2026
Illustration of an admin dashboard with an open padlock and a branching line, representing workforce management software released as open source
Fig.Illustration of an admin dashboard with an open padlock and a branching line, representing workforce management software released as open source
The short version

We built a workforce management platform to run our own remote-staffing business, and we have open-sourced its core as Zedtreeo Workforce Community Edition under AGPL-3.0. It covers employees, attendance, leave, payroll, onboarding, clients and invoicing. It is free, self-hosted on your own infrastructure, and installs with one docker compose up. Repository: github.com/Zedtreeo/workforce-community · Live demo: demo.zedtreeo.io

Who this is for
  • Lean operators — agencies, staffing firms, clinics, small manufacturers — priced out of enterprise HR software and unwilling to rent a walled garden
  • Teams with a data-residency requirement that rules out most SaaS, and who need the database on infrastructure they control
  • Anyone whose payroll or leave rules do not fit a template and who wants to change the code rather than file a feature request
  • Developers evaluating the stack — NestJS, Next.js 14, Prisma, Postgres 16, Redis, MinIO — as a reference implementation of a real production system

Why a Staffing Company Publishes Its Own Operating Software

At Zedtreeo we place dedicated remote specialists with businesses that need them. To run that operation we needed to track attendance across timezones, approve leave, run payroll, onboard people with signed offer letters, and invoice clients against the hours their staff actually worked. We looked at what was available and found the same two options everyone finds: enterprise platforms priced for companies with an HR department, or SaaS you cannot run yourself and cannot modify.

So we built it. And having built it, the reasoning for keeping it private was thin. The software is not what we sell — we place people; the platform is how we run that. Publishing the core costs us very little and gives a lot of small operators a way out of the same trap we were in.

There is a self-interested half to this too, and it is worth saying plainly rather than dressing it up. Open-sourcing the platform is a credibility argument. Any staffing firm can claim its operations are disciplined; very few will show you the system that runs them. The code is the claim, and you can read it.

What Is in the Community Edition

The Community Edition is not a stripped demo or a time-limited trial. It is the complete core platform we run our own operation on, with no seat limit and no expiry. Nine modules ship in it.

Employees, departments and org directory. The people record everything else hangs off — profiles, reporting lines, departments, and the structure of the organisation. Every other module reads from here rather than keeping its own copy of who works for you.

Attendance. Web clock-in and clock-out with shift support. This is the module that matters most for distributed teams, because it is the difference between knowing someone worked and believing they did. For us it also feeds client invoicing directly, so the hours a client is billed for are the hours the system recorded, not a number retyped from a spreadsheet.

Leave management and holiday calendar. Requests, approvals, balances, and a holiday calendar that can differ per location — which matters immediately once you employ people in more than one country and discover that "public holiday" is not a global concept.

Payroll. Pay structures, payroll runs, and payslip PDFs. This is the deliberately unopinionated part of the Community Edition: it handles the mechanics of structures and runs and produces documents, without encoding one country's statutory rules. More on that distinction below, because it is the single most important thing to understand before you adopt this.

Onboarding. Offer letters and e-signature upload, so a new hire's paperwork lives with their record instead of in somebody's inbox.

Clients and basic invoicing. Client records and invoices generated against them. This exists because we are a staffing business and the whole point of tracking attendance is billing it — but it applies to any organisation that bills for people's time.

Role-based access control. Access profiles determining who sees what. Payroll data and personal records need real permissions, not an honour system.

Self-service portals for employees and clients. Staff check their own leave balances and payslips; clients see their own invoices and the attendance behind them. This removes a surprising volume of routine internal email.

Knowledge base. Internal documentation living inside the platform rather than in a separate tool nobody opens.

And because you have the source, all of it is modifiable. Payroll rules, letter templates, roles, approval workflows — adapt them to your business and your jurisdiction rather than waiting for a vendor to support your case.

Community Edition vs the Full Product

This is open-core, and we would rather be direct about where the line falls than let you discover it after installing. Five modules exist in our internal build and are not in the Community Edition.

CapabilityCommunity Edition (free, self-host)Full product
Core platform — all nine modules aboveYesYes
AI HR and billing assistantYes
Calling, chat and groupsYes
Advanced statutory payroll (configurable tax and compliance)Yes
Appraisal cycles feeding automatic pay revisionsYes
Multi-entity and advanced invoicingYes

The one to read carefully is advanced statutory payroll. The Community Edition runs payroll — structures, runs, payslips — but it does not ship a configurable tax and compliance engine. If you operate in a jurisdiction with involved statutory deductions, you will either extend it yourself (the source is right there, and this is exactly the kind of thing AGPL is good for) or you will want the full product. Do not adopt the CE expecting it to file your local returns.

Multi-entity is the other common blocker. If you run several legal entities and need consolidated invoicing across them, that is the full build. One entity, and the CE is complete.

The AI Layer, and Why It Is Not in the Free Edition

Our internal build has an AI HR and billing assistant sitting on top of the same core you can download. It is the piece that turns the platform from a system of record into something that reduces the amount of work a person has to do — reconciling attendance against invoices, surfacing the leave request that has been sitting unapproved for four days, drafting the letter, answering the routine policy question an employee would otherwise ask HR.

It is not in the Community Edition, and the honest reason is not that we are holding the good part hostage. It is that an AI assistant is the hardest part to hand someone as self-hosted software. It needs model access, keys, cost controls, prompt and evaluation infrastructure, and a human review path for anything it touches that affects pay or a client invoice. Shipping that as a free self-hosted module would mean shipping you an operational liability with a "good luck" attached — you would be running inference against your own payroll data with no guardrails we could stand behind.

What we can be useful about is the shape of it, because the underlying pattern generalises and it is the same pattern behind every AI system that survives contact with a real business: the AI drafts and flags; a person approves anything that leaves the building. Nothing our assistant produces reaches a client invoice or a payslip without a human in the path. If you build your own layer on the Community Edition — and the data model is right there for it — that is the design decision worth copying. The approval gate is not a limitation on the AI; it is what makes the AI usable on data where being wrong is expensive.

Self-Host It in Five Minutes

A pnpm and Turborepo monorepo: a NestJS API in apps/api, a Next.js 14 App Router web app in apps/web, and shared config, db and ui packages. One command brings the whole thing up:

git clone https://github.com/Zedtreeo/workforce-community
cd workforce-community
cp .env.example .env
docker compose up

If you would rather not build the images locally, pull the prebuilt ones instead — this is meaningfully faster on a first run:

docker compose pull && docker compose up -d

Compose brings up six services: Postgres 16, Redis, MinIO for object storage, a Mailpit mail-catcher, the API and the web app. It runs migrations and seeds a synthetic company — employees, attendance, leave, payroll, clients and invoices — so you are looking at a populated system rather than an empty one.

Open http://localhost:3000 and sign in as admin@demo.com. Login is a one-time code sent by email, and because Mailpit is bundled, the code lands in the catcher at http://localhost:8025 rather than a real inbox. That trips people up on first run, so it is worth knowing before you go looking for an email that will never arrive.

If you want to look before installing anything, the hosted demo is at demo.zedtreeo.io. It is a shared environment seeded with synthetic data and reset on a schedule — treat anything you enter as temporary and do not put real employee data in it.

What AGPL-3.0 Means in Practice

AGPL-3.0 is chosen deliberately and it is worth understanding rather than skimming, because it behaves differently depending on what you do with it.

Running it internally for your own company: it behaves like any free software. Use it, modify it, keep your changes to yourself. No obligation is triggered. This covers the overwhelming majority of people who will install it.

Running a modified version as a service other people use over a network: this is where AGPL differs from GPL. The network-use clause means your modifications have to be available to those users. If you are planning to take this, change it, and sell it as SaaS, that is the clause to read closely.

Building a commercial product without AGPL obligations: a commercial, non-AGPL license is available. See COMMERCIAL.md in the repository or email support@zedtreeo.com.

The repository also carries CONTRIBUTING.md, SECURITY.md and DISTRIBUTION.md. Contributions need a lightweight CLA — that is what makes the dual-licensing possible, and it is stated up front rather than sprung on a first pull request.

When Not to Use This

An honest fit check, because adopting the wrong platform costs more than the licence you saved.

  • You have no one who can run Docker. Self-hosting means you own uptime, backups and upgrades. If nobody on your side owns infrastructure, managed hosting — ours or anyone's — is the cheaper answer once you count the hours.
  • You need statutory payroll compliance out of the box. The CE runs payroll but does not ship a configurable tax engine. Extend it, or use the full product, or keep payroll where it is and use the CE for everything else.
  • You run multiple legal entities with consolidated billing. That is the full build.
  • You want a finished, polished product. This is v0.1.0. It runs our business, which is a real bar, but it is early and it will have rough edges you would not tolerate from a mature vendor.
  • You need an AI assistant on day one. It is not in the CE, for the reasons above.

It Is Early — Tell Us What Breaks

v0.1.0 is a genuine first release. It runs a real business every day, which is a stronger claim than most v0.1 releases can make, but it has not been hardened by thousands of installs across other people's environments and other people's edge cases. That is the part we need help with.

Open an issue on GitHub for bugs and feature requests. Pull requests are welcome — read CONTRIBUTING.md first for the CLA. For commercial licensing, managed hosting or priority support, email support@zedtreeo.com.

Frequently Asked Questions

Q1: Is Zedtreeo Workforce Community Edition really free?

Yes. It is released under AGPL-3.0, which grants the right to use, modify and redistribute it at no cost. There is no seat limit, no trial period and no feature that expires. You host it on your own infrastructure, so your only cost is the server it runs on.

Q2: What is not included in the Community Edition?

Five modules live only in our internal build: the AI HR and billing assistant; calling, chat and groups; advanced statutory payroll with a configurable tax and compliance engine; appraisal cycles that feed automatic pay revisions; and multi-entity with advanced invoicing. Everything else — employees, attendance, leave, payroll runs and payslips, onboarding, clients and invoicing, role-based access control, self-service portals and the knowledge base — is in the free edition.

Q3: What does AGPL-3.0 mean for my business?

If you run it internally for your own company it behaves like any free software: use it, change it, keep your changes private. The obligation applies when you run a modified version as a network service for other people — then those modifications must be available to them. If you want to build a commercial product without that obligation, a commercial non-AGPL licence is available; see COMMERCIAL.md in the repository.

Q4: Can it handle payroll in my country?

The Community Edition handles the mechanics — pay structures, payroll runs, payslip PDFs — but it does not ship a configurable statutory tax and compliance engine. That is the single most important limitation to understand before adopting it. In practice you either extend it for your jurisdiction, which the source makes entirely possible, keep payroll in your existing system and use the platform for everything else, or move to the full product.

Q5: Do I need Zedtreeo to run it?

No. It is self-hosted on infrastructure you control. We have no access to your instance and no visibility of the data in it. Support for a self-hosted deployment is community-based through GitHub issues; paid support and managed hosting are available if you want them, but nothing about the software requires us.

Q6: Why is the AI assistant not in the free edition?

Because an AI assistant is the hardest component to responsibly hand over as self-hosted software. It needs model access and keys, cost controls, prompt and evaluation infrastructure, and a human review path for anything touching pay or client invoices. Shipping it free and self-hosted would mean handing you inference over your own payroll data with no guardrails we could stand behind. The design principle is portable even if the module is not: the AI drafts and flags, and a person approves anything that leaves the building.

Q7: Can I try it without installing anything?

Yes, at demo.zedtreeo.io. It is seeded with a synthetic company and is a shared environment reset on a schedule, so treat anything you enter as temporary and do not put real employee data into it. If you would rather run it locally, docker compose pull && docker compose up -d gets you a populated instance without building images.

Q8: What is the technology stack?

A pnpm and Turborepo monorepo: NestJS for the API in apps/api, Next.js 14 with the App Router for the web app in apps/web, Prisma over PostgreSQL 16 for data, Redis for queues and caching, and MinIO for S3-compatible object storage. Docker Compose brings up all six services plus a Mailpit mail-catcher for local email. Prebuilt images are published to Docker Hub.

Q9: I cannot find the login email — what happened?

Login uses a one-time code sent by email, and in a local install that mail goes to the bundled Mailpit catcher rather than a real inbox. Open http://localhost:8025 and take the code from there. This is the most common first-run confusion.

Q10: Why would a staffing company open-source its own operating software?

Because the software is not what we sell. We place dedicated remote specialists; the platform is how we run that operation. Publishing the core costs us little, helps operators stuck with the same bad options we faced, and makes a claim we could otherwise only assert — that our operations are systematic — something you can verify by reading the code.

Operator: Zedtreeo is operated by LegelpTech Outsourcing Pvt Ltd, an ISO 27001:2022 certified India-based services company. Editorial oversight by Chandra Prakash, Co-Founder. Reviewed by Anita Singh, Content Strategy & Quality Reviewer.

CP
About the author

Chandra Prakash

Co-Founder, Zedtreeo

Chandra Prakash is Co-Founder of Zedtreeo. With 20+ years of IT leadership across cloud migration, enterprise systems, and AI automation, he writes from a founder-operator perspective on remote team strategy, AI-ready hiring, and the operational economics of building dedicated offshore teams. More at cpchander.com.

Co-Founder of Zedtreeo (2021)20+ years IT leadership: cloud migration, enterprise systems, AI automationOperator-builder of 500+ remote placements across global marketsISO 27001:2022 certified operator (LegelpTech Outsourcing Pvt Ltd)
Connect on LinkedIn →