A lightweight self-hosted event collector that speaks the Snowplow tracker wire protocol and writes to ClickHouse, directly or through RabbitMQ. Optional encrypted ingestion, first-party analytics scripts, and a Vue 3 demo.
Independent of Snowplow Analytics Ltd. Licensed under BSD 3-Clause.
git clone https://github.com/vladenisov/evnt.git
cd evnt
git submodule update --init --depth 1
docker compose up -d clickhouse
docker compose run --rm app evnt db init
docker compose up -dOpen http://localhost:8000/demo/. For the queue buffer:
EVNT_INGEST__MODE=rabbitmq docker compose --profile rabbitmq up -dThe image runs as a non-root user on port 8000. /live is liveness;
/ is backend readiness. Tables are created explicitly by evnt db init.
Tracker and sealer URLs remain /static/sp/sp.js and /e.js (encryption opt-in).
Documentation sources are in website/docs, built with
Docusaurus and Bun:
make install-docs
make dev-docs- Quickstart
- Trackers and first-party assets
- HTTP API
- Encrypted ingest
- Configuration and security
- Docker deployment and RabbitMQ worker
- Architecture
- Development and testing
- Publish documentation on GitHub Pages
- Publish releases
- Releases
Settings use the EVNT_ prefix and __ nesting. See .env.example
for common variables, or run cd backend && uv run evnt settings for defaults.
The full configuration reference lives in the documentation above.
See LICENSE and THIRD_PARTY_NOTICES.md. Downstream images bundling tracker scripts or Iglu schemas must retain the third-party notices. “Snowplow” is a trademark of Snowplow Analytics Ltd; this project is not affiliated with, sponsored by, or endorsed by it.