About this project

Wakapi is a free, open-source, self-hosted backend that is compatible with WakaTime, the popular coding-activity tracker. It is designed for developers who want to keep their coding statistics on their own infrastructure while continuing to use existing WakaTime editor plugins. ## What it does Wakapi receives heartbeats from the official WakaTime client tools and turns them into statistics about projects, languages, editors, hosts, and operating systems. It offers a web dashboard, embeddable badges, weekly email reports, a REST API, and Prometheus-compatible metrics export. It is described as partially compatible with WakaTime and can also integrate with WakaTime itself. ## Deployment options The README lists several ways to run Wakapi: - Use the hosted cloud service at wakapi.dev. - Quick-run a release via a shell installer script. - Run the official Docker image (ghcr.io/muety/wakapi), with a persistent volume and a password salt. SQLite is the default database; MySQL and Postgres are also supported. Docker Compose and Docker Secrets are supported, and a community Helm chart exists for Kubernetes. - Compile and run from source with Go, using a YAML configuration file. Running as a SystemD service is recommended for standalone deployments. ## Client setup Wakapi relies on the open-source WakaTime client tools. Users install the WakaTime plugin for their editor, then edit `~/.wakatime.cfg` to point `api_url` at their Wakapi instance and set their Wakapi API key. A client-side proxy can be configured optionally. Wakapi and WakaTime can run in parallel, either through client-side configuration or through Wakapi's relay feature, which forwards heartbeats to WakaTime. ## Configuration Configuration can be provided through a YAML file or environment variables. The README documents a broad set of options, including: - Application settings: leaderboard enablement, scope, generation time, and authentication requirement; aggregation and weekly report schedules; data cleanup and database optimization times; import settings (enablement, batch size, backoff, rate limits, host whitelist); heartbeat maximum age; cache warming; custom language mappings; avatar URL templates; date and datetime formats; support contact; data retention and inactive-account limits. - Server settings: port, IPv4/IPv6 addresses, UNIX socket and its permissions, log format, request timeout, TLS certificate and key paths, base path, and public URL. - Security settings: disabling local authentication, disabling WebAuthn, password salt, cookie key, insecure cookies, cookie lifetime, local signup, OIDC signup, OIDC TLS verification, and signup CAPTCHA. ## Notes The README states that, due to limited maintainer time, pull requests are temporarily not accepted. The project is licensed under an open-source license and is maintained by muety.