Privacy-first web analytics you can self-host or run in managed EU/US cloud.
HitKeep is an open source web analytics platform built for people who want a simpler stack than the usual PostgreSQL, Redis, ClickHouse, and reverse-proxy pileup.
- Single binary runtime
- Embedded DuckDB and NSQ with batched ingest writes
- Privacy-first tracking
- Goals, funnels, ecommerce, email reports, and API clients
- Self-hosted or managed cloud with EU/US region choice
Website · Cloud · Live Demo · Docs · API · Releases
HitKeep is for teams that want product analytics without adopting a full analytics platform stack.
- Simple to run: one binary, one data directory, no external database required
- Efficient write path: NSQ buffers ingest bursts and DuckDB appender batches smooth out disk-heavy per-row inserts
- Privacy-first by default: cookie-less tracking, Do Not Track support, focused data collection
- Useful out of the box: traffic analytics with countries/languages audience toggles, top/landing/exit page views, custom events, goals, funnels, ecommerce, UTM attribution, and scheduled email reports
- Built for teams: passkeys, TOTP, site and team permissions, API clients, share links, and audit visibility
- Flexible deployment: self-host it yourself or use HitKeep Cloud and still keep the migration path open
Download the latest release for your system:
wget https://github.com/PascaleBeier/hitkeep/releases/latest/download/hitkeep-linux-arm64
chmod +x hitkeep-linux-arm64
export HITKEEP_JWT_SECRET="replace-this-with-a-long-random-string"
./hitkeep-linux-arm64 -public-url="http://localhost:8080"Open http://localhost:8080 and create your first account.
services:
hitkeep:
image: pascalebeier/hitkeep:latest
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- hitkeep_data:/var/lib/hitkeep/data
environment:
HITKEEP_JWT_SECRET: replace-this-with-a-long-random-string
command:
- "-public-url=http://localhost:8080"
volumes:
hitkeep_data: {}docker compose up -dFor production setup, reverse proxies, SMTP, systemd, Kubernetes, S3 archiving, and every configuration flag, use the docs instead of this README:
Once your instance is running and a site is created, add:
<script async src="https://your-hitkeep-instance.com/hk.js"></script>Custom event example:
<script>
window.hk = window.hk || {};
window.hk.event?.("signup", { plan: "pro", source: "landing-page" });
</script>Tracker options, ecommerce events, custom events, and advanced tracking examples live here:
See more screenshots
The maintained reference lives on hitkeep.com.
- Getting started
- Installation
- Configuration
- REST API reference
- Compliance
- Privacy policy for cloud
- Terms of service
- Comparison pages
HitKeep Cloud is live.
If you want the same product without running it yourself, start here:
Prerequisites:
- Go 1.26+
- Node.js 24+
- Make
Build from source:
git clone https://github.com/pascalebeier/hitkeep.git
cd hitkeep
make build
./hitkeepContributor docs and project guides:
Distributed under the MIT License. See LICENSE.










