Browse / Scheduling and staffing
Kimai
Self-hosted team time tracking with invoicing and a Builder-documented JSON API.
Kimai is a multi-user time-tracking web application for freelancers and companies: timesheets, customers, projects, activities, budgets, invoicing, exports and a plugin store. The Builder publishes a bearer-token REST API with an OpenAPI export, and sells a hosted edition at kimai.cloud. Self-hosting is configured through .env and config/packages/local.yaml.
- my team bills by the hour and I want timesheets, rates and invoices in one place I run myself
- I want my agent to log time and pull project hours through an API instead of a spreadsheet
- AGPL-3.0: modifications to a hosted instance must be shared with its users; some Adopters cannot accept this
- Must run on a subdomain; installing in a subdirectory is not supported
- API tokens are shown once at creation; API attribute order is not stable and DateTime values must use YYYY-MM-DDTHH:mm:ss, not ISO 8601
- Leave management, overtime and expenses are paid plugins or Cloud Professional features, not core
Last activity Aug 31, 2026. Fit: adaptable 2, operable 3.
Editions
Self-hosted · Free open source
- Clone
git clone https://github.com/kimai/kimai - ImageContainer
Kimai Cloud Standard · €4 per user/month closed source
- HostedOpen the hosted app
Kimai Cloud Professional · €5 per user/month closed source
- HostedOpen the hosted app
Adaptable: what is yours to change
Make it yours
Config only6 things to edit
Deploy with Docker or Composer, set DATABASE_URL, MAILER_URL and MAILER_FROM in .env, then put shop rules in config/packages/local.yaml: multiple time-rounding rules (per weekday), weekday rate multipliers, permission sets and role maps, active-entry limits, invoice template search paths, and LDAP or SAML login. Time-tracking mode, lockdown periods, invoice number formats, branding, rates, budgets, customers and projects are set in the UI under System > Settings.
- Env vars
DATABASE_URLMAILER_URLAPP_ENVMAILER_FROM- Config files
.envconfig/packages/local.yaml- Prompt files
- none
- Accounts you need
- Kimai Cloud (hosted edition only)
Source
- github.com/kimai/kimai
- AGPL-3.0 license
- Last commit Aug 31, 2026
- 4,954 stars
Operable: what an agent can drive
Interface
OfficialAPIpublished by the builderremote or local
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
Reach
Partial coverage. 3 of 9 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Record and edit timesheets | Reachable | rest-api.html lists timesheets as an API resource; OpenAPI export at /api/doc |
| Manage customers, projects and activities | Reachable | rest-api.html lists customers, projects and activities resources |
| Manage users | Reachable | rest-api.html lists users as an API resource |
| Manage teams and permissions | Undetermined | not named on the REST API page; check the /api/doc export on a running instance |
| Create invoices | Undetermined | rest-api.html does not say whether invoices can be created through API |
| Run reports and exports | Undetermined | reports and exports are UI features; no report endpoint named in the REST docs |
| Configure timesheet rules, rounding and lockdown | Not reachable | these live in config/packages/local.yaml, not the API |
| Install plugins from the store | Not reachable | plugins are installed on the server filesystem; no API |
| Authenticate with SAML or LDAP | Not reachable | configured in local.yaml; not an API job |
Code stack
- Languages
- PHPJavaScript
- Frameworks
- SymfonyDoctrineTablerBootstrap
- Package manager
- composer
- Database
- MariaDBMySQL
- Hosting target
- dockeron-premisehetznerdigitaloceansynology
- Built
- Human-written (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: web-based multi-user application, PHP 8.2+, MariaDB/MySQL | 95% |
| executionModel | no model SDK or AI feature in README or config docs | 95% |
| operability | kimai.org/documentation/rest-api.html published by the Kimai project; bearer token; OpenAPI export at /api/doc | 90% |
| effort | kimai.org/documentation/configurations.html names config/packages/local.yaml and .env keys DATABASE_URL, MAILER_URL, APP_ENV | 80% |
| editions | README links kimai.cloud; kimai.cloud lists Standard EUR 3.99 and Professional EUR 4.99 per user per month with a 30-day trial | 85% |
| active | shortlist pushedAt 2026-08-31; README says releases every couple of weeks | – |
| reach | 70% |
Open questions
- Does the REST API expose invoice creation and team management? Export /api/doc from a running instance to settle Reach
- Is the API available on Kimai Cloud plans without restriction?
- glazperle/kimai_mcp (34 stars, pushed 2026-08-14) exists as a third-party MCP wrapper; note it as a convenience, not the basis of operability
Sources
- github.com/kimai/kimai sourcing:scheduling-staffing:curated
- www.kimai.org/documentation/rest-api.html sourcing:scheduling-staffing:curated
- www.kimai.org/documentation/configurations.html analysis:scheduling-staffing
- www.kimai.cloud/ analysis:scheduling-staffing