Self-Hosted · Docker Ready · Free up to 5 Users

Time Tracking
Made Simple

Clocking in, leave, shifts and project time in one place — effortless for your team, easy to review for the people who run it.

Runs on your own serverYour data stays yoursUp and running in minutes

Features

Everything your team needs

A complete time tracking solution with enterprise-grade security, built to run entirely on your own infrastructure.

Time Tracking

Clock in and out with a single click, offline too. A time account with monthly statement and limits, ArbZG notices and a monthly record as a PDF.

Role-Based Access

Five roles: super_admin, admin, manager, user, auditor. Fine-grained permissions enforced throughout.

Leave Management

Vacation, sickness, parental or educational leave and more — approved in-app. A vacation account with carry-over that only expires after a timely notice, and a team calendar.

Shift PlanningBeta

Build weekly rosters from reusable templates with staff demand per day, publish with ArbZG checks, and handle shift swaps with colleague consent and manager approval. Understaffing and absences at a glance; calendar feed and pre-shift reminders included.

MFA / TOTP

Two-factor authentication with any TOTP app. Recovery codes included. Trust-device option for convenience.

Multi-Tenant

Multiple companies in one instance, each fully isolated. Super-admins manage all tenants from one dashboard.

Localization

English and German UI included. Locale-aware date, time, and number formatting throughout.

PWA Support

Install Klokk on mobile as a Progressive Web App with offline capability and native-like experience.

Audit Logging

Every action recorded with timestamps and actor info. GDPR built in: personal data export for everyone and deletion periods you set.

SQLite or PostgreSQL

Start small with SQLite, scale up to PostgreSQL when needed — same binary, same Docker image.

Email Notifications

SMTP notifications for approvals, corrections and password resets, plus a weekly ArbZG overview for managers. Easy to configure or disable.

Configurable Features

Toggle home office tracking, business travel, project time tracking, and more per company or via environment variables.

Security-First

Argon2id password hashing, CSRF protection, rate limiting, IP allowlists, and secure session cookies.

Project Time Tracking

Split working time across projects, customers and activities. Start, switch or stop a project on the clock, set hourly rates, and export per-project reports with billable amounts.

Accessibility

Built to WCAG 2.1/2.2 AA (EN 301 549 / BFSG): full keyboard operation, screen-reader labels, visible focus, sufficient contrast and reduced-motion support.

Interface

Clean, focused, fast

Every role sees exactly what they need — nothing more, nothing less.

Preview of the Klokk interface with sample data. Choose a role and switch between the desktop and the mobile layout.

Extensions

Extend Klokk

Connect external services through a scoped REST API, webhooks and WebSockets — including first-party extensions for tamper-evident audit anchoring.

Installation

Up and running in minutes

Klokk runs as a single Docker container. In SQLite mode, no separate database server is needed.

# Generate the secrets once and keep the file safe — DATA_KEY above all:
# without it, encrypted data cannot be read.
cat > klokk.env <<END
ACCEPT_TERMS=true
SESSION_SECRET=$(openssl rand -hex 32)
CSRF_KEY=$(openssl rand -hex 32)
DATA_KEY=$(openssl rand -hex 32)
END
chmod 600 klokk.env

docker run -d \
  --name klokk \
  -p 8080:8080 \
  -v klokk_data:/app/data \
  --env-file klokk.env \
  --read-only --tmpfs /tmp \
  --cap-drop ALL --security-opt no-new-privileges \
  klokkme/klokk:stable
  # alternative: ghcr.io/klokk-me/klokk:stable

Change before the first start: SESSION_SECRET, CSRF_KEY and DATA_KEY need random values of your own (openssl rand -hex 32) — the example values are public, and Klokk does not start without a DATA_KEY of your own. Never change or lose DATA_KEY: it encrypts the database; without it the database cannot be opened any more, not even from a backup. Keep it apart from the backups, for example in a password manager. Existing installations set it before updating to 1.1.0.

Terms of use: ACCEPT_TERMS=true accepts the terms of use. Without it, Klokk refuses to start and logs the link instead. Existing installations add the variable before updating to v1.0.0.

First login: Navigate to http://localhost:8080 and sign in with the username admin and the one-time password Klokk prints once in its log on the first start (docker logs klokk_app). Klokk then asks for a personal password.

Tech Stack

Built on solid foundations

Carefully chosen technologies that prioritize reliability, simplicity, and a small operational footprint.

Go

Backend language — fast, statically typed, single binary

Chi

Lightweight HTTP router for Go

GORM

ORM for SQLite and PostgreSQL

HTMX

Dynamic UI without writing JavaScript

Alpine.js

Lightweight reactive UI components

Tailwind CSS

Utility-first CSS framework

Docker

Container-first deployment

PWA

Installable on mobile, works offline

Self-Hosted & Licensed

Your infrastructure,
your rules

Klokk runs entirely on your own server. Up to 5 users are free — larger teams, custom branding, and white-labeling require a license.

Free for up to 5 users
License required for larger teams
Custom branding & white-labeling