Skip to main content

nilalytics

PyPI Python License: Apache-2.0 Docs

The batteries‑included, OpenTelemetry‑native way to run your own web & mobile product analytics — on a DuckLake in your object storage.

nilalytics collects product events, errors, and performance data over OpenTelemetry (OTLP), stores them in a DuckLake lakehouse on any major cloud's object storage, and serves sub‑second reads over DuckDB's Quack protocol — no warehouse, no per‑event fees, no data leaving your infrastructure.

  • Web, mobile and backends: Grafana Faro (web), OpenTelemetry SDKs (mobile + server) → OTLP. Record user actions and whether the backend calls behind them succeeded — in one lake.
  • Runs on any cloud: S3, MinIO, Google Cloud Storage, Cloudflare R2, or Azure / ADLS Gen2.
  • Small files solved: DuckLake data inlining keeps streaming writes fast and cheap.
  • Batteries included: funnels, retention, errors, traces, metrics, cross‑device identity.
  • Secure by default: token‑authenticated ingest, read‑only query authz, a hardened public gateway.

📖 Full documentation: https://angelerator.github.io/nilalytics/

Install

pip install nilalytics

Also works with pipx install nilalytics or uv tool install nilalytics. Bleeding edge from source: pip install git+https://github.com/Angelerator/nilalytics.

60‑second local demo

# 1. object storage (local MinIO)
minio server .minio-data --address 127.0.0.1:9100 --console-address 127.0.0.1:9101 &
mc alias set nila http://127.0.0.1:9100 minioadmin minioadmin
mc mb --ignore-existing nila/nilalytics

# 2. run the pipeline
nilalytics server &      # ingest + Quack catalog
nilalytics gateway &     # public ingest gateway (CORS + tokens)

# 3. send + query
nilalytics emit --count 200 --persons 5
nilalytics query report

Architecture

flowchart LR
  W["Web · Grafana Faro"] -->|OTLP + token| GW
  M["Mobile · OpenTelemetry"] -->|OTLP + token| GW
  GW["Ingest Gateway<br/>CORS · tokens · TLS"] --> SRV["OTLP server<br/>(duckdb-otlp)"]
  B["Backend services · OpenTelemetry"] -->|"OTLP · private net"| SRV
  SRV --> LAKE[("DuckLake<br/>DuckDB + Quack catalog<br/>+ Parquet on object storage")]
  LAKE --> READ["Reads: DuckDB / DuckDB-WASM<br/>over Quack"]

Acknowledgements

nilalytics stands on the shoulders of giants. Huge thanks to DuckDB, DuckLake and Quack (DuckDB Labs / DuckDB Foundation), duckdb‑otlp (@smithclay), OpenTelemetry (CNCF), Grafana Faro (Grafana Labs), and MinIO — plus the projects that inspired it: canardstack, icelight, and stratif.io.

Full credits and dependency list: Acknowledgements.

License

Apache‑2.0 © Angelerator

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nilalytics-0.3.0.tar.gz (67.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nilalytics-0.3.0-py3-none-any.whl (37.6 kB view details)

Uploaded Python 3

File details

Details for the file nilalytics-0.3.0.tar.gz.

File metadata

  • Download URL: nilalytics-0.3.0.tar.gz
  • Upload date:
  • Size: 67.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nilalytics-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7052c40b9ecdc566c9bab0be9801270fe52b47661e0d694c73982b7f3eb971dc
MD5 1695e921449f712fe472c6beb3efd1e8
BLAKE2b-256 008128f47082cd72e8bb4fb438994888771b4d156d1f08e8f080c4df668a9e08

See more details on using hashes here.

Provenance

The following attestation bundles were made for nilalytics-0.3.0.tar.gz:

Publisher: publish.yml on Angelerator/nilalytics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nilalytics-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: nilalytics-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 37.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nilalytics-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 717d1e31f5b0fb8dc97cf61980b03b498d82ded5e1b719861e88abc2e6079b77
MD5 2f564f46c493cc610b11487de85e6420
BLAKE2b-256 ce3bd2f5e13cfd195361a663826b5f9cf15d95da654cb53f65126a6f46d10448

See more details on using hashes here.

Provenance

The following attestation bundles were made for nilalytics-0.3.0-py3-none-any.whl:

Publisher: publish.yml on Angelerator/nilalytics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page