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

Metadata

Release files for nilalytics 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nilalytics 0.3.0
File Size Uploaded
nilalytics-0.3.0.tar.gz 67.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nilalytics 0.3.0
File Interpreter ABI Platform
nilalytics-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 104.7 kB

Release files / nilalytics-0.3.0.tar.gz

Download URL nilalytics-0.3.0.tar.gz
Size 67.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7052c40b9ecdc566c9bab0be9801270fe52b47661e0d694c73982b7f3eb971dc
BLAKE2b-256 checksum
How to use checksums
008128f47082cd72e8bb4fb438994888771b4d156d1f08e8f080c4df668a9e08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release files / nilalytics-0.3.0-py3-none-any.whl

Download URL nilalytics-0.3.0-py3-none-any.whl
Size 37.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
717d1e31f5b0fb8dc97cf61980b03b498d82ded5e1b719861e88abc2e6079b77
BLAKE2b-256 checksum
How to use checksums
ce3bd2f5e13cfd195361a663826b5f9cf15d95da654cb53f65126a6f46d10448
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page