Open sourceApache 2.0Self-hosted

HR records your AI can update,and can't bend.

OpenHR is an open-source HR system of record with an MCP server. Leave can't be overdrawn, every asset has one holder, an exit can't close while kit is out, and every write is audited in the same database transaction.

Explore the demoSample company, no sign-up

The demo app is part of a deployment Attri runs for you. The MCP server and its SQLite database are the open-source repo.

Ask your HR records what your agents did.

Nobody reviews every request an agent raises. With OpenHR, the records answer these three questions themselves.

How much leave is left?

Exactly what the record says. A request reserves its days the moment it's raised, so pending and approved leave both count.

What happens when an agent overdraws?

The server refuses the request and says why, down to the half day. Nothing is written.

Is Karan cleared to leave?

The checklist reads the custody table. Asset clearance can't be signed off while Karan still holds kit.

How it works

Your agent asks for the change.OpenHR checks it against the record.

Agent requests

  • Book Dev 2 days casual leaverequest_leave · reason required
  • Approve Tanvi's Goa leavedecide_leave_request · as Fatima
  • Issue the MX Keys to Devassign_asset · AST-0008
  • Sign off Karan's clearancecomplete_exit_step
  • AttendanceNot built yet · Tell us you need it

OpenHR

Checks every write

  • Leave can't go negative
  • One holder per asset
  • Exits gate on custody
  • Audit row, same transaction

Entitled − reserved ≥ 0

request_leave · PH-1203 · 2 days Casual Leave

Read back as

  • Leave balancesEntitled, reserved and available
  • Org chartReporting lines to any depth
  • Headcount and attritionBy department, location or band
  • Audit logEvery change, append-only

Claude reads them through the same 31 MCP tools it writes with. Read-only SQL covers anything else.

  1. 01

    Ask

    Your agent calls a tool such as request_leave with the person, the dates, whole or half days, and a reason.

  2. 02

    Check

    The server checks the balance, overlapping requests, who holds the asset and which status moves are legal. If a rule fails, it returns the reason and writes nothing.

  3. 03

    Record

    The change and its audit row commit in one database transaction. A decided request is never rewritten; a cancellation leaves the original visible.

Compared with an HR suite behind a connector

A connector decides who may write.OpenHR decides what can be written.

MCP connectors for hosted HR suites pass your agent's calls to the vendor's API, gated by API-key scopes and approvals. OpenHR puts the rules in the write path itself, in source you can read.

HR suite + MCP connector

Your agent calls the vendor's API

Controls who may callAPI-key scopes and approval gates decide which agent can write.
The record sits with the vendorEmployee data lives in the vendor's cloud.
Rules you can't readThe connector may be open source. The API's rules behind it aren't.
History depends on the vendorWhat was changed, and by which call, is whatever the vendor logs.
OpenHRRules checked on every write
Checks what is writtenOverdrawn leave, a second holder for one asset and an illegal status move are refused.
One SQLite file you holdRuns on your machine, or inside your environment when Attri deploys it.
Apache 2.0 end to endEvery rule is in the source, from the balance check to the exit gate.
Every change is auditedAn audit row commits in the same database transaction as the change.

Read the seven core invariants in the OpenHR README

Use cases

For any team letting agents touch people records.Wherever a record might be questioned later.

Sample: OpenHR Demo Pvt Ltd

Agents book the leave. The balance can't go negative.

Leave raised from chat or email reserves its days when it lands, so an agent can't promise time that isn't there. Approval needs a named approver who isn't the person on leave.

  • Balances in half-day units, per leave type and year
  • Pending and approved requests both count against the balance
  • Cancellations keep the original request visible

Enterprise

Run it yourself, or let Attri run it.Either way, employee records stay in your environment.

Self-hosted

Free and open source

Run OpenHR on your own machine and connect your agents to it today.

Hosted by you

  • Full source code under Apache 2.0
  • One SQLite file and one Python process
  • Community support on GitHub
View on GitHub

Managed by Attri

Built into your environment

The record rules are open source. Attri runs OpenHR inside your infrastructure and builds what your people team needs around it.

In your environment, run by Attri

  • Sign-in, roles and approval rules for agent writes
  • Connectors to your identity provider and HR systems
  • Support from the team that builds OpenHR
Talk to AttriSOC 2 Type II, stated by AttriHIPAA BAA available
  • Leave can't be overdrawn

    A request reserves its days when it's raised, so a tracked balance never drops below zero.

  • One holder per asset

    A unique index and a service check both refuse a second open assignment.

  • Exits gate on custody

    Asset clearance reads the custody table, not a checkbox, and can't close while kit is out.

  • Audited in the same transaction

    Each change and its audit row commit together, so the log can't fall behind.

Open source

Read the code. Run it today.Apache 2.0, running in minutes.

$ git clone https://github.com/Attri-Inc/openhr.git
$ cd openhr
$ python3 -m venv .venv && source .venv/bin/activate
$ pip install -r requirements.txt
$ python run_mcp.py
# MCP server over stdio, demo company in data/openhr.db
  • 31MCP tools for Claude
  • SQLiteOne file, one Python process
  • Apache 2.0License

Ships with a seeded demo company. Sign-in, roles and approval rules come with an Attri deployment.

Read the README on GitHub

Open source by Attri

Part of Open Tooling.Standalone projects, all Apache 2.0.

  • HR recordsPython

    OpenHR

    HR records your AI can update, and can't bend. Leave can't be overdrawn; every asset has one holder.

    MCP tools
    31
    local-first
    SQLite
    You're hereGitHub
  • AccountingPython

    OpenLedger

    Books your agents can write to, and can't break. Every posting balances; corrections are reversals.

    MCP tools
    15
    local-first
    SQLite
  • AI observabilityPython

    OpenWatch

    Traces every AI session, tool call and dollar to the person behind it.

    MCP tools
    14
    REST endpoints
    23
  • CRM memoryTypeScript

    OpenCRM

    CRM memory for AI agents where every fact links to the email or transcript behind it.

    MCP tools
    27
    self-hosted
    SQLite

Let your agents handle the HR admin.Keep the rules on the server.

Run OpenHR on a demo company in minutes, or have Attri deploy it inside your environment with sign-in, roles and approval rules.