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.
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.
Tip: the menu button opens the navigation, just like in Klokk.
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:stableChange 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.
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
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.