Dionaea
Product analytics that only captures what you declare.
Dionaea is an open-source product analytics engine written in Rust. Every event must follow a schema you declare: anything not in the schema is dropped at the door, so user content is never collected by construction. It runs as a single binary on top of ClickHouse.
[events.checkout_started.fields.items]
kind = "count"
max = 1000
required = true
[events.checkout_started.fields.coupon]
kind = "text"
max = 32
[events.checkout_started.fields.region]
kind = "enum"
values = ["us-east", "eu-west"]
[traits.plan]
kind = "enum"
values = ["free", "pro"] [events.checkout_started.fields.items]
kind = "count"
max = 1000
required = true
[events.checkout_started.fields.coupon]
kind = "text"
max = 32
[events.checkout_started.fields.region]
kind = "enum"
values = ["us-east", "eu-west"]
[traits.plan]
kind = "enum"
values = ["free", "pro"] A declared schema
Each site declares, in a TOML file, the events and identity traits it accepts. Events outside the schema are dropped and undeclared fields are stripped.
dionaea schema check schema.toml
dionaea schema diff old.toml new.toml
dionaea schema json-schema > dionaea-schema.json Schema as code
The CLI validates the file, reporting problems by file, line and column, and compares two versions to tell whether a change is breaking. It also prints a JSON Schema for editor completion.
What it does
- Screens, taps and app lifecycle are first-class events.
- Sessions, error stacks, issues and release health, including crash-free sessions.
- Measurements and performance sampling.
- Erases a user from every table, on request.
- Configurable retention and an API with roles (viewer, admin and owner) and per-site read tokens.
- A single binary, on top of ClickHouse.
Where we are today: It is in early development: there is no usable release yet and no published package. The event format and the API are drafts and will only be declared stable with the first release.
Frequently asked questions
Not yet. It is in early development and there is no usable release. Today you can follow the code on GitHub.
Open source from the start
The code is available under the Apache License 2.0.